第七节 独立按键之中断方式
来源:互联网 发布:淘宝代发怎么发货 编辑:程序博客网 时间:2024/05/20 06:22
第七节 独立按键之中断方式
复制Key工程,重命名为KeyInterrupt。刚刚我们用查询的方式读取按键的状态。但是这种方式在实际的工程中没有实际的应用价值,下面我们采用外部中断的方式来读取按键的状态,每当按键按下时就会触发一次外部中断。为了P0.0口能够触发中断,我们需要进行如下配置:
然后就需要编写中断服务函数了。这里注意一点,在IAR中的中断函数有点特殊,格式为:
所以我们的中断函数为:
在中断中我们记录按键按下,等待应用程序处理。而在主函数中我们需要处理按键按下事件,主函数中我们对按键计数并且通过LCD显示。
每按一次按键计数加1,效果如图所示:
P0IEN |= 0X01; // P00 设置为中断方式 PICTL &=~ 0X01; // 下降沿触发 IEN1 |= 0X20; // 允许P0口中断 P0IFG = 0x00; // 清除中断标志位 EA = 1; // 开总中断
然后就需要编写中断服务函数了。这里注意一点,在IAR中的中断函数有点特殊,格式为:
#pragma vector = 中断向量__interrupt 函数
所以我们的中断函数为:
#pragma vector = P0INT_VECTOR__interrupt void P0_ISR(void){ if(0x01&P0IFG) { NewKeyValue = KEY_DOWN; // 记录按键按下 } P0IFG = 0; //清中断标志 P0IF = 0; //清中断标志}
在中断中我们记录按键按下,等待应用程序处理。而在主函数中我们需要处理按键按下事件,主函数中我们对按键计数并且通过LCD显示。
int main(void){ char LCDBuf[21]={0}; // 显存 int KeyCnt = 0; SysStartXOSC(); LCD12864_Init(); LCD12864_DisStr(1, " Key Test"); P0SEL &= ~0X01; // 设置为IO功能 P0DIR &= ~0X01; // 设置为输入功能 P0IEN |= 0X01; // P0.0 设置为中断方式 PICTL |= 0X01; // 下降沿触发 IEN1 |= 0X20; // 允许P0口中断 P0IFG = 0x00; // 清除中断标志位 EA = 1; // 开总中断 sprintf(LCDBuf, " Key Count : %d", KeyCnt++); // 按键计数 LCD12864_DisStr(3, LCDBuf); while(1) { if(KEY_DOWN == NewKeyValue) // 按键按下 { SoftWaitUs(25000); // 延时防抖 if((P0&0X01) == 0X00) // 再次确认按键是否按下 { sprintf(LCDBuf, " Key Count : %d", KeyCnt++); // 按键计数 LCD12864_DisStr(3, LCDBuf); } else { NewKeyValue = KEY_UP; // 按键松开 } } } return 0;}
每按一次按键计数加1,效果如图所示:
本文章转载自
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx
请勿用于商业
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx
请勿用于商业
0 0
- 第七节 独立按键之中断方式
- 第六节 独立按键之查询方式
- 第七节:在主函数中利用累计定时中断的次数来实现独立按键的检测
- 按键驱动的恩恩怨怨之中断方式
- 第12课第4.2节 字符设备驱动程序之中断方式的按键驱动_Linux中断处理结构
- 字符设备驱动程序之中断方式的按键驱动
- S3C2440开发板之按键中断方式驱动程序
- ARM之按键中断
- S3C6410按键驱动--中断方式
- tq2440 按键驱动 中断方式
- S3C6410按键驱动--中断方式
- S3C2416 按键驱动 --中断方式
- 中断方式获取按键值
- 【stm32f407】外部中断实现按键中断方式
- 第12课第4.1节 字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构
- 第12课第4.3节 字符设备驱动程序之中断方式的按键驱动_编写代码
- S3C2440外部中断之按键中断
- linux驱动之按键中断
- Nginx学习
- 排序 -- 思路简析(一)
- 啊违法
- 排序 -- 思路简析(二)
- shell 基础 第二部分 ( cut ,sort, wc,uniq,tee ,tr)
- 第七节 独立按键之中断方式
- Label转成URL
- 四阶幻方的穷举求解.
- IDEA快捷键
- 基于NLPIR的lucene 自定义Analyzer实现类
- oracle rman全备恢复实践
- 网页漂浮窗
- 信息学奥林匹克竞赛-小鱼的航程(改进版)
- Mysql优化中遇到的问题和感受