Na display potrebuji zobrazit znak, ktery je v ROM CODE: A02. Ktery parametr musim nastavit abych mohl zobrazovat znaky z CODE: A02 kdyz defaultne se mi zobrazuji z ROM CODE: A00 ?
;**************************************************************************
; Podprogram na obsluhu LCD
;**************************************************************************
CLS_LCD
movlw .0
goto WR_CMD
LINE1
movlw 0x80
goto WR_CMD
LINE2
movlw 0xC0
goto WR_CMD
LINE3
movlw 0x94
goto WR_CMD
LINE4
movlw 0xD4
goto WR_CMD
WR_CMD
banksel 0
bcf RS ; RS=0, zápis instrukcí do LCD
goto $+4
;-------------------------------
WR_LCD
banksel 0
bsf RS ; RS=1, zápis dat do LCD
; ------------------------
movwf ZNAK ; ulozit W do ZNAK !!! data v registru W !!!
bsf E ; nastav Enable
; ------------------------
movf LCD_PORT,W ; zapamatovat stav PORTuD
; iorlw 0x0F ; !!! poslat na PORTD 0-3 !!! (vysledek je xxxx1111)
iorlw 0xF0 ; !!! poslat na PORTD 4-7 !!! (vysledek je 1111xxxx)
movwf TMP1 ; zapise W do TMP1
;-------------------------------
; swapf ZNAK,W ; !!! poslat na PORTD 0-3 !!!
; iorlw 0xF0 ; zamaskuje horní bity (vysledek je 1111xxxx)
movf ZNAK,W ; !!! poslat na PORTD 4-7 !!!
iorlw 0x0F ; zamaskuje dolní bity (vysledek je xxxx1111)
andwf TMP1,W ; pošle vyšší 4 bity na PORTD
movwf LCD_PORT
bcf E ; zapíše do LCD
;-------------------------------
bsf E ; nastav Enable
; movf ZNAK,W ; !!! poslat na PORTD 0-3 !!!
; iorlw 0xF0 ; zamaskuje horní bity (vysledek je 1111xxxx)
swapf ZNAK,W ; !!! poslat na PORTD 4-7 !!!
iorlw 0x0F ; zamaskuje dolní bity (vysledek je xxxx1111)
andwf TMP1,W ; pošle nižší 4 bity na PORTD
movwf LCD_PORT
bcf E ; zapíše do LCD
;-------------------------------
btfsc RS
goto CEK40 ; RS=1, zápis dat - čekej 40 us
; ------------------------
movlw 04h ; instrukce 1, 2 a 3 - čekej 1,64 ms
subwf ZNAK,W
btfss STATUS,C
goto CEK1m6 ; C=0, instrukce CLEAR - čekej 1,64 ms
goto CEK40 ; C=1, zápis dat - čekej 40 us
;**************************************************************************
;**************************************************************************
INI_LCD
call CEK15m ; cekej 15ms
bcf RS ; zapis ridicich instrukci do LCD
;-------------------------------
movlw 30h ; !!! poslat 03h na PORTD 4-7 (vstupy LCD DB4-DB7) !!!
; movlw 03h ; !!! poslat 03h na PORTD 0-3 (vstupy LCD DB4-DB7) !!!
movwf LCD_PORT
; ------------------------
bsf E
bcf E
call CEK4m ; cekej 4,1ms
; ------------------------
bsf E
bcf E
call CEK100 ; cekej 100us
; ------------------------
bsf E
bcf E
call CEK40 ; cekej 40us
;-------------------------------
movlw 20h ; !!! poslat 03h na PORTB 4-7 (vstupy LCD DB4-DB7) !!!
; movlw 02h ; !!! poslat 03h na PORTB 0-3 (vstupy LCD DB4-DB7) !!!
movwf LCD_PORT ; nastavena 4-bitova komunikace
; ------------------------
bsf E
bcf E
call CEK40 ; cekej 40us
;-------------------------------
movlw 28h ; 00101000 - počet bitů, 2 řádky, 5x7 znaky
call WR_CMD
movlw 0Ch ; 00001100 - display ON, kurzor OFF, blikání OFF
call WR_CMD
movlw 01h ; 00000001 - smaže displej, kurzor na pozici 0
call WR_CMD
movlw 06h ; 00000110 - směr kurzoru, posunu displeje
call WR_CMD
; ------------------------
return
Dekuji za radu.