按键的长按与短按(基于MSP430F5529)
来源:互联网 发布:阿里云api 编辑:程序博客网 时间:2024/05/20 02:28
长按与短按的区别只是加上一个适当的延时然后再去判断引脚状态。
定义:
#define KEYDIR P2DIR
#define KEYIN P2IN
#define KEYIFG P2IFG
#define KEYIE P2IE
#define KEYIES P2IES
#define KEYREN P2REN
#define S1 BIT0
extern unsigned char key_key;
在中断中处理长按与短按:
#pragma vector=PORT2_VECTOR //声明中断向量地址
__interrupt void GPIOIntHandler(void)
{
unsigned int IntState,vextend,cv;
unsigned long i;
IntState=KEYIFG;
if (IntState & S1)//按键按下时
{
vextend=0;
cv=0;//长按标志位清零
while (KEYIN& S1==S1)//按键处于按下状态则一直循环
{
for(i=1000;i>0;i--);//适当的延时
vextend++;//计数值加1
if(vextend==2500)//如果计数值等于2500,则说明处于长按状态(此处时间可以根据自己的需求进行设定)
{
vextend=0;//计数值清零
while(KEYIN& S1==S1)//按键依然处于按下状态
{//进入长按状态处理
if(key_key==99)
key_key=0;
else
key_key++;
LCD_ShowNum(0,0,key_key,3);
for(i=2000000;i>0;i--);//适当的延时为了不让显示过快的变化
cv=1;//长按状态的标志置1(表示进入过长按处理程序)
}
}
}
if(cv==0)//长按状态的标志为0时
{
if(key_key==99)
key_key=0;
else
key_key++;
LCD_ShowNum(0,0,key_key,3);
}
}
KEYIFG &=~(S1);//中断标志位清零
}
- 按键的长按与短按(基于MSP430F5529)
- 基于状态机的单个按键长按,短按实现复用
- Android 按键长按与短按识别
- Android按键长按与短按事件
- 【按键】短按,长按,按键释放,三种模式的按键扫描程序(软件消抖动)
- 【按键】短按,长按,按键释放,三种模式的按键扫描程序(软件消抖动)--- 矩阵键盘
- 第十一节:同一个按键短按与长按的区别触发
- 新型的按键扫描程序(转)长按 短按 写的很棒
- 新型的按键扫描程序(转)长按 短按 写的很棒
- 新型的按键扫描程序(转)长按 短按 写的很棒
- 【转】按键长按与短按处理程序[C语言]--通過測試
- 用状态机写的 按键短按和长按的程序
- 可以实现短按和长按的按键扫描小程序
- Android系统中自定义按键的短按、双击、长按事件
- Android系统中自定义按键的短按、双击、长按事件
- SPWM波在单片机上的实现与调节(基于MSP430F5529)
- 捕捉Power键的长按与短按处理
- 捕捉Power键的长按与短按处理
- Xcode 升级之后安装插件管理工具
- 南阳oj 233 sort it
- 2016.09.10【初中部 NOIP提高组 】模拟赛C
- 台州学院acm:3128 简单版贪吃蛇
- Webpack+React+ES6开发模式入门指南
- 按键的长按与短按(基于MSP430F5529)
- 高德api 实现定位 marker 路线规划
- 课后小结
- 2016.9.10GDOI组模拟总结
- env: ruby_executable_hooks: No such file or directory的解决办法
- 虚拟网卡在network namespace内无法ping通广播地址
- 兼职网站
- CSS实现居中对齐
- XSS跨站脚本攻击过程最简单演示