标题:
有用汇编写的线反转法扫描键盘程序吗
[打印本页]
作者:
昃认真
时间:
2015-1-9 13:05
标题:
有用汇编写的线反转法扫描键盘程序吗
本人最近在写单片机综设,需要用到汇编写扫描键盘程序,想用线反转法,求各位大神有用汇编写的线反转法扫描键盘的程序
作者:
admin
时间:
2015-1-9 14:47
反转法扫描的汇编程序:电路图:矩阵键盘接p1口,数码管位接p2 段选接p3,程序经过测试的可以用.
org 0000h
ljmp main
org 0030h
main: mov P2,#0feh ;送数码管位选
lcall scan ;调用扫描函数
ljmp main
scan: mov P1,#0f0h
mov a,90h ;读引脚
cjne a,#0f0h,start0 ;
ljmp exit
start0: lcall delay
mov P1,#0f0h
mov a,90h ;再次读引脚
cjne a,#0f0h,start1
ljmp exit
start1: mov r3,a ;存取行的码值
mov P1,#0fh
mov a,90h ;
cjne a,#0fh,start2
ljmp exit
start2: lcall delay
mov P1,#0fh
mov a,90h ;读取列码值
mov r2,a
cjne a,#0fh,strat3
ljmp exit
strat3: ;mov r2,a
anl a,#0fh
mov r2,a
mov a,r3
anl a,#0f0h
orl a,r2
; orl a,r3
mov 60h, a ;存取键的码值
mov r5,#00h
mov dptr,#cod
w1: mov a,r5
movc a,@a+dptr ;开始查表
inc r5
cjne a,60h,w1 ;直到查表结束
lcall display ;查到后开始显示
exit: ret
display:mov a,r5 ;显示的数值代号存在r5中
subb a,#01h
mov dptr,#num
movc a,@a+dptr
mov P3,a ;送数码管段码
ret
delay: MOV R5,#10
D2: MOV R6,#2
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
ORG 0500H
num: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,080H,90H,88h,83h,0c6h,0a1h,86h,8eh
org 0550h
cod: db 0eeh,0deh,0beh,7eh, 0edh,0ddh,0bdh,7dh
db 0ebh,0dbh,0bbh,7bh,0e7h,0d7h,0b7h,77h
end
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1