⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16动态按键扫描方法2.asm

📁 这是2008年stc程序个人设计汇总
💻 ASM
字号:
;本程序需要观看LED显示,请将CZ2和P1口用排线连接起来
org 00h
mov dptr,#ledtab

mov r1,#0

main:
mov a,r1     ;累加器读入按键值,中放入多少数,数码管将会显示几,只要在你的表中定义了LED的点亮规则,改9为4就显示4
movc a,@a+dptr     ;这是唯一的查表指令,作用就是读出DPTR中的表名中的第几个数的数据.
cpl a ;可以显示阴文或者阳文,ledtab是顺序存放的0123456789abcdef的LED笔画关系,根据数码管的共阴或者共阳,有时高电平是点亮,有时低电平是点亮.
mov p1,a   ;放到P1口,显示出字符


call key

jmp main  

key:;这是站长后来经常用的键盘扫描程序,现在也只用了四种指令,以前的要占58行,现在的程序只有39行
;;说明:五一电子提供的本例子程序不是从书上和网上抄的,甚至思路都是原创的,写程序是想到哪儿就写到哪儿,最后才写成这样,
;所以,请大家学习和理解这其中的思路,如果跟某些书上、网上的思路或者代码有相同或者近似,纯属巧合!
mov p0,#00001111b    
mov a,p0
mov p0,#11110000b
add a,p0
kn0:cjne a,#01110111b,kn1
mov r1,#0
kn1:cjne a,#10110111b,kn2
mov r1,#1
kn2:cjne a,#11010111b,kn3
mov r1,#2
kn3:cjne a,#11100111b,kn4
mov r1,#3
kn4:cjne a,#01111011b,kn5
mov r1,#4
kn5:cjne a,#10111011b,kn6
mov r1,#5
kn6:cjne a,#11011011b,kn7
mov r1,#6
kn7:cjne a,#11101011b,kn8
mov r1,#7
kn8:cjne a,#01111101b,kn9
mov r1,#8
kn9:cjne a,#10111101b,kn10
mov r1,#9
kn10:cjne a,#11011101b,kn11
mov r1,#10
kn11:cjne a,#11101101b,kn12
mov r1,#11
kn12:cjne a,#01111110b,kn13
mov r1,#12
kn13:cjne a,#10111110b,kn14
mov r1,#13
kn14:cjne a,#11011110b,kn15
mov r1,#14
kn15:cjne a,#11101110b,kend
mov r1,#15
kend:ret








ledtab: db 11101101b,00000101b,11100011b,01100111b,00001111b,01101110b,11101110b,00100101b,11101111b,01101111b,10101111b,11001110b,11101000b,11000111b,11101010b,10101010b

end


;最后告诉大家:矩阵键盘有一个致命的弱点,即不能有效的解决多键同时按的问题,这可是我的心得\理论验证和实践验证的结果
;如果大家需要实时性强,并且需要检测多键同时按状态的话,就不能用矩阵键盘了.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -