51单片机汇编语言独立按键检测

单片机在日常生活中用途广泛,除了可以输出外控制外部设备外,还可以检测用户实时发出的指令;这就是人机交互,要实现人机交互,需要给单片机安上输入设备,这里指定就是人们能够输入的键盘,就像个人电脑一样,给电脑输入文字、命令等。单片机的键盘可分为编码键盘和非编码键盘,这里主要分享非编码键盘的检测,以单按键检测为例。

/****************
此程序需要按键一直按下不松手,灯才会亮
松手灯就熄灭
*/
ORG 0000H
LOOP:SETB P3.2	   ;p3.2为输入引脚
JNB P3.2,LD	       ;P3.2按下执行灯亮
SETB P0.0		   ;否则灯灭
SJMP LOOP
LD:CLR P0.0
AJMP LOOP
END
 

第一个例子可以看出,要让灯亮必须一直按住按钮,这可要把人累坏。能不能按一次,灯的状态就变化一次,模拟我们日常开关灯,答案是肯定的。

/****************
此程序用一个按键模拟开灯和关灯、
按下一次按键,灯的状态取反一次
实现单按键控制开关灯,
程序有一个问题,有时按一次按键,灯的状态
并不改变,这是什么原因呢?原来机械按键有抖动
我们按一次按键,单片机扫描速度很快,它认为按下了
多次,进行逻辑判断后,确定灯的状态,可能发生很多次
翻转,造成输出不是预定的效果,这就是机械抖动。
*/
ORG 0000H

LOOP:SETB P3.2	  ;设为输入口
JB P3.2,LOOP	  ;等待按键按下
CPL F0   		  ;按下一次取反一次
JB F0,liang		  
SETB p0.0		  ;F0为0,灯灭
SJMP LOOP
l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值