?? lcd1.asm
字號(hào):
;******************
RS EQU P3.0
RW EQU P3.1
E EQU P3.2
DATE EQU P2
BF EQU P2.7
KEY EQU P1
COUNT EQU 31H
SCAN EQU 32H
SCAN1 EQU 33H
KEYCOUNT EQU 34H
SHOWWHAT EQU 35H
;*****************
ORG 0000H
AJMP START
ORG 0030H
START:
;*************************
;初始化LCD
;*********************
MOV SP,#5FH
MOV DATE,#00000001B ;清屏
CALL WRITES
MOV DATE,#00111000B ;8位2行5x7點(diǎn)陣
ACALL WRITES
MOV DATE,#00001111B ;顯示器開、光標(biāo)開、閃爍開
ACALL WRITES
MOV DATE,#00000110B ;文字不動(dòng),光標(biāo)自動(dòng)右移
ACALL WRITES
;*************************
;鍵盤掃描初始化
;****************
MOV KEY,#0F0H
MOV 30H,#0FEH
MOV COUNT ,#0
MOV KEYCOUNT,#0
;******************
MAIN:
CALL KEYSCAN
MOV DATE,#00H
ACALL WRITES
MOV DPTR,#TAB
MOV A,SHOWWHAT
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
LJMP MAIN
;*********************
;鍵盤掃描程序
;*********************
KEYSCAN:
MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,KEYWHAT
LJMP KEYSCAN
KEYWHAT:
CALL DELAY
MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,KEYWHAT1
LJMP KEYSCAN
KEYWHAT1:
MOV KEY,30H
MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,KEYWHAT2
MOV A,30H
RL A
MOV 30H,A
INC COUNT
MOV A,COUNT
CJNE A,#4,KEYWHAT1
MOV COUNT,#0
MOV 30H,#0FEH
AJMP KEYSCAN
KEYWHAT2:
SWAP A
MOV SCAN,A
K1:MOV A,SCAN
RRC A
MOV SCAN,A
JBC CY,K
INC KEYCOUNT
MOV R3,KEYCOUNT
CJNE R3,#3,K1
MOV KEYCOUNT,#0
AJMP K1
k:
MOV SCAN,KEYCOUNT
MOV A,COUNT
MOV B,#4
MUL AB
ADD A,SCAN
MOV SHOWWHAT,A
RET
;*****************
;寫控制命令子程序
;**************
WRITES:
CLR RS
CLR RW
CLR E
CALL FAVOUR;判斷是否忙
SETB E
RET
;*****************
;寫數(shù)據(jù)子程序
;**************
READDATE:
SETB RS
CLR RW
CLR E
ACALL FAVOUR
SETB E
RET
;***************
;判斷是否忙子程序
;******************
FAVOUR:
MOV DATE,#0FFH
CLR RS
SETB RW
CLR E
NOP
SETB E
JB BF,FAVOUR
RET
;***************
DELAY:
MOV R0,#100
D1:MOV R1,#255
DJNZ R1,$
DJNZ R0,D1
RET
;*****************
TAB:
DB 30H,31H,32H,33H,34H,35H,36H,38H,39H
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -