原创 行列键盘扫描程序

2008-1-25 11:55 3943 4 4 分类: MCU/ 嵌入式

;****************行列键盘扫描程序*******************
 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数字管用快速扫描式显示的就好了,不过实验板又不能改,所以只能将就着用了,我的电子时钟,起码有你手上的电子表的基本功能,然后时间要准,之前做了个交通灯的,还能加一些东西进去,如加个中断响应,加个键盘

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条