You are on page 1of 5

LCD EQU p2

E EQU P0.1
RS EQU P0.0
KEY EQU P1

org 00h
MOV KEY,#0F0H

MOV A,#38H
ACALL LCDCOM
MOV A,#0EH
ACALL LCDCOM
MOV A,#01H
ACALL LCDCOM

MOV DPTR,#250H
AGAIN:
CLR A
MOVC A,@A+DPTR
JZ EXIT
ACALL LCDDATA
INC DPTR
SJMP AGAIN
EXIT:MOV A,#0C0H
ACALL LCDCOM
AG:ACALL KEYPAD
ACALL LCDDATA
SJMP AG

LCDCOM:
MOV LCD,A
CLR RS ;COMMAND
SETB E
ACALL delay
CLR E
ACALL delay
RET

LCDDATA:
MOV LCD,A
SETB RS ;DATA
SETB E
ACALL delay
CLR E
ACALL delay
RET
delay:
mov r3,#50
h1:mov r4,#255
h: djnz r4,h
djnz r3,h1
ret

KEYPAD:MOV KEY,#0F0H
MOV A,KEY
CJNE A,#0F0H,KEYPAD ;CHECK FOR NO KEY PRESSED

CHECK:MOV A,KEY
CJNE A,#0F0H,CHECK2
SJMP CHECK

CHECK2:ACALL delay
MOV A,KEY
CJNE A,#0F0H,OK
SJMP CHECK

OK: MOV KEY,#11111110B ;1ST ROW


MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,ROW0
MOV KEY,#11111101B ;2ND ROW
MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,ROW1

MOV KEY,#11111011B ;3RD ROW


MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,ROW2

MOV KEY,#11110111B ;4TH ROW


MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,ROW3
SJMP CHECK

ROW0:MOV DPTR,#300H
SJMP NEXT
ROW1:MOV DPTR,#304H
SJMP NEXT
ROW2:MOV DPTR,#308H
SJMP NEXT
ROW3:MOV DPTR,#30CH
NEXT:SWAP A
NEXT2:RRC A
JNC FOUND
INC DPTR
SJMP NEXT2
FOUND:CLR A
MOVC A,@A+DPTR ;FOUND KEY FROM LOOKUP TABLE
RET

ORG 250h
DB "welcom",0
ORG 300h
DB '7','8','9','/',' 4','5','6','*', '1','2','3','-', 'O','0','=','+' ;KEYS

end

You might also like