请教按键处理程序
现在碰到一个按键处理的问题请高手指点下思路 我用汇编写的我需要通过按键控制输出一定时间的低电平后再置高, 按下后松开与不松开都执行同样的一次操作 直到按键执行下一次按键操作再执行相同德操作 这个在程序里面怎么实现??? 怎么设置标志位??? if(key电平是低)
{
key计数++;
if(key计数>常量1) key=常量1
if(key计数==常量2) //常量2<常量1
{
key按下,执行程序;
}
}
else key计数=0; 我就说一下大致的思路吧
用到的寄存器:
状态寄存器KFLAG
计时寄存器KSECL
工作状态寄存器WFLAG
按键检测部分:程序隔一段时间检测按键的IO口状态,若为低电平则致kflag的0位为1。同时开始ksecl计时,在计时到消抖的时间后清零,同时将KFLAG的1位和7位置一,第1位为按键有效标志位。而第7位为长按键标志位,按键检测时若这一位为1且按键IO口为低电平则不处理按键程序。这样保证按下后不松开也只处理一次,一直到按键IO口为高电平,这时清掉所有的寄存器和标志位。
按键处理部分:若KFLAG的第1位为1则致WFLAG的0位为1。同时清零kflag的0位。
工作输出部分:根据wflag的0位输出固定时间的低电平,输出完后清零。 还需要将消除按键抖动加进去,不然很受伤
页:
[1]