java怎么拦截某个对象
367
2022-10-29
单片机键盘接口技术的基础知识
2、键盘扫描程序
(2)作用:判有无键按下
(3)出口状态:(A)=0表示无键按下,
(A)≠0表示有键按下。
(4)源程序
3、取键值程序
(1)名称与入口地址:KEY-GET。
(2)作用:取按键键值。
(4)出口状态:(A)=按键键值,0~F为数字键,10H~17H为功能键。
(5)程序设计基本思想
①调用键盘扫描程序判有无键按下,若无键按下则继续判断,若有键按下则取按键键值。在介绍取按键键值的方法之前先介绍列扫描码的概念。
②列扫描码
列扫描码共8位,其中有1位为0,其它各位为1,初始值为11111110,该初始值存放在R2中,如图8-27所示,0所在列的列号j存放在R4中,当第j列有键按下时,按键所在行为低电平0,通过查行值是否为0,可确定按键的行号与列号,并据此算出按键键值。因此列扫描码的作用是确定第几列有键按下。
③送列扫描码
列扫描码由R2通过累加器A传送给8155B口,并由8155B口输出给键盘电路的8根列线。8根列线中,第j列为0,其余各列为1。
④取行值
从PC口的PC.0~PC.2读行信号,若读出的行值均为1,说明第j列无键按下,将R2中的扫描码左移1位,并将列号j存储寄存器R4加1,转③重新送扫描码,查下一列有无键按下。若读出第i行的行值中为0,说明在第i行与第j列处有键按下,应计算键值。
⑤计算键值
若读出第i行为0,则说明第i行与第j列处有键按下,由扫描码中0所在列号j与行值为0的行号i可计算出按键键值:
键值=i×8+j。(式中i=0~2,j=0~7)
例如:第0列与第0行处的按键按下,键值=0×8+0=0,即数字0键。
第0列与第1行处的按键按下,键值=1×8+0=8,即数字8键。
第0列与第2行处的按键按下,键值=2×8+0=10H。
由图8-27可看出,上述计算公式是完全正确的。
因为所取键值存放在累加器A中,列号j存放R4中,第i行为0可通过PC.i=0进行判断,所以按键键值计算公式可改为
(6)流程图:如图8-29所示。
(7)源程序
思考题:如何使0~7键与8~F键的键值互换,即按0键时显示8,按8键时显示0等?提示:将取键程序KEY_GET中的指令①与②互换即可。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~