Snažím se už měsíc uvést do provozu koupené LCD .Jedná se o toto http://www.gme.cz/cz/-p513-176.html a nevím jak na to program který jsem několikrát měnil nic s lcd nedělá.Použil jsem 4-bit komunikaci s připojenými vodiči E a RS
piny pro datové bity DB0-DB4 jsem propojil se zemí
Program je následující(některé řádky jsem použil z nalezeného zdrojáku):
LIST P=16F84A, R=DEC
INCLUDE <P16F84A.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC & _CP_OFF
RAM EQU H'0C' ; definice 1. registru pameti pro 16F84A
TMP0 EQU RAM+3 ; registr pro cekaci smycku
TMP1 EQU RAM+4 ; registr pro cekaci smycku
TMP3 EQU RAM+6 ; registr pro ulozeni stavu portu B
TMP4 EQU RAM+7 ; registr pro ulozeni obsahu W
#DEFINE E PORTB,4 ; definice bitu Enable pro obsluhu LCD
#DEFINE RS PORTB,5 ; definice bitu RS pro obsluhu LCD
ORG 0x000
bcf STATUS,RP0
clrf PORTA
clrf PORTB
BSF STATUS,RP0
MOVLW B'00000000'
MOVWF TRISB
bcf STATUS,RP0
; inicializace LCD
CALL CEK20MS ; cekani na pripraveny LCD
MOVLW B'0011' ; 4b mod, 2 radky, font 5x8
CALL ZAPISIN
call CEK2MS
MOVLW B'0011' ; 4b mod, 2 radky, font 5x8
CALL ZAPISIN
call CEK2MS
MOVLW B'0011' ; 4b mod, 2 radky, font 5x8
CALL ZAPISIN
call CEK2MS
MOVLW B'0010' ; 4b mod, 2 radky, font 5x8
CALL ZAPISIN
call CEK2MS
MOVLW B'00100000'
CALL ZAPIS
call CEK2MS
MOVLW B'00001111'
CALL ZAPIS
call CEK2MS
MOVLW B'00000110'
CALL ZAPIS
call CEK2MS
MOVLW B'00000001'
CALL ZAPIS
goto MAIN
ZAPISIN MOVWF TMP4 ; ulozeni W do pomocneho registru TMP4
bsf PORTB,3
btfss TMP4,3
bcf PORTB,3
bsf PORTB,2
btfss TMP4,2
bcf PORTB,2
bsf PORTB,1
btfss TMP4,1
bcf PORTB,1
bsf PORTB,0
btfss TMP4,0
bcf PORTB,0
BSF E ; zapis dat do LCD
BCF E
CALL CEK2MS
RETURN
ZAPIS MOVWF TMP4 ; ulozeni W do pomocneho registru TMP4
bsf PORTB,3
btfss TMP4,7
bcf PORTB,3
bsf PORTB,2
btfss TMP4,6
bcf PORTB,2
bsf PORTB,1
btfss TMP4,5
bcf PORTB,1
bsf PORTB,0
btfss TMP4,4
bcf PORTB,0
BSF E
nop ; zapis dat do LCD
BCF E
CALL CEK2MS
bsf PORTB,3
btfss TMP4,3
bcf PORTB,3
bsf PORTB,2
btfss TMP4,2
bcf PORTB,2
bsf PORTB,1
btfss TMP4,1
bcf PORTB,1
bsf PORTB,0
btfss TMP4,0
bcf PORTB,0
BSF E
nop ; zapis dat do LCD
BCF E
CALL CEK2MS
RETURN
CEK2MS MOVLW 0x36
MOVWF TMP1
aa MOVLW 0x0B
MOVWF TMP0
bb DECFSZ TMP0,1
GOTO bb
DECFSZ TMP1,1
GOTO aa
RETURN
CEK20MS MOVLW 0x20
MOVWF TMP1
cc MOVLW 0xCF
MOVWF TMP0
vv DECFSZ TMP0,1
GOTO vv
DECFSZ TMP1,1
GOTO cc
RETURN
MAIN
bsf RS
movlw B'01110101'
call ZAPIS
bcf RS
goto MAIN
end
Předem děkuju za rady.