;------------------------------------
;Obsluga LCD, kwarc 12 MHz
;tryb pracy - 4 linie danych
;znak przekazywany w R2
;------------------------------------
RS equ P1.2
E equ P1.3
DB4 equ P1.4
DB5 equ P1.5
DB6 equ P1.6
DB7 equ P1.7
Enable equ P1.1
ljmp Program
org 100h
tablica: DB "Nie oszukam dzisiaj was, " ;25
tablica2: DB "Jestem sztywny jakbym polknal kija" ;34
org 150h
Program:
clr Enable
lcall LCDinit
lcall LCDclear
mov DPTR,#tablica
mov R0,#00h
Wyswietl:
mov A,R0
movc A,@A+DPTR
mov R2,A
inc R0
lcall LCDznak
mov A,R0
xrl A,#19h
jnz Wyswietl
lcall LCDsecondline
mov DPTR,#tablica2
mov R0,#00h
Druga_linia:
mov A,R0
movc A,@A+DPTR
mov R2,A
inc R0
lcall LCDznak
mov A,R0
xrl A,#22h
jnz Druga_linia
Leci:
lcall LCDshift
mov A,#0FFh
lcall Pauza
mov A,#0FFh
lcall Pauza
mov A,#0FFh
lcall Pauza
mov A,#0FFh
lcall Pauza
mov A,#0FFh
lcall Pauza
mov A,#0FFh
lcall Pauza
mov A,#0FFh
lcall Pauza
ljmp Leci
LCDshift:
mov P1,#00h
clr RS
orl P1,#10h
setb E
clr E
mov P1,#00h
orl P1,#80h
setb E
clr E
mov A,#14h
lcall Pauza
setb RS
ret
LCDinit:
mov A,#3Ch
lcall Pauza
mov P1,#00h
clr RS
clr E
orl P1,#30h
setb E
clr E
mov A,#14h
lcall Pauza
anl P1,#0Fh
orl P1,#30h
setb E
clr E
mov A,#01h
lcall Pauza
anl P1,#0Fh
orl P1,#30h
setb E
clr E
mov A,#01h
lcall Pauza
anl P1,#0Fh
orl P1,#20h
setb E
clr E
mov A,#01h
lcall Pauza
anl P1,#0Fh
orl P1,#20h
setb E
clr E
anl P1,#0Fh
orl P1,#80h
setb E
clr E
mov A,#01h
lcall Pauza
anl P1,#0Fh
orl P1,#00h
setb E
clr E
anl P1,#0Fh
orl P1,#60h
setb E
clr E
mov A,#01h
lcall Pauza
anl P1,#0Fh
orl P1,#00h
setb E
clr E
anl P1,#0Fh
orl P1,#0C0h
setb E
clr E
mov A,#01h
lcall Pauza
anl P1,#0Fh
orl P1,#00h
setb E
clr E
anl P1,#0Fh
orl P1,#30h
setb E
clr E
mov A,#01h
lcall Pauza
ret
LCDclear:
mov P1,#00h
clr RS
orl P1,#00h
setb E
clr E
mov P1,#00h
orl P1,#10h
setb E
clr E
mov A,#14h
lcall Pauza
setb RS
ret
LCDhome:
mov P1,#00h
clr RS
orl P1,#00h
setb E
clr E
mov P1,#00h
orl P1,#20h
setb E
clr E
mov A,#14h
lcall Pauza
setb RS
ret
LCDsecondline:
mov P1,#00h
clr RS
orl P1,#0C0h
setb E
clr E
mov P1,#00h
orl P1,#00h
setb E
clr E
mov A,#14h
lcall Pauza
setb RS
ret
LCDznak:
mov P1,#00h
setb RS
mov A,R2
anl A,#0F0h
orl P1,A
setb E
clr E
mov A,R2
anl A,#0Fh
swap A
anl P1,#0Fh
orl P1,A
setb E
clr E
mov A,#02h
lcall Pauza
ret
Pauza:
Petla:
mov B,#07Bh ;2 cykle
djnz B,$ ;2 cykle
djnz ACC,Petla ;2 cykle
ret
end