Bonjour je doit réaliser en language assembleur un programme pour un afficheur lcd 44780 (pic 16f877)
Les lignes de port sont : (RB0=RS , RB1=RW, RB2=E)
(RC0 = D0 ............. RC7 = D7) 8 bits
Voici ce qu j'ai réalisé:
LIST p=16F877
#include <p16F877.inc>
__CONFIG _CP_OFF & _DEBUG_ON & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
OPTIONVAL EQU B'10000101'
#define RS PORTB,0
#define RW PORTB,1
#define EN PORTB,2
org 0x00
goto init
org 0x05
init
banksel TRISB
bcf RS ;RS et R/W a zéro pour effectuer la configuration du lcd
bcf RW
bcf EN
banksel TRISC
movlw 0xFF
banksel PORTB
bcf RS ;RS et R/W a zéro pour effectuer la configuration du lcd
bcf RW
bcf EN
banksel INTCON
bcf INTCON,5
bcf INTCON,2
call tempo
return
tempo
banksel OPTION_REG
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
banksel TMR0
movlw 0x15
movwf TMR0
boucle
btfss INTCON,2
goto boucle
fonction_set
call busy
movlw 0x38
call Wrcmd
busy
banksel TRISC
movlw 0xFF
movwf TRISC
banksel TRISB
bsf RS
bsf RW
bsf EN
movf PORTC,W
busy1
bcf PORTB,2
andlw 0x80
btfss STATUS,Z
goto busy1
nobusy
bcf PORTB,1
bsf STATUS,RP0
movlw 0x00
movwf TRISC
bcf STATUS,RP0
return
Wrcmd
movwf 0x20
call busy
bcf RS
bcf RW
bsf EN
movf 0x20,W
movwf PORTC
bcf PORTB,2
call tempo
return
Wrdata
movwf 0x20
call busy
bsf RS
bcf RW
bsf EN
movf 0x20,W
movwf PORTC
bcf PORTB,2
call tempo
return
char
movlw 'B' ; Charger le caractère B
movwf PORTB ; Charger le caractere sur le portB
call busy
movlw 'o' ; Charger le caractère O
movwf PORTB ; Charger le caractere sur le portB
call busy
movlw 'n' ; Charger le caractère N
movwf PORTB ; Charger le caractere sur le portB
call busy
movlw 'j' ; Charger le caractère J
movwf PORTB ; Charger le caractere sur le portB
call busy ;
movlw 'o' ; Charger le caractère O
movwf PORTB ; Charger le caractere sur le portB
call busy
movlw 'u' ; Charger le caractère U
movwf PORTB ; Charger le caractere sur le portB
call busy
movlw 'r' ; Charger le caractère R
movwf PORTB ; Charger le caractere sur le portB
call busy
return
end
Pouvez vous m'aider s'il vou plez merci!!
-----