Sunteți pe pagina 1din 2

/* 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

S-ar putea să vă placă și