此帖出自微控制器 MCU论坛
最新回复
Push_Key = P1IFG&(~P1DIR);
——首先,这段程序出现在外部中断服务里面,外部中断是由上升沿或者下降沿触发的。只有输入管脚才能触发外部中断,否则是不安全的设计。
PDIR值为1的位是表示输出管脚,~PDIR则表示输入管脚。
将P1IFG与其进行按位与运算,得到的是触发中断的按键位,也就是按下了哪个按键。
将按键按下这一动作存入Push_Key变量。
__delay_cycles(10000);
延时10000个机器周期之后,你不能保证该按键依旧被按下
if((P1IN&Push_Key)==0)
所以需要再次检测该按键对应的输入信号是否为低(估计管脚接上拉电阻,按键连GND,这么一来按键按下为低电平,按键松开为高电平。)其实这也就是所谓的软件延时消抖了。
{
switch(Push_Key)
再判断是哪个按键被按下
{
case BIT3:P13_Onclick();break;
default: break;
进行相应的处理
}
}
详情
回复
发表于 2015-11-3 09:43
| ||
|
||
| |
|
|
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
| |
|
|
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWorld Datasheet 技术支持