MSP430IO中断方式按键检测.docx

上传人:牧羊曲112 文档编号:3161587 上传时间:2023-03-11 格式:DOCX 页数:7 大小:37.72KB
返回 下载 相关 举报
MSP430IO中断方式按键检测.docx_第1页
第1页 / 共7页
MSP430IO中断方式按键检测.docx_第2页
第2页 / 共7页
MSP430IO中断方式按键检测.docx_第3页
第3页 / 共7页
MSP430IO中断方式按键检测.docx_第4页
第4页 / 共7页
MSP430IO中断方式按键检测.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MSP430IO中断方式按键检测.docx》由会员分享,可在线阅读,更多相关《MSP430IO中断方式按键检测.docx(7页珍藏版)》请在三一办公上搜索。

1、MSP430IO中断方式按键检测MSP430入门教程专题(六)IO中断方式按键检测/MSP430F14-利用IO中断方式实现按键检测程序/*/以下是结合MC430F14开发板来实现的按键检处理程序实验./分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转./例程中,单片机一直处于最低功耗状态,用户可以通过按下按键后唤醒单片机.单片机唤醒/后再进行去抖动动作.同时执行键处理程序.处理完后再次进入LPM4低功耗模式./在本程序中用户可以灵活地修改程序来实现你相关的功能./本程序适用在手持设备或电池供电的设计中.此程序结构比较通用,级用户可参与或套用修改./应用

2、目标板:MC430F14x开发板/*/#include <msp430x14x.h>#define key1 0x01#define key2 0x02#define key3 0x04#define delay_small 200#define key_1 0xfe /定义返回键值1#define key_2 0xfd /定义返回键值2#define key_3 0xfb /定义返回键值3void key_process_0(void);void key_process_1(void);void key_process_2(void);void key_check (void);un

3、signed char key_value; /定义键值全局变是/*void main(void)WDTCTL = WDTPW + WDTHOLD; / 停止看门狗P1OUT |= BIT1; /关LEDP1DIR |= BIT1; / 设置P1.1为输出/以下设置是采用不同的编写方式,新手可以参考使用P2IE |= BIT0+BIT1+BIT2; / P2.0-P2.2 IO口中断使能P2IES |= 0x07; / P2.0-P2.2 IO口边沿触发中断方式设置P2IFG &= (key1+key2+key3); / P2.0-P2.2 IO口中断标志位清除 _EINT; /中断允许/ 或

4、直接写成 _BIS_SR(LPM4_bits + GIE); LPM4; / 进入低功耗LPM4,此时单片机功耗最低while(1)P2IE &= (BIT0+BIT1+BIT2); / P2.0-P2.2 IO口关闭中断允许P2IFG &= 0x07; / P2.0-P2.2 IO口中断标志位清除key_check ;switch (key_value) /对键值进行处理.采switch语法结构查询case key_1: key_process_0; /调用键处理程序1break;case key_2: key_process_1; /调用键处理程序2break; case key_3: k

5、ey_process_2; /调用键处理程序2break;default: break;key_value=0x00; /键值清除P2IE |= BIT0+BIT1+BIT2; / P2.0-P2.2 IO口中断使能P2IFG &= 0x07; / P2.0-P2.2 IO口中断标志位清除LPM4;/*/P2中断服务程序#pragma vector=PORT2_VECTOR_interrupt void Port_2(void) switch (P2IFG) case 0x01: key_value=0xfe;break;case 0x02: key_value=0xfd;break;case

6、 0x04: key_value=0xfb;break; default: P2IFG &= 0x07; / P2.0-P2.2 IO口中断标志位清除break; P2IFG &= 0x07; / P2.0-P2.2 IO口中断标志位清除LPM4_EXIT;/*void key_process_0(void) /值处理,用户可以自己修改.P1OUT = BIT1; /*void key_process_1(void) /值处理,用户可以自己修改.P1OUT = BIT1; /*void key_process_2(void) /值处理,用户可以自己修改.P1OUT = BIT1; /*void key_check (void) unsigned int i;for(i=0;i<delay_small;i+); /延时去抖动if(0xff !=(P2IN & 0xf8) /是否有键存在?while(0xff !=( P2IN | 0xf8); /一直等待按键松开elsekey_value = 0x00; /延时去抖动无键按下,则清除键变量./*/如果在按键电路中加RC滤波电路,实现按键去抖动的效果会更显著此.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号