标题:
51单片机实现矩阵中断式键盘值显示汇编语言程序
[打印本页]
作者:
xuxuebo001
时间:
2019-6-6 09:12
标题:
51单片机实现矩阵中断式键盘值显示汇编语言程序
image.jpg
(4.97 MB, 下载次数: 30)
下载附件
2019-6-6 09:08 上传
利用51单片机实现4*4矩阵键盘扫描,并摁下相应键时在LED上显示相应键值,通过两位动态显示。通过中断方式实现。采用汇编语言。
单片机源程序如下:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT
ORG 0040H
MAIN:MOV SP,#70H
MOV 30h,#00h
SETB EX0
SETB IT0
SETB EA
MOV DPTR,#TAB
MOV P2,#0F0H;p2口高四位置1低四位置0
INT:PUSH ACC
MOV P2,#0F0H
MOV A,P2;a为11110000
JNB ACC.4,E1;键盘查询,不为1跳转,为1顺序 查询p4口 下同
JNB ACC.5,E2
JNB ACC.6,E3
JNB ACC.7,E4
SETB EX0
RETI
E1: MOV 20h,#0 ;按键在哪一行,第一行加0
LJMP KEYH
E2: MOV 20h,#4 ;第二行家4
LJMP KEYH
E3: MOV 20H,#8 ;第三行加8
LJMP KEYH
E4: MOV 20h,#12;第四行加12
LJMP KEYH
KEYH:
MOV P2,#0FH
MOV A,P2
JNB ACC.0,DO
JNB ACC.1,D1
JNB ACC.2,D2
JNB ACC.3,D3
RETI
DO: MOV A,#0 ;第一列加0,下同
ADD A,20H
DA A
MOV 30H,A
SJMP EXIT
D1: MOV A,#1
ADD A,20H
DA A
mov 30h,a
Sjmp EXIT
D2: MOV A,#2
ADD A,20H
DA A
MOV 30H,A
SJMP EXIT
D3: MOV A,#3
ADD A,20H
DA A
MOV 30H,A
EXIT:
MOV A,30H
ANL A,#0FH ;a的高四位清零留下个位
MOVC A,@A+DPTR
CLR P1.1 ;位选
SETB P1.0
MOV P0,A
MOV A,#0FFH;p0清零
MOV P0,A ;p0清零
MOV A,30H
ANL A,#0F0H
SWAP A;留下十位
MOVC A,@A+DPTR
CLR P1.0
SETB P1.1
MOV P0,A
MOV A,#0FFH
MOV P0,A
LJMP INT
DELAY:MOV R0,#2;延时
D: MOV R1,#25
DJNZ R1,$
DJNZ R0,D
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1