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

Lcd 2x16, Lcd 4x16, Lcd 2x20, Lcd 2x40
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » ven. 26 juin 2020 20:16

Bonjour tout le forum,

==> ==> ==> ==> ==> ==> En cours de test, ne pas prendre le code pour l'instant, Merci

Mise en fonction des Lcd 2x16, Lcd 4x16, Lcd 2x20, Lcd 2x40, en mode 4 bits avec microcontrôleur Pic18F26K22, voici son datasheet

Schéma lcd 2x16

Schéma(Lcd 2x16).jpg

Schéma lcd 4x16

Schéma(Lcd 4x16).jpg

Le code est compatible actuellement pour tout microcontrôleur Microchip 8 bits, de la série 18Fxxxx de plus le code ci-dessous fonctionne pour Lcd 2x16, Lcd 4x16

Le code

Le code ASM a été écrit avec jens file Editor 3.95

Code : Tout sélectionner

;***********************************************************************************************

    Errorlevel-302                        ; Supprime le message "Ensure that bank bits are correct" 

    radix dec                             
; par defaut en mode décimal

    list p
=18f26K22                       ; processeur utilisé                  
    
#include <p18f26K22.inc>              ; Définitions des constantes

;***********************************************************************************************

;
 CONFIG11H
     CONFIG FOSC 
= INTIO67 
     CONFIG FCMEN 
= OFF 
     CONFIG IESO 
= OFF
; CONFIG2L
     CONFIG PWRTEN 
= OFF 
     CONFIG BOREN 
= OFF 
     CONFIG BORV 
= 190
; CONFIG2H
     CONFIG WDTEN 
= OFF 
     CONFIG  WDTPS 
= 1
; CONFIG3H
     CONFIG CCP2MX 
= PORTC1 
     CONFIG PBADEN 
= OFF
     CONFIG CCP3MX 
= PORTC6
     CONFIG HFOFST 
= OFF
     CONFIG T3CMX 
= PORTC0
     CONFIG P2BMX 
= PORTC0
     CONFIG MCLRE 
= INTMCLR
; CONFIG4L
     CONFIG STVREN 
= OFF 
     CONFIG LVP 
= OFF 
     CONFIG XINST 
= OFF 
     CONFIG DEBUG 
= OFF
; CONFIG5L
     CONFIG CP0 
= OFF 
     CONFIG CP1 
= OFF 
     CONFIG CP2 
= OFF 
     CONFIG CP3 
= OFF
; CONFIG5H
     CONFIG CPB 
= OFF 
     CONFIG CPD 
= OFF
; CONFIG6L
     CONFIG EBTR0 
= OFF
; CONFIG6H
     CONFIG EBTR1 
= OFF
; CONFIG7L
     CONFIG EBTR2 
= OFF
; CONFIG7H
     CONFIG EBTR3 
= OFF

;*************************************** assignations ***************************************** 

#DEFINE lcd_port   LATA                   ; D7   ==>  RA0 
                                          ; D6   ==>  RA1
                                          
; D5   ==>  RA2
                                          
; D4   ==>  RA3                            
#DEFINE lcd_rs     LATA,6                 ; RS   ==>  RA6  
#DEFINE lcd_e     LATA,7                  ; E    ==>  RA7

                            
;**********************************************************************************************
;******************************
 déclaration des variables *************************************
;**********************************************************************************************
  


     CBLOCK H
'0'                          ; bank0

      loop1               
:1
      loop2               
:1
      loop3               
:1
      loop4               
:1
      loop5               
:1                    
      loop6               
:1                    
    
      lecture             
:1              ; utilisé pour macro : print
      lettre              
:1                
      phrase              
:1              ; utilisé pour macro : print                     

      vide                
:1              ; utilisé pour macro : espace

      durée               
:1              ; utilisé pour macro : tempo  
        
      tmps                
:1  
      temps               
:1
  
      res8                
:1
      res16               
:1

      adresse_low         
:1              ; utilisé pour macro : ecriture_eeprom, lecture_eeprom
      adresse_high        
:1              ; utilisé pour macro : ecriture_eeprom, lecture_eeprom

      donner              
:2              ; utilisé pour macro : ecriture_eeprom


     ENDC

;********************************** "déclaration des macros" ***********************************
;*************************
 "Macro pour se positionner dans un tableau" ************************* 
tableau MACRO adresse

      movlw UPPER
(adresse)                ; 
      movwf TBLPTRU                       
;
      movlw HIGH(adresse)                 ;
      movwf TBLPTRH                       ; 
      movlw LOW
(adresse)                  ;
      movwf TBLPTRL                 
     
    ENDM

;************************** Macro pour écrit dans l'eeprom  ************************************ 
ecriture_eeprom MACRO valeur1,valeur2,valeur3
                                           
      movlw valeur1                       ; adresse du poids fort 
      movwf adresse_high                  ;
                          
      movlw valeur2                       ; adresse du poids faible
      movwf adresse_low                   ;

      movf valeur3,W                      ; donnée à écrire dans l'
eeprom
      movwf donner
+0                      ;

      call eeprom_ecriture 

    ENDM

;*************************** Macro pour lire dans l'eeprom  ************************************ 
lecture_eeprom MACRO valeur1,valeur2,valeur3

      local nombre3,good_bye3

      movlw valeur3
  
      btfss WREG,0                        ; valeur3 = 0 que pour les nombres 
      bra nombre3                         ; valeur3 = 1 que pour les variables

      movf valeur1,W                      ; adresse du poids fort 
      movwf adresse_high                  ;
                          
      movf valeur2,W                      ; adresse du poids faible
      movwf adresse_low                   ;

      bra good_bye3

nombre3
      movlw valeur1
      movwf adresse_high

      movlw valeur2
      movwf adresse_low

good_bye3
      call eeprom_lecture

    ENDM

;************************** "Macro pour afficher le texte sur l'
écran" ************************* 
print MACRO valeur1,valeur2,valeur3,

      local nombre5,good_bye5

      movlw valeur3
  
      btfss WREG,0                        ; valeur3 = 0 que pour les nombres 
      bra nombre5                         ; valeur3 = 1 que pour les variables

      movf valeur1,W                      ; 
      movwf phrase                        ; longueur de la donnée 

      movf valeur2,W                      ; 
      movwf lecture                       ; départ de la donnée

      bra good_bye5                       ;

nombre5
      movlw valeur1                       ; 
      movwf phrase                        ; longueur de la donnée 
                                          ;  
      movlw valeur2                       ;  
      movwf lecture                       ; départ de la donnée


good_bye5
      call affiche_lcd                    ; 

    ENDM
                                  
;********************* "
Macro pour effacer les caractères par un espace " **********************  
espace MACRO valeur1, valeur2

      local nombre6,good_bye6

      movlw valeur2
  
      btfss WREG,0                        ; valeur2 = 0 que pour les nombres 
      bra nombre6                         ; valeur2 = 1 que pour les variables

      movf valeur1,W                      ; 
      movwf vide                          ; nombre d'espace souhaité

      bra good_bye6                       ;

nombre6
      movlw valeur1                       ; 
      movwf vide                          ; nombre d'espace souhaité


good_bye6
     call ajouter_espace


    ENDM

;** "
Macro pour faire une durée de temps, qui peut aller de 10 ms minimum  à 2550 ms maximum "** 
tempo MACRO valeur1, valeur2 

      local nombre7,good_bye7

      movlw valeur2
  
      btfss WREG,0                        ; valeur2 = 0 que pour les nombres 
      bra nombre7                         ; valeur2 = 1 que pour les variables

      movf valeur1,W                      ; 
      movwf durée                         ; nombre d'espace souhaité

      bra good_bye7                       ;

nombre7
      movlw valeur1                       ; 
      movwf durée                         ; nombre d'espace souhaité

good_bye7
      call _10ms

    ENDM

;**************************** adresse de depart après reset **********************************

    ORG H'0'
      bra debut      

;********************************* interruption haute priorité *********************************

    ORG    H'8'
      retfie 

;********************************* interruption basse priorité *********************************

    ORG     H'18'                                  
      retfie 

debut
;***********************************************************************************************

      movlb 0x0F                          ;  BSR pointe sur la banque 15  

;******************** "
configuration de l'oscillateur du microcontrôleur" ********************** 

      movlw B'
01110100'                   ; oscillateur à 16 Mhz, fréquence stable si PLL (16 * 4)= 64 Mhz
;     movlw B'
01100100'                   ; oscillateur à 8 Mhz, fréquence stable si PLL (8 * 4) = 32 Mhz
;     movlw B'
01010010'                   ; oscillateur à 4 Mhz, fréquence stable  
;     movlw B'
01000010'                   ; oscillateur à 2 Mhz, fréquence stable  
;     movlw B'
00110010'                   ; oscillateur à 1 Mhz, fréquence stable  

      movwf OSCCON
      
      movlw B'
00000000'                   ;
      movwf OSCCON2                       ;

;**************************** configuration du registre OSCTUNE ********************************

      movlw B'
00000000'                   ; bit 6 à 1 : PLL * 4
      movwf OSCTUNE                       ; bit 6 à 0 : PLL désactivé
                                         

;*************************** configuration du registre ANSELA ********************************** 

      movlw B'
00000000'                   ; en mode numérique :
      movwf ANSELA                        ; en mode E/S       : 2(RA0), 3(RA1), 4(RA2), 5(RA3), 7(RA5)                                       

;**************************** configuration du registre ANSELB ********************************* 

      movlw B'
00000000'                   ; en mode numérique : 
      movwf ANSELB                        ; en mode E/S       : 21(RB0), 22(RB1) 23(RB2), 24(RB3), 25(RB4), 26(RB5)  
             
;**************************** configuration du registre ANSELC ********************************* 

      movlw B'
00000000'                   ; en mode numérique : 
      movwf ANSELC                        ; en mode E/S       :  13(RC2), 14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)  

;*************************** configuration du registre ADCON0 ********************************** 

      movlw B'
00000000'                   ; b0 = ADON mise en service le convertiseur 0 = arrêt : 1 = marche   
      movwf ADCON0                        ; b1 = GO/DONE indique la fin de la conversion analogique, et permet de lancer la conversion
                                          ; b2 à b6 = réglage de la sélection du canal

;*************************** configuration du registre ADCON1 ********************************** 

      movlw B'
00000001'                   ; b2 à b3 = 00 : selection de la tension de reférence, Vref+ = Vss   
      movwf ADCON1                        ; b0 à b1 = 00 : selection de la tension de reférence, Vref- = Vdd 
                                          
;*************************** configuration du registre ADCON2 ********************************** 

      movlw B'
00001101'                   ; b0 à b2 = FOSC/64    
      movwf ADCON2                        ; b3 à b5 = 16 TAG 
                                          ; 
                                          ; b7 = détermine si le résultat de la conversion
                                          ; sera justifié à droite = 1 ou à gauche = 0  

;************************* configuration du registre CM1CON0 & CM2CON0 *************************

      movlw B'
00000000'                   ; comparateur 1 off
      movwf CM1CON0 

      movlw B'
00000000'                   ; comparateur 2 off
      movwf CM2CON0 

;*********************** "configuration du pwm du microncontrôleur" ****************************

      movlw    D'
99'                           ; réglage du "débordement" de TMR2 
      movwf    PR2                              ; PR2 D'
99' donc fréquence à 1250 Hz avec prédiviseur à 16

                                  
      movlw B'
00000110'                      ; diviseur pour réduire ou augmenter pwm
      movwf T2CON                         ; 
                                          ;  
                                         
      movlw B'
00001100'                   ; "1100" 4 bits mode pwm, "00" 2 bits pour variation du rapport cyclique  

;     movwf CCP1CON                       ; désactivé le pwm sur RC2
;     movwf CCP2CON                       ; désactivé le pwm sur RC1

;************ configuration des registres TRISA & TRISB & TRISC & TRISE en bank 1 ************** 

      movlw B'
00000000'                   ; RA0(2), RA1(3), RA2(4), RA3(5), RA4(6), RA5(7), RA6(10), RA7(9)  
      movwf TRISA                         ; 

      movlw B'
01110011'                   ; RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28)
      movwf TRISB                         ; 

      movlw B'
00111001'                   ; RC0(11), RC1(12), RC2(13), RC3(14), RC4(15), RC5(16), RC6(17), RC7(18)     
      movwf TRISC                         ; 

      movlw B'
00001000'                   ; RE3(1) 
      movwf TRISE                         ;

                                          ; VSS(8), VSS(19), VDD(20) 
           
;**************************** configuration du registre INTCON2 ******************************** 

      movlw B'
00000000'                   ; B7 = 0 résistances en service
      movwf INTCON2                       ;

;**************************** configuration du registre WPUB *********************************** 
                                        
     movlw B'
00000000'                    ; tirage de résistance sur        : 
     movwf WPUB                           ; pas de tirage de résistance sur : RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28) 

;**************************** configuration du registre INTCON *********************************      

      movlw B'
00000000'                   ; 
      movwf INTCON                        ; interruption hors service 

;************************************ départ du programme **************************************

      movlb 0x00                          ;  BSR pointe sur la banque 0  

;***********************************************************************************************

      clrf PORTA
      clrf PORTB
      clrf PORTC
   
      clrf LATA
      clrf LATB 
      clrf LATC

;***********************************************************************************************
;*********************** "initialisation du mode 4 bits pour LCD 1602" ************************* 
;***********************************************************************************************
ini_lcd
      movlw B'
00000100'                   ; D5
      call envoi                          ; mode 4 bits 
      call e_pulse
;----------------------------------------------------------------------------
      movlw B'
00000100'                   ; D5
      call envoi                          ; mode 4 bits
      call e_pulse
;----------------------------------------------------------------------------
      movlw B'
00000001'                   ; D7   
      call envoi                          ; mode 4 bits
      call e_pulse
;----------------------------------------------------------------------------      
      call _40µs
;----------------------------------------------------------------------------
; "mode 1 ou 2 lignes du lcd"
      movlw B'
00000100'                   ; D5
      call envoi                          ; utilisation de 2 ligne du LCD  
      call e_pulse

      movlw B'
00000011'                   ; D6, D7 
      call envoi 
      call e_pulse
;---------------------------------------------------------------------------- 
      call _1640µs
;----------------------------------------------------------------------------
; "choix de voir le curseur"
      movlw B'
00000000
      call envoi                          ; autorise l'
affichage, et cache le curseur      
      call e_pulse

      movlw B
'00000011'                   ; D6, D7 
      call envoi 
      call e_pulse
;---------------------------------------------------------------------------- 
      call _40µs
;----------------------------------------------------------------------------
;
 "curseur de gauche à droite"
      movlw B'00000000'
      call envoi                         ; déplacement du curseur après l'apparition 
      call e_pulse                       ; d'
un caractère de gauche à droite  
                        
      movlw B
'00000110'                   ; D5, D6
      call envoi
      call e_pulse
;---------------------------------------------------------------------------- 
      call _40µs
;----------------------------------------------------------------------------    
; "adresse d'écriture dans GGRAM pour création de caractére"
      movlw b'00000010'                   ; D6
      call envoi                         
; adresse d'écriture dans CGRAM à l'adresse 0x00 
      call e_pulse                       
                      
      movlw B
'00000000'
      call envoi
      call e_pulse
;---------------------------------------------------------------------------- 
      call _40µs
;---------------------------------------------------------------------------- 
; "création des caractères "é", "è", "ê", "à", "ç", "°C", "µ", "°" dans la GGRAM"

      movlw D'64'                         ; longueur de la donnée 
      movwf temps                        

      tableau creation                    
; macro : qui permets de se positionner à l'adresse demandé

ini_creaion

      tblrd*+                             ; effectue la lecture, et ensuite incrémente TBLPTR

      movf TABLAT,W                       ; transfére la donnée récupére dans W
      
      movwf lettre
      call ecrit_lcd                      ; enregistrement des caractéres dans GGRAM
    
      decfsz temps,F
      bra ini_creaion   

;***********************************************************************************************

      call cls_lcd                        ; efface l'
écran LCD                                    

;***********************************************************************************************

      rcall ligne1_lcd                    ; se placer sur la ligne 1 
      print 16
,0,0                        ; macro : longueur de la donnée,départ de la donnée, chiffre(0) ou varible(1) 
                                          
; affiche : "Temps-x est sur "

      rcall ligne2_lcd                    ; se placer sur la ligne 2 
      print 16
,16,0                        ; macro : longueur de la donnée,départ de la donnée, chiffre(0) ou varible(1) 
                                          
; affiche : "   Fantas-Pic   "   
                                                     
      tempo 200
,0                         ; macro : temps, chiffre(0) ou varible(1)
                                          ; 2000 ms pour laissé le temps de voir

;***********************************************************************************************     
terminer
      nop 
      bra terminer                          

;************** "efface l'écran, et raméne le curseur à la premier ligne du lcd" ************** 
cls_lcd
      movlw B
'00000000' 
      rcall envoi                         
; efface l'écran, et raméne le curseur au début  
      rcall e_pulse 

      movlw B'
00001000'                    
      rcall envoi 
      rcall e_pulse 

      rcall _1640µs 

      return 

;********************** "H'
80' se placer en début de la ligne 1 du lcd" ************************  
ligne1_lcd  
      movlw B'
00000001'   
      rcall envoi                         ; ligne 1 du lcd  
      rcall e_pulse

      movlw B'
00000000'  
      rcall envoi                                         
      rcall e_pulse                        

      rcall _40µs  

      return 

;********************** "H'
C0' se placer en début de la ligne 2 du lcd" ************************ 
ligne2_lcd 
      movlw B'
00000011'  
      rcall envoi                         ; ligne 2 du lcd 
      rcall e_pulse

      movlw B'
00000000
      rcall envoi                     
      rcall e_pulse                        

      rcall _40µs                                     

      return

;************************ "écrit ou créer, un caractére sur le lcd" *************************** 
ecrit_lcd
      movlw D'
2
      movwf loop4

reecrit_lcd 
      clrf WREG     
      swapf lettre,F
     
      btfsc lettre,0 
      bsf WREG,3             
      btfsc lettre,1 
      bsf WREG,2
      btfsc lettre,2 
      bsf WREG,1
      btfsc lettre,3 
      bsf WREG,0

      rcall envoi

      bsf lcd_rs
      rcall e_pulse 
      bcf lcd_rs

      decfsz loop4,F
      bra reecrit_lcd 

      rcall _40µs      

      return

;************* "pour écrire dans les bits 0,1,2,3, sans toucher aux bits 4,5,6,7" **************  
envoi
      andlw B'
00001111'
      movwf loop5

      btfsc lcd_port,7          
      bsf loop5,7 

      btfsc lcd_port,6
      bsf loop5,6

      btfsc lcd_port,5
      bsf loop5,5

      btfsc lcd_port,4
      bsf loop5,4

      movff loop5,lcd_port

      return
      
;************************** "envoie une fin d'
émision sur le lcd" ***************************** 
e_pulse 
      nop
      bsf lcd_e
      nop 
      bcf lcd_e 

      return
;****************************** "
affiche le texte sélectionner" ******************************** 
affiche_lcd    
      tableau info                        ; macro : qui permets de se positionner à l'adresse demandé

      bcf STATUS,C                        ; pour additionner, mettre carry à zéro pour
                                          ; ne pas avoir d'erreur sur l'addition  

      movf lecture,W                      ; emplacement du départ de la donnée
      addwf TBLPTRL,F                     ; se positionner à l'adresse low                    

      btfsc STATUS,C                      ; si retenu ajouter à l'adresse high
      incf TBLPTRH,F                      ; 

re_lire
      tblrd*+                             ; effectue la lecture, et ensuite incrémente TBLPTR
      movf TABLAT,W                       ; transfére le caractère récupéredans dans TABLAT vers W

      movwf lettre                        ; "
lettre" contient la donnée

      rcall ecrit_lcd                     ; écriture du caractère sur lcd  
                                        
      decfsz phrase,F                     ; "
phrase" est la longueur du texte
      bra re_lire                         ; 

      return

;************** "
ajouter un espace, surtout utilisé pour effacer des caractères" *************** 
ajouter_espace

; "
écrit des espaces vide sur le lcd"

      movlw ' '
      movwf lettre
      rcall ecrit_lcd 

      decfsz vide,F
      bra ajouter_espace 

      return

;****************************** "
pour écrit dans l'eeprom" ************************************* 
eeprom_ecriture

      movf adresse_high,W                 ; adresse du poid fort
      movwf EEADRH                        ;

      movf adresse_low,W                  ; adresse du poid faible
      movwf EEADR                         ; 

      movf donner+0,W                     ;
      movwf EEDATA                        ; écriture de la donnée
 
      bcf EECON1,EEPGD                    ; préparation à l'
autorisation 
      bcf EECON1
,CFGS                     ; access eeprom

      bsf EECON1
,WREN                     ; Enable writes   
 
      bcf INTCON
,GIE                      ; couper les interruptions

      btfsc INTCON
,GIE                    ; contrôl si les interruptions sont bien coupés
      bra 
$-D'2'                          ; remonte à la ligne 2 jusqu'a coupures des interruptions 

      movlw H'
55'                         ; séquence spécifique (c'est comme ça, il faut le savoir)
      movwf EECON2                        ; séquence spécifique
      movlw H
'AA'                         ; séquence spécifique
      movwf EECON2                        
; séquence spécifique

      bsf EECON1
,WR                       ; lance une opération d'écriture

      btfsc    EECON1,WR                      ; on attend que l'
operation d'ecriture soit finie (de l'ordre de la ms
      bra 
$-D'2'                          ; remonte à la ligne 2 jusqu'a fin d'écriture

      bcf EECON1
, WREN                    ; interdiction de l'écriture

      return

;******************************** "pour lire dans l'
eeprom" ************************************ 
eeprom_lecture

      movf adresse_high,W                 ; adresse du poid fort
      movwf EEADRH                        ;

      movf adresse_low,W                  ; adresse du poid faible
      movwf EEADR                         ; 

      bcf EECON1,EEPGD                    ; préparation à la lecture
      bcf EECON1,CFGS                     ; access EEPROM
      bsf EECON1,RD                       ; lecture de l'EEPROM

      movf EEDATA,W                       ; la valeur lue dans l'éeprom est placée dans W 
      movwf donner                        ; récupération du résultat  

      return

;**************** "
pause de 10 millisecondes pour 18F avec horloge de 16 Mhz" ******************
_10ms
      movlw D'241'
      movwf loop1

      movlw D'52'
      movwf loop2

      decfsz loop1
      bra $-D'2'
      decfsz loop2
      bra $-D'6'
 
      decfsz durée,F
      bra _10ms    

      return

;**************** "
pause de 1640 micro-secondee pour 18F avec horloge de 16 Mhz" ***************
_1640µs
      movlw D'131'
      movwf loop1

      movlw D'9'
      movwf loop2

      decfsz loop1
      bra $-D'2'
      decfsz loop2
      bra $-D'6'

      return

;****************** "
pause de 40 micro-seconde pour 18F avec horloge de 16 Mhz" ****************
_40µs
      movlw D'53'
      movwf loop1

      decfsz loop1,F
      bra $-D'2'

      return 

;*********************************************************************************************** 
;************************* "
affichage des phrases, 255 octets maximum" *************************
;*********************************************************************************************** 
    ORG H'8CA0'                           ; 36000 

info  
      
      db "
Temps-x est sur "           ; longueur 16 départ 0
      db "
   Fantas-Pic   "           ; longueur 16 départ 0

;*********************************************************************************************** 
;**************************** "
création de 8 caractère pour le LCD" ****************************
;*********************************************************************************************** 
    ORG H'8DCC'                           ; 36300 
                    
creation

; "
création du caractère "é" dans la GGRAM"
      db B'00000100',B'00001000',B'00001110',B'00010001',B'00011111',B'00010000',B'00001110',B'00000000'

; "
création du caractère "è" dans la GGRAM"
      db B'00000100',B'00000010',B'00001110',B'00010001',B'00011111',B'00010000',B'00001110',B'00000000'

; "
création du caractère "ê" dans la GGRAM
      db B'00000100',B'00001010',B'00001110',B'00010001',B'00011111',B'00010000',B'00001110',B'00000000'

; "
création du caractère "à" dans la GGRAM"
      db B'00000100',B'00000010',B'00001110',B'00000001',B'00001111',B'00010001',B'00001111',B'00000000'

; "
création du caractère "ç" dans la GGRAM"  
      db B'00001110',B'00010000',B'00010000',B'00010001',B'00001110',B'00000100',B'00001100',B'00000000'

; "
création du caractère "û" dans la GGRAM"
      db B'00000100',B'00001010',B'00010001',B'00010001',B'00010001',B'00010011',B'00001101',B'00000000'

; "
création du caractère "°C" dans la GGRAM"
      db B'00001000',B'00010100',B'00001000',B'00000110',B'00001000',B'00001000',B'00001001',B'00000110'

; "
création du caractère "°" dans la GGRAM"
      db B'00001000',B'00010100',B'00001000',B'00000000',B'00000000',B'00000000',B'00000000',B'00000000'        

;******************* "
écriture dans l'eeprom pendant la programmation du Pic" ****************** 

    ORG H'
F00000

          DE '
T','e','m','p','s','-','x',' ',' ',' ',' ',' ',' ',' ',' ',' '

    End        


Fichier à mettre dans le Pic : LCD2x16(Hex).zip
Fichier code : LCD2x16(code).zip

A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Retourner vers « Langage ASM »

Qui est en ligne

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