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

#101 Message par nondediode » ven. 7 déc. 2018 10:23

Bonjour à tous,

Pour en revenir à ce pb de décalage, il s'agit manifestement du transfert d'un PC à l'autre.
Je m'explique:
Le PC sur lequel je travaille tous mes projets tourne sous XP SP3 avec Office 2007.
1) Il conserve l'avantage d'avoir du RS232 dont j'ai besoin pour certains outils
2) Windows XP supporte mes vieux logiciels qui ne sont plus compatibles avec Win10
3) Je maîtrise XP mieux que Win10
4) Ce PC est hors connexion Internet et n'utilise pas d'antivirus
5) Ce PC (HP) est du matériel PRO hyper fiable! en 8 ans juste un soucis d'écran (barre verticale à droite non réparable) c'est tout :lol:
Avec les PC modernes (portables) je suis continuellement emmerdé (3 PC en 4ans :furieux: ) Sur le dernier acheté en mai (LENOVO ideapad 320) Ils ont changé 2X le DD :cry:

Bref! ce PC dernière génération qui me sert uniquement pour communiquer avec l’extérieure est équipé de Win10 et office 2013. Quand je récupère le fichier asm depuis mon XP, je passe par word et je remarque à chaque fois que le transfert ne tiens pas compte des tabulations. Idem quand je sélectionne un code depuis le forum jusqu'à mon MpLab sous XP.
Il s'agit donc bien du transfert fichier et non pas de MpLab.

Amicalement,

Bonjour à toute l'équipe du forum
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#102 Message par paulfjujo » ven. 7 déc. 2018 10:32

bonjour,


Nondediode a écrit :Quand je récupère le fichier asm depuis mon XP, je passe par word


je pense qu'il vaudrait mieux utiliser un editeur de texte plutot qu'un Traitement de texte tel que Word,
qui rajoute ou enleve des infos au document original ..

j'utilise NOTEPAD++ qui tourne bien sous WIN10.
Aide toi, le ciel ou FantasPic t'aidera

Bonjour à toute l'équipe du forum
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#103 Message par satinas » ven. 7 déc. 2018 10:42

MpLab, il stocke en fonction de sa configuration. Par défaut les logiciels stockaient les tabulations avec le code ascii 9, parce qu'au début on avait pas des gigeots octets de ram et de disque.
Avec une tabulation réglée à 8, l'octet 9 remplace jusqu'à 8 caractères espace. Si l'on prend ce fichier, et on le met dans un logiciel ayant une tabulation réglée à 4, voir ci-dessus ce qui se passe.

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

#104 Message par nondediode » ven. 7 déc. 2018 12:13

Bonjour J.Marc,

JMarc a écrit :

Code : Tout sélectionner

DataAff_16  0x24, 0x1700    ; écrire en haut à gauche


0x24 est la commande d'apres ton data cheet de l'affichage du texte et 0x1700 la valeur d'ou il doit etre affiché. tu peux toujours essayer avec une valeur inférieure ou supérieure, c,est ce que j'essai de comprendre


J'ai testé avec 0x10 (0) et avec 0x47 (g) et cela ne change rien.
D'après mon datasheet, on utiliserai les caractères de la CGROM code 0101 c'est OK pour tout le monde? où je me trompe

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

#105 Message par nondediode » ven. 7 déc. 2018 12:42

Bonjour paulfjujo,

paulfjujo a écrit :bonjour,

je pense qu'il vaudrait mieux utiliser un editeur de texte plutot qu'un Traitement de texte tel que Word,
qui rajoute ou enleve des infos au document original ..

j'utilise NOTEPAD++ qui tourne bien sous WIN10.


Grand merci :wink: je l'ai téléchargé et installé sur les 2 PC

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

#106 Message par nondediode » ven. 7 déc. 2018 15:00

Bon j'ai trouvé le pb :evil:

Dans mon routage du PCB, la broche RDO du PIC arrive sur le bit D7 de l'afficheur alors qu'il devrait arriver sur le bit D0 :mur:

J'ai utilisé ce routage parce qu'il m'évitait pas mal de via et le pire c'est que j'avais noté cette particularité pour ne pas l'oublié dans le prg :mur: :mur: :mur:
Bon entre tps j'ai eu l'hosto et ça m'a complètement fait oublier cette modif.

C'est en feuilletant mon carnet où je note les choses importantes que j'ai vu l'inversion oops

Est-il possible de corriger dans le prg?

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

#107 Message par nondediode » ven. 7 déc. 2018 17:43

Bon au final j'ai modifié avec des strapps volants
RDO du PIC va bien à DO de l'afficheur et ainsi de suite...
A présent tout est conforme pour le port D et l'afficheur

Mais cette modif que je pensait efficace n'apporte malheureusement rien de plus et pour avoir vérifié scrupuleusement toute la carte je confirme que tout est correct.

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

#108 Message par JMarc » ven. 7 déc. 2018 23:41

Bonjour

Re essai avec celui là vu que les fils sont au bon endroit

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
 ; essai JMarc Version 1,01
;----------------------------------------------------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
    delai1_LED_TEMOIN 
1
    delai2_LED_TEMOIN 
1
    temptmr0 
1
    temp1tmr1 
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 LED_TEMOIN      PORTA,1
#DEFINE LED_TEMOIN2     PORTA,0

        #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------------------------------------------------------

;=====================================
Macro=====================================
led_cligno_lent macro 
    movlw   0x28                
longueur
    movwf   delai1_LED_TEMOIN
    movlw   0x5A                
fréquence
    movwf   delai2_LED_TEMOIN
    clrf    temp1tmr1
    endm

led_cligno_rapide macro 
    movlw   0x08                
longueur
    movwf   delai1_LED_TEMOIN
    movlw   0x0A                
fréquence
    movwf   delai2_LED_TEMOIN
    clrf    temp1tmr1
    endm

led_cligno_flash macro 
    movlw   0x29                
longueur
    movwf   delai1_LED_TEMOIN
    movlw   0x2A                
fréquence
    movwf   delai2_LED_TEMOIN
    clrf    temp1tmr1
    endm
;===============================================================================
        
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    temp1tmr1,f

   movf   delai2_LED_TEMOIN,w   ;on test si  Xfois 
   subwf   temp1tmr1,W
   btfss   STATUS,Z
   goto    suite_led_temoin
   bcf     LED_TEMOIN 
 ;  bsf     LED_TEMOIN
   clrf    temp1tmr1
   goto     sautintsw9

suite_led_temoin
   movf   delai1_LED_TEMOIN,w
   subwf   temp1tmr1,W
   btfss   STATUS,Z
   goto    sautintsw9
   bsf     LED_TEMOIN
;   bcf     LED_TEMOIN       ;   inversion des sorties pour la platine essais

sautintsw9
    bcf     PIR1,TMR1IF    ; effacer flag interupt 

intsw1 
    bcf     STATUS,RP0      ; oui, sélectionner banque0
            ;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

    led_cligno_lent

    bsf     INTCON,GIE    ; valider interruptions



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

        goto saut1



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

saut1
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
       led_cligno_rapide
loop
        nop
       
        GOTO      loop           ;  boucle principale


;-------------------------------------------------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     command/data
        
GOTO        $+2            Permet de sauter 2 lignes de code
DWrite
        BCF        CD            
CD=0       CD PORTB,5
        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        Delay50mS        ; Appel de l'
étiquette Delay50mS
        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        Delay50mS        
Appel de l'étiquette Delay50mS
       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

#109 Message par nondediode » sam. 8 déc. 2018 07:58

Bonjour J.Marc,

Je viens de tester ton programme de hier soir.
Sur l'écran j'ai le trait horizontale, il ne s'efface plus. La LED RA1 clignote qq secondes après que le prg est démarré.

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

#110 Message par nondediode » sam. 8 déc. 2018 08:20

]Bonjour tout le monde,

Je vous joins le typon en jpeg pour que vous ayez un réel aperçu du PCB.
J'ai identifié les pins du connecteur qui va au GLCD ainsi que ceux du PIC. Ne vous préoccupez pas des masses, j'ai viré les plans de masses des couches pour mieux visualiser le routage.
Vous pouvez aisément suivre le routage, la pin 1 du connecteur correspond bien à la pin 1 du GLCD.
A noter que le typon a été corrigé pour que RD0 corresponde à D0
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.


Retourner vers « Langage ASM »

Qui est en ligne

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