You are on page 1of 4

/*

RS--> P3.7
RW--> P3.6
EZ--> P3.5
LCD Data --> P1
OUT of Keyboard(row)--> P2
IN of Keyboard(Coloumn)--> P3
*/

org 0000h
acall init
start: call display
lcall keyboard
acall delay1
sjmp start
init:

mov a,#38h
acall com
mov a,#0eh
acall com
mov a,#01h
acall com
ret

display:mov a,#01h
acall com
mov a,#80h
acall com
mov r4,#12d
mov a,#00h

mov dptr,#mydata
next: clr a
movc a,@a+dptr
acall data1
inc dptr
djnz r4,next
ret
com: acall chkdb7
clr p3.7
clr p3.6
setb p3.5
mov p1,a
clr p3.5
ret
data1:acall chkdb7
setb p3.7
clr p3.6
setb p3.5
mov p1,a
clr p3.5
ret
chkdb7:

setb p1.7

clr p3.7
setb p3.6
bac:

clr p3.5
setb p3.5
jb p1.7, bac
ret

delay1:

mov r0,#08h

out3: mov r1,#0ffh


out2: mov r2,#0ffh
djnz r2,$
djnz r1,out2
djnz r0,out3
ret
mydata:

db "key pressed:"

keyboard:mov p3,#0ffh
mov p2,#00h
label1:

mov a,p3

anl a,#00000011b
cjne a,#0000011b,label1
label2:

mov p3,#0ffh

mov p2,#00h
mov a,p3
anl a,#00000011b
cjne a,#0000011b,label
sjmp label2

label: mov p2,#11111110b


mov a,p3
anl a,#00001111b
cjne a,#00001111b,keycode0

mov p2,#11111101b
mov a,p3
anl a,#00001111b
cjne a,#00001111b,keycode1
ljmp label2

keycode0:mov dptr,#code0
sjmp find
keycode1:mov dptr,#code1

find:

rrc a
jnc match
inc dptr
sjmp find

match:

clr a

movc a,@a+dptr
lcall data1
ret

org 300h
code0:

db '0','1'

code1:

db '2','3'

end

You might also like