;****************行列键盘扫描程序*******************
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV P0, #0FFH
START: MOV P3, #0FH ;初始化
MOV A, P3
CJNE A, #0FH,GO1
MOV A, R1
MOV DPTR, #TAB ;查表方式显示行列键盘键位
MOVC A, @A+DPTR
MOV P0, A
ACALL DEL1S
AJMP START
;******************判断键位子程序*******************
GO1: ACALL DEL1S
CJNE A, #0FH,GO2
AJMP START
GO2: MOV R2, #0DFH
MOV R0, #00H
ST: MOV P3, R2
mov a, p3
jb acc.0, one
MOV A, #01H
AJMP LKP
ONE: JB ACC.1, TWO
MOV A, #04H
AJMP LKP
TWO: JB ACC.2, THR
MOV A, 07H
AJMP LKP
THR: JB ACC.3, NEXT
MOV A, #0AH
LKP: ADD A, R0
CJNE A, #0BH,LKP1
AJMP START
LKP1: MOV R1, A
AJMP START
NEXT: INC R0
CJNE R0, #03H,L1
MOV R0,#00h
ajmp st
L1: CJNE R2, #0DFH,L2
MOV R2, #0BFH
AJMP ST
L2: CJNE R2, #0DFH, L2
MOV R2, #7FH
AJMP ST
L3: CJNE R2, #7FH,RE
MOV R2, #0DFH
RE: AJMP START
;************************延时1S************************
DEL1S: MOV R5, #8H
F1: MOV R6, #0F0H
F2: MOV R7, #0F0H
DJNZ R7, $
DJNZ R6, F2
DJNZ R5, F1
RET
;*******************共阳极LED显示数字****************
ORG 100H
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END
扫描方式的,有个很大的缺陷,在显示第几个数字时不能输入,改为时间中断的就好多了,明天开始做个时钟的程序,要做2天吧,当作这段时间的总结,要有计时功能,定时功能,突然发现P3口要做键盘,LED数字管用快速扫描式显示的就好了,不过实验板又不能改,所以只能将就着用了,我的电子时钟,起码有你手上的电子表的基本功能,然后时间要准,之前做了个交通灯的,还能加一些东西进去,如加个中断响应,加个键盘
文章评论(0条评论)
登录后参与讨论