Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Bonjour à toute l'équipe du forum
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#21 Message par nondediode » sam. 24 nov. 2018 20:36

La seconde photo du dessous est un doublon, je ne suis pas arrivé à la supprimer

Bonjour à toute l'équipe du forum
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#22 Message par Temps-x » sam. 24 nov. 2018 22:18

Bonsoir nondediode,

:sifflotte: hum ......, ça peu pas fonctionner comme le code est, car TRISA, TRISB, TRISC, TRISE se trouve en bank1
et BANKSEL a été désactivé.

Code : Tout sélectionner

;;;;;;;;;;    banksel        TRISA            ; bank 1


De plus, Il faut configurer le convertisseur analogique, qui n'est pas ANSEL n' y ANSELH pour un Pic16F6877 mais ADCON1

Comme ça c'est mieux

Code : Tout sélectionner



START
      BANKSEL TRISA                       
; passer en bank1

      clrf TRISA                          
; PORTA en sortie
      clrf TRISB                          
; PORTB en sortie 
      clrf TRISC                          
; PORTC en sortie

      movlw B
'00001000'                   ; PORTE en sortie à par RE3 qui ne 
      movwf TRISE                         
; peut pas être configurer en sortie seulement en entrée  
                                           
      movlw B
'00000110'                   ; toutes les pattes numérique en mode digital
      movwf ADCON1 

      movlw B
'10000000'                   ; b7 = 1 résistance rappel +5V hors service 
      movwf OPTION_REG
       
      BANKSEL PORTA                       
; passer en bank0

      clrf INTCON                         
; b7 = 0 arrêt de toutes les interruptions
 
      clrf PORTA                          
; Remise à 0 du port A
      clrf PORTB                          
; Remise à 0 du port B
      clrf PORTC                          
; Remise à 0 du port C
      clrf PORTD                          
; Remise à 0 du port D
      clrf PORTE                          
; Remise à 0 du port E



Autre chose, pour les temps le quartz utilisé est très important, sur ton lien le quartz utilisé et de 16MHz

Il faut revoir les temps, car tu utilises un quartz de 4Mhz, il existe un petit utilitaire pour cela, tu peux le télécharger ICI

nondediode a écrit :Source du message Je me fait opérer jeudi et j'ai pas mal d'examens médicaux à passer qui me fatigue pas mal.


Bon courage et repose toi. :wink:
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Bonjour à toute l'équipe du forum
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#23 Message par JMarc » dim. 25 nov. 2018 11:46

Bonjour Nondediode et temps-x et tout le monde

branche une led (avec sa resistance) sur portA,0
et ton afficheur pour me dire ce qu'il ce passe

Code : Tout sélectionner

;---------------------------------------------------------GESTION AFFICHEUR-----------------------------------------------------------------

TITREGestion d'un afficheur LCD graphique
; DATE: 10/11/2018
; AUTEUR: nondediode
; PIC UTILISE: PIC16F877
; Gestion PP845 version 2019
; le quartz est de 4MHz
 

;----------------------------------------------------Brochage du PIC sur la carte--------------------------------------------------------- 
;
;  Port | Broche | E/S | Description

;  RA0  |    02  |  S  | Relais "MUTE"
;  RA1  |    03  |  S  | Relais "PHASE"
;  RA2  |    04  |  S  | LED droite
;  RA3  |    05  |  S  | LED gauche
;  RA4  |    06  |  S  | Relais de cde HT gauche et droit
;  RA5  |    07  |  S  | Relais statique gauche et droit

;  RB0  |    33  |  E  | Inter "on / off"
;  RB1  |    34  |  E  | Bouton poussoir "OK"
;  RB2  |    35  |  S  | Data Write afficheur  
;  RB3  |    36  |  S  | Data Read afficheur
;  RB4  |    37  |  S  | Chip Enable
;  RB5  |    38  |  S  | C/D
;  RB6  |    39  |  S  | Font Size Select
;  RB7  |    40  |  S  | Reset

;  RC0  |    15  |  S  | Adressage entrée audio bit A
;  RC1  |    16  |  S  | Adressage entrée audio bit B
;  RC2  |    17  |  S  | Adressage entrée audio bit C
;  RC3  |    18  |  S  | Adressage entrée audio bit D
;  RC4  |    23  |  S  | LEDs Rouge droit et gauche
;  RC5  |    24  |  E  | Bouton poussoir "INPUT"
;  RC6  |    25  |  E  | Bouton poussoir "PHASE"
;  RC7  |    26  |  E  | Bouton poussoir "MUTE"

;  RD0  |    19  |  S  | Sortie bit D7 du LCD
;  RD1  |    20  |  S  | Sortie bit D6 du LCD
;  RD2  |    21  |  S  | Sortie bit D5 du LCD
;  RD3  |    22  |  S  | Sortie bit D4 du LCD
;  RD4  |    27  |  S  | Sortie bit D3 du LCD
;  RD5  |    28  |  S  | Sortie bit D2 du LCD
;  RD6  |    29  |  S  | Sortie bit D1 du LCD
;  RD7  |    30  |  S  | Sortie bit D0 du LCD

;--------------------------------------------------DIRECTIVE D'
ASSEMBLAGE POUR MPLAB-------------------------------------------------------

     list 
p=16f877
    
#include <p16f877.inc>
    
radix dec                      on travaille en décimal par défaut

    __CONFIG   _CP_OFF 
_DEBUG_OFF _WRT_ENABLE_OFF _CPD_OFF _LVP_OFF _BODEN_OFF _PWRTE_ON _WDT_OFF _HS_OSC 

OPTIONVAL    EQU    
B'00001111'
;-------------------------------------------------Definition de la RAM------------------------------------------------------


        
cblock        0x20
                TEMP            
;temp buffer
                DATAL            
;instruction donnée =0
                DATAH            
;instruction donnée =1
                COMMAND            
;instruction
                TABLECOUNT        
;tablecounter
        endc

        cblock        0x70
      w_temp 
1        Sauvegarde registre W
    status_temp 
1        sauvegarde registre STATUS
    FSR_temp 
1        sauvegarde FSR (si indirect en interrupt)
    
PCLATH_temp 1        sauvegarde PCLATH (si prog>2K)
    
Tempj 1


              STATUS_TEMP        
;interruptcontextsave for STATUS

                PCLATH_TEMP        
;interruptcontextsave for PCLATH
                COUNT1            
;delaycounter 1
                COUNT2            
;delaycounter 2
                COUNT3            
;delaycounter 3
                DATA_EE_ADDR        
;data EEPROM address buffer
                DATA_EE_DATA        
;data EEPROM data buffer
        endc

;-------------------------------------------------Definition des constantes------------------------------------------------------


        
#define        WRITE        PORTB,2            ; GLCD writeenable/disable (active low)
        #define        READ        PORTB,3            ; GLCD readenable/disable (active low)
        #define        CE        PORTB,4            ; GLCD chip enable/disable (active low)
        #define        CD        PORTB,5            ; GLCD command/data
        #define        FONT        PORTB,6            ; GLCD font select (6x8 or 8x8)
        #define        RST        PORTB,7            ; GLCD reset

        #define        D0        PORTD,RD0        ; GLCD data port bit 0
        #define        D1        PORTD,RD1        ; GLCD data port bit 1
        #define        D2        PORTD,RD2        ; GLCD data port bit 2
        #define        D3        PORTD,RD3        ; GLCD data port bit 3
        #define        D4        PORTD,RD4        ; GLCD data port bit 4
        #define        D5        PORTD,RD5        ; GLCD data port bit 5
        #define        D6        PORTD,RD6        ; GLCD data port bit 6
        #define        D7        PORTD,RD7        ; GLCD data port bit 7

;--------------------------------------------Definition des registres temporaires------------------------------------------------------


        
WR_EN        EQU 2
        WR_DIS        EQU 7
        RD_EN        EQU 1
        RD_DIS        EQU 7

;--------------------------------------------Directives des programmes------------------------------------------------------


        
org        0x000            Debut du programme principale
        
goto        START            Saut à START

;*****************************************************************************
;                     
ROUTINE INTERRUPTION                                   *
;*****************************************************************************
            ;
sauvegarder registres    
            
;---------------------
    
org 0x004        adresse d'interruption
    movwf   w_temp      ; sauver registre W
    swapf    STATUS,w    ; swap status avec résultat dans w
    movwf    status_temp    ; sauver status swappé
    movf    FSR , w        ; charger FSR
    movwf    FSR_temp    ; sauvegarder FSR

    bsf     STATUS,RP0      ; sélectionner banque1
    btfss    PIE1,TMR1IE     ; tester si interrupt autorisée
    goto     intsw1          ; non sauter
    bcf     STATUS,RP0      ; oui, sélectionner banque0
    btfss    PIR1,TMR1IF     ; oui, tester si interrupt en cours
    goto     intsw1          ; non sauter

    MOVLW    0x3C            ; int toute le 100ms    
    MOVWF    TMR1H
    MOVLW    0xB3
    movwf   TMR1L  

    INCF   Tempj,F          ; à 10 cela fera 1s
    MOVLW   0X0A            ;on test si 10fois 100mS
    SUBWF   Tempj,W
    BTFSS   STATUS,Z
    GOTO     sautintsw9        

    CLRF       Tempj         ;RAZ compteur temp
    movlw    B'
00000001'    ; Masque pour inversion de la LED (RA0)        ; sélectionner bit à inverser
    xorwf    PORTA , f    ; inverser LED
sautintsw9
    bcf     PIR1,TMR1IF    ; effacer flag interupt 
intsw1 
            ;restaurer registres
            ;-------------------
restorereg
    bcf     STATUS,RP0
    movf    FSR_temp , w    ; charger FSR sauvé
    movwf    FSR        ; restaurer FSR
    swapf    status_temp,w    ; swap ancien status, résultat dans w
    movwf   STATUS        ; restaurer status
    swapf   w_temp,f    ; Inversion L et H de l'
ancien W
                               
sans modifier Z
    swapf   w_temp
,w      Réinversion de L et H dans W
                
W restauré sans modifier status
    retfie  

;-------------------------------------------------INITIALISATION------------------------------------------------------
START
            
Registre d'options (banque 1)
            ; -----------------------------
    BANKSEL    OPTION_REG    ; sélectionner banque 1
    movlw    OPTIONVAL    ; charger masque
    movwf    OPTION_REG    ; initialiser registre option

            ; registres interruptions (banque 1)
            ; ----------------------------------
    bsf    INTCON,PEIE    ; autoriser interruptions périphériques
    bcf     STATUS,RP0    ; passer banque 0
        ; autoriser interruptions (banque 0)
            ; ----------------------------------


    bsf T1CON,0X4
    bcf T1CON,0X5

    MOVLW   0x3C            ; int toute le 100ms    
    MOVWF   TMR1H
    MOVLW   0xB3
    movwf   TMR1L  

    BSF      T1CON,TMR1ON      ;on TMR1    bit a 1

        CLRF        PORTA            ; Remise à 0 du port A
        CLRF        PORTB            ; Remise à 0 du port B
        CLRF        PORTC            ; Remise à 0 du port C
        CLRF        PORTD            ; Remise à 0 du port D
        CLRF        PORTE            ; Remise à 0 du port E

    bsf     STATUS,RP0      ; Banque 1

    clrf    TRISA           ; PortA en sortie
    movlw   b'
00000110'
    movwf   ADCON1              ; sortie digital

                                      ; PORTA, PORTB, PORTC, and PORTE outputs
        CLRF        TRISB            ; PORTD defaults to input
        CLRF        TRISC            ; 
        CLRF        TRISE            ; 
  
    BSF     PIE1,TMR1IE      ;valide le TMR1    

    bcf     STATUS,RP0      ; Banque 0
    bsf     INTCON,GIE    ; valider interruptions

loop
    nop
    goto loop

GLCD_INIT
        BCF        RST            ; reset du GLCD
        MOVLW        B'
01111100'         ; On charge la valeur dans le registre W
        MOVWF        PORTB            ; Command mode and 6x8 font, disableread, write, and chip enable
        call        Delay50mS        ; Appel de la tempo de 50ms
        BSF        RST            ; disable reset



;-------------------------------------------------INITIALISATION afficheur------------------------------------------------------


ModeSet
        MOVLW        0x84            ; Charge la valeur dans W
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        NoData            ; Appel de l'
étiquette NoData
GraphicsHome
        MOVLW        0x00            
Charge la valeur dans W
        MOVWF        DATAL            
Transfert de W sur DATAL
        MOVLW        0x00            
Charge la valeur dans W
        MOVWF        DATAH            
Transfert de W sur DATAH
        MOVLW        0x42            
Charge la valeur dans W
        MOVWF        COMMAND            
Transfert de W sur COMMAND
        CALL        TwoData            
Appel de l'étiquette TwoData
GraphicsArea
        MOVLW        0x28            ; Charge la valeur dans W
        MOVWF        DATAL            ; Transfert de W sur DATAL
        MOVLW        0x0            ; Charge la valeur dans W
        MOVWF        DATAH            ; Transfert de W sur DATAH
        MOVLW        0x43            ; Charge la valeur dans W
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        TwoData            ; Appel de l'
étiquette TwoData
TextHome
        MOVLW        0x00            
Charge la valeur dans W
        MOVWF        DATAL            
Transfert de W sur DATAL
        MOVLW        0x17            
Charge la valeur dans W
        MOVWF        DATAH            
Transfert de W sur DATAH
        MOVLW        0x40            
Charge la valeur dans W
        MOVWF        COMMAND            
Transfert de W sur COMMAND
        CALL        TwoData            
Appel de l'étiquette TwoData
TextArea
        MOVLW        0x28            ; Charge la valeur dans W
        MOVWF        DATAL            ; Transfert de W sur DATAL
        MOVLW        0x00            ; Charge la valeur dans W
        MOVWF        DATAH            ; Transfert de W sur DATAH
        MOVLW        0x41            ; Charge la valeur dans W
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        TwoData            ; Appel de l'
étiquette TwoData
CGROMSet
        MOVLW        0x03            
Charge la valeur dans W
        MOVWF        DATAL            
Transfert de W sur DATAL
        MOVLW        0x0            
Charge la valeur dans W
        MOVWF        DATAH            
Transfert de W sur DATAH
        MOVLW        0x22            
Charge la valeur dans W
        MOVWF        COMMAND            
Transfert de W sur COMMAND
        CALL        TwoData            
Appel de l'étiquette TwoData

cleargraphicsRAM

        MOVLW        0x00            ; Charge la valeur dans W
        MOVWF        DATAL            ; Setaddress pointer to 0x0000
        MOVLW        0x00            ; Charge la valeur dans W
        MOVWF        DATAH            ; Transfert de W sur DATAH
        CALL        ADDR_PTR        ; Appel de l'
étiquette ADDR_PTR
        MOVLW        0x20            
Charge la valeur dans W
        MOVWF        COUNT2            
Transfert de W sur COUNT2
        CALL        DisplayClear        
Appel de l'étiquette DisplayClear

cleartextRAM

        MOVLW        0x00            ; Charge la valeur dans W
        MOVWF        DATAL            ; Setaddress pointer to 0x0000
        MOVLW        0x17            ; Charge la valeur dans W
        MOVWF        DATAH            ; Transfert de W sur DATAH
        CALL        ADDR_PTR        ; Appel de l'
étiquette ADDR_PTR
        MOVLW        0x08            
Charge la valeur dans W
        MOVWF        COUNT2            
Transfert de W sur COUNT2
        CALL        DisplayClear        
Appel de l'étiquette DisplayClear
CSRPattern
        MOVLW        0xA0            ; Charge la valeur dans W  (A0) 
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        NoData            ; Appel de l'
étiquette NoData
CSRPointer
        MOVLW        0x00            
Charge la valeur dans W
        MOVWF        DATAL            
Transfert de W sur DATAL
        MOVLW        0x00            
Charge la valeur dans W
        MOVWF        DATAH            
Transfert de W sur DATAH
        CALL        CSR_PTR            
Appel de l'étiquette CSR_PTR
ADDRPointer
        MOVLW        0x00            ; Charge la valeur dans W
        MOVWF        DATAL            ; Transfert de W sur DATAL
        MOVLW        0x00            ; Charge la valeur dans W
        MOVWF        DATAH            ; Transfert de W sur DATAH
        CALL        ADDR_PTR        ; Appel de l'
étiquette ADDR_PTR
DisplayOn
        MOVLW        0x9F            
Charge la valeur dans W
        MOVWF        COMMAND            
Transfert de W sur COMMAND
        CALL        NoData            
Appel de l'étiquette NoData

        GOTO        $            ; Comptage de boucle


;-------------------------------------------------Programme tempo------------------------------------------------------

Delay50mS
        MOVLW        0x40            ; Charge la valeur dans W
        MOVWF        COUNT1            ; Transfert de W sur COUNT1
        MOVWF        COUNT2            ; Transfert de W sur COUNT2
        DECFSZ        COUNT1,F        ; On décrémente COUNT1,F
        GOTO        $-1            ; Comptage de boucle
        DECFSZ        COUNT2,F        ; On décrémente COUNT2,F
        GOTO        $-3            ; Comptage de boucle
        RETURN
Delay    
        MOVWF        COUNT3            ; Transfert de W sur COUNT3
        CALL        Delay50mS        ; Appel de l'
étiquette Delay50mS
        DECFSZ        COUNT3
,F        On décrémente COUNT3,F
        
GOTO        $-2            Comptage de boucle
        
RETURN


;-------------------------------------------------
Position Address Pointer ------------------------------------------------------


ADDR_PTR
        MOVLW        0x24            
Charge la valeur dans W
        MOVWF        COMMAND            
Transfert de W sur COMMAND
        CALL        TwoData            
Appel de l'étiquette TwoData
        RETURN

;-------------------------------------------------Position Cursor Pointer ------------------------------------------------------


CSR_PTR    
        MOVLW        0x21            ; Charge la valeur dans W
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        TwoData            ; Appel de l'
étiquette TwoData
        
RETURN

;-------------------------------------------------
Command Send Routines ------------------------------------------------------

TwoData    
        CALL        LCDStat            
Appel de l'étiquette LCDStat
        MOVWF        DATAL            ; Transfert de W sur DATAL
        CALL        DWrite            ; Appel de l'
étiquette DWrite        
OneData    
        CALL        LCDStat            
Appel de l'étiquette LCDStat
        MOVWF        DATAH            ; Transfert de W sur DATAH
        CALL        DWrite            ; Appel de l'
étiquette DWrite
NoData    
        CALL        LCDStat            
Appel de l'étiquette LCDStat
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        Command            ; Appel de l'
étiquette Command
        
RETURN

;------------------------------------------------
GLCD Read/Write/Status Check------------------------------------------------------

Command    
        BSF        CD            
CD=1
        
GOTO        $+2            Permet de sauter 2 lignes de code
DWrite
        BCF        CD            
CD=0
        MOVWF        PORTD            
Transfert de W sur port D
        MOVLW        WR_EN            
Charge WR_EN dans W
        MOVWF        PORTB            
Transfert de W sur port B
        BSF        STATUS
,5        Accès à la 2ème page mémoire TRISD
        MOVLW        
B'00000000'        Charge la valeur dans W
        MOVWF        TRISD            
Le port D est en sortie
        MOVLW        WR_DIS            
Charge WR_DIS dans W
        MOVWF        PORTB            
Transfert de W sur port B
        BCF        STATUS
,5        Accès à la 1ère page mémoire TRISD        
        call        Delay50mS        
Appel de la tempo de 50ms
        BSF        STATUS
,5        Accès à la 2ème page mémoire TRISD
        MOVLW        
B'11111111'        Charge la valeur dans W
        MOVWF        TRISD            
Le port D est en entrée
        BCF        STATUS
,5        Accès à la 1ère page mémoire TRISD
        
RETURN
LCDStat    
        CALL        StatReadEn        
Appel de l'étiquette StatReadEn
        BTFSC        PORTD,0            ; D0 = 0?
        BTFSS        PORTD,1            ; D1 = 1?
        GOTO        $-2            ; Comptage de boucle
        CALL        StatReadDis        ; Appel de l'
étiquette StatReadDis
        
RETURN
DAWStat    
        CALL        StatReadEn        
Appel de l'étiquette StatReadEn
        BTFSS        PORTD,3            ; D3 = 1?
        GOTO        $-1            ; Comptage de boucle
        CALL        StatReadDis        ; disablestatusread
        RETURN
StatReadEn
        BSF        CD            ; CD=1
        MOVLW        RD_EN            ; Charge RD_EN dans W
        MOVWF        PORTB            ; Transfert de W sur port B
        RETURN
StatReadDis
        MOVLW        RD_DIS            ; Charge RD_DIS dans W
        MOVWF        PORTB            ; Transfert de W sur port B
        RETURN

;---------------------------------------------Data Auto Read/Write Routines--------------------------------------------------

DAWSet
        MOVLW        0xB0            ; Charge la valeur dans W
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        NoData            ; Appel de l'
étiquette NoData
        CALL        LCDStat            
Appel de l'étiquette LCDStat
        CALL        DAWStat            ; Appel de l'
étiquette DAWStat
        
RETURN
DAWReset
        CALL        DAWStat            
Appel de l'étiquette DAWStat
        MOVLW        0xB2            ; Charge la valeur dans W
        MOVWF        COMMAND            ; Transfert de W sur COMMAND
        CALL        NoData            ; Appel de l'
étiquette NoData
        
RETURN

;------------------------------------------------
Clear Display------------------------------------------------------


DisplayClear
        MOVLW        160            
Charge la valeur dans W
        MOVWF        COUNT1            
Transfert de W sur COUNT1
        CALL        DAWSet            
Appel de l'étiquette DAWSet 
        CALL        DAWStat            ; Appel de l'
étiquette DAWStat
        MOVLW        0            
Charge la valeur dans W
        CALL        DWrite            
Appel de l'étiquette DWrite
        DECFSZ        COUNT1,F        ; On décrémente COUNT1,F
        GOTO        $-4            ; Comptage de boucle
        MOVLW        160            ; Charge la valeur dans W
        MOVWF        COUNT1            ; Transfert de W sur COUNT1
        DECFSZ        COUNT2,F        ; On décrémente COUNT2,F
        GOTO        $-8            ; Comptage de boucle    
        CALL        DAWReset        ; Appel de l'
étiquette DAWReset
        
RETURN                    


        
END

Bonjour à toute l'équipe du forum
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#24 Message par nondediode » dim. 25 nov. 2018 12:38

Bonjour tout le monde,

Temps-X:

J'ai récrit avec les modifs que vous m'avez corrigé.
J'ai le même résultat; un trait horizontal.

Jean Marc,

La led ne s'allume pas avec les corrections de temps-X

Merci à vous 2 pour votre aide

Bonjour à toute l'équipe du forum
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#25 Message par Temps-x » dim. 25 nov. 2018 12:45

Bonjour nondediode, JMarc, et tout le forum,

nondediode a écrit :Source du message La led ne s'allume pas avec les corrections de temps-X


Normal, lui il se sert des interruptions, moi je les coupes, si j'ai le temps je te fait le code entier, ça sera plus simple,

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Bonjour à toute l'équipe du forum
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#26 Message par nondediode » dim. 25 nov. 2018 12:47

Merci :wink:

Bonjour à toute l'équipe du forum
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#27 Message par JMarc » dim. 25 nov. 2018 15:29

Effectivement je me sers des interruptions pour faire clignoter la led donc si elle ne clignote pas c’est que ton pic ne tourne pas, rien a voir avec l’afficheur.

Commence par vérifier tes alimentations, masse , quartz, excetera...

Quand ça clignotera nous pourrons continuer sur l’afficheur :sifflotte:


Je ne comprend pas quelles corrections ???
As tu pris le programme que je t’ai fais ???

Bonjour à toute l'équipe du forum
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#28 Message par nondediode » dim. 25 nov. 2018 16:14

Je réponds en fonction des messages qui arrivent et j'ai commencé par celui de Temp-x où il a corrigé une partie de mon programme. C'est celui là que j'ai testé après avoir apporté ses modifs.


START
BANKSEL TRISA ; passer en bank1

clrf TRISA ; PORTA en sortie
clrf TRISB ; PORTB en sortie
clrf TRISC ; PORTC en sortie

movlw B'00001000' ; PORTE en sortie à par RE3 qui ne
movwf TRISE ; peut pas être configurer en sortie seulement en entrée

movlw B'00000110' ; toutes les pattes numérique en mode digital
movwf ADCON1

movlw B'10000000' ; b7 = 1 résistance rappel +5V hors service
movwf OPTION_REG

BANKSEL PORTA ; passer en bank0

clrf INTCON ; b7 = 0 arrêt de toutes les interruptions

clrf PORTA ; Remise à 0 du port A
clrf PORTB ; Remise à 0 du port B
clrf PORTC ; Remise à 0 du port C
clrf PORTD ; Remise à 0 du port D
clrf PORTE ; Remise à 0 du port E


Le montage du PIC est conforme au schéma que j'ai posté, électriquement tout est correct, le quartz de 4MHz oscille bien.
Maintenant, je vais reprendre le programme que tu m'a fait et je teste.

Bonjour à toute l'équipe du forum
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#29 Message par JMarc » dim. 25 nov. 2018 16:26

Ah je comprend mieux :-D

Mais la led doit être branché sur ra0, sinon change la ligne movlw B’00000001’ en 00001111 dans la gestion des interruptions ou c’est marqué inversion led

Bonjour à toute l'équipe du forum
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#30 Message par nondediode » dim. 25 nov. 2018 16:27

Je viens de lancer le programme et la LED du portA clignote


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 44 invités