MSP430利用IO中断方式来实现按键检测

发布者:温暖的拥抱最新更新时间:2020-02-08 来源: eefocus关键字:MSP430  IO中断  按键检测 手机看文章 扫描二维码
随时随地手机看文章

/************************************************************************
**********MSP430F14-利用IO中断方式实现按键检测程序*********** 
以下是结合MC430F14开发板来实现的按键检处理程序实验。分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转。例程中,单片机一直处于最低功耗状态,用户可以通过按下按键后唤醒单片机。单片机唤醒后再进行去抖动动作,同时执行键处理程序;处理完后再次进入LPM4低功耗模式。


在本程序中用户可以灵活地修改程序来实现你相关的功能。

本程序适用在手持设备或电池供电的设计中。此程序结构比较通用,用户可参与或套用修改.

应用目标板:MC430F14x开发板
*************************************************************************/
      #include

      #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      //定义返回键值3

      void key_process_0(void);
      void key_process_1(void);
      void key_process_2(void);
      void key_check (void);
      unsigned char key_value;          //定义键值全局变量
      //*************************************************************************
      void main(void)
      {
       WDTCTL = WDTPW + WDTHOLD;              // 停止看门狗
       P1OUT |= BIT1;                         //关LED
       P1DIR |= 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();                              //中断允许
        // 或直接写成 _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();      //调用键处理程序1
                    break;
          case key_2: key_process_1();      //调用键处理程序2
                    break;  
          case key_3: key_process_2();      //调用键处理程序2
                    break;
          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 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        
        if(0xff !=(P2IN & 0xf8))           //是否有键存在?
         {
          while(0xff !=( P2IN | 0xf8));   //若有按键,一直等待按键松开(按键按下后,对应管脚输出入为1,退出while、if,标明一直有按键)
         }
        else
         key_value = 0x00;                //延时去抖动无键按下,则清除键变量.
      }  //如果在按键电路中加RC滤波电路,实现按键去抖动的效果会更显著此.


关键字:MSP430  IO中断  按键检测 引用地址:MSP430利用IO中断方式来实现按键检测

上一篇:MSP430x149x之----------外部中断
下一篇:MSP430G2553(一)IO外部中断说明

推荐阅读最新更新时间:2024-10-18 21:06

MSP430 DM430-A开发板学习笔记(五)IO中断方式来实现按键检测
1.按键说明 在MSP430开发板中,有四个按键连接到P1,即 2.中断流程图 中断流程图如下,在用C语言实现我们想要的功能的时候,我们可能需要使用switch、if语句对某些变量进行多次判别,这样会加长我们的代码并且不易观看,使用外部中断的好处就是: 1.可以在中断服务程序中对变量的值进行修改,从而达到随时更改变量值的目的 2.对一些变量可以进行单独控制,减少主程序代码的长度 3.中断配置 我们要开启P1口的低四位中断,使用下降沿触发中断,意思就是,我们按下按键,某个p1口由高电平状态→低电平状态,便产生了一个下降沿,从而触发了中断程序,代码如下: //*******************************
[单片机]
<font color='red'>MSP430</font> DM430-A开发板学习笔记(五)<font color='red'>IO中断</font>方式来实现<font color='red'>按键</font><font color='red'>检测</font>
MSP430入门教程专题(六)——IO中断方式按键检测
//MSP430F14-利用IO中断方式实现按键检测程序 /*************************************************************************/ //以下是结合MC430F14开发板来实现的按键检处理程序实验. //分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转. //例程中,单片机一直处于最低功耗状态,用户可以通过按下按键后唤醒单片机.单片机唤醒 //后再进行去抖动动作.同时执行键处理程序.处理完后再次进入LPM4低功耗模式. //在本程序中用户可以灵活地修改程序来实现你相关的功能. //本程序适用在手持设备或电池供电的设计
[单片机]
MSP430利用IO中断方式来实现按键检测
/************************************************************************ **********MSP430F14-利用IO中断方式实现按键检测程序*********** 以下是结合MC430F14开发板来实现的按键检处理程序实验。分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转。例程中,单片机一直处于最低功耗状态,用户可以通过按下按键后唤醒单片机。单片机唤醒后再进行去抖动动作,同时执行键处理程序;处理完后再次进入LPM4低功耗模式。 在本程序中用户可以灵活地修改程序来实现你相关的功能。 本程序适用在手持设备或电池
[单片机]
MSP430F149-利用IO中断方式实现按键检测程序
#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 //定义返回键值3 void key_process_0(void); void key_process_1(void); void key_process_2(void); void key_check (void); unsigned char key_value
[单片机]
MSP430入门教程专题(六)——IO中断方式按键检测
//MSP430F14-利用IO中断方式实现按键检测程序 //以下是结合MC430F14开发板来实现的按键检处理程序实验. //分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转. //例程中,单片机一直处于最低功耗状态,用户可以通过按下按键后唤醒单片机.单片机唤醒 //后再进行去抖动动作.同时执行键处理程序.处理完后再次进入LPM4低功耗模式. //在本程序中用户可以灵活地修改程序来实现你相关的功能. //本程序适用在手持设备或电池供电的设计中.此程序结构比较通用,级用户可参与或套用修改. //应用目标板:MC430F14x开发板 #include msp430x14x.h #defin
[单片机]
MSP430入门教程专题(五)——IO中断检测
MSP430入门教程专题(五) IO中断检测 //MSP430F14-IO口中断演示程序 //以下是结合MC430F14开发板来实现的按键检处理程序实验. //设置P2.0为中断口,通过对IO的下边沿触发,使其中断,并将板上的D2 LED取反. //应用目标板: MC430F14x开发板 #include msp430x14x.h void main(void) { WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 P1DIR |= BIT1; // 设P1.1为输出 P2IE |= BIT0;
[单片机]
msp432快速入门第六节之按键扫描和GPIO中断操作
(一)按键扫描 (1)配置引脚 在按键扫描这一节,仅需要配置好引脚即可,打开TI的GPIO驱动库,可以看到GPIO设置函数H文件如下: 在这个函数上方有对函数的说明: 解释为:该函数配置MSP432的GPIO引脚为输入模式,没有指明被配置的引脚是否被上拉或者下拉,当然如果需要配置输入上拉或者输入下拉需要使用此函数配置: 在这里我们直接使用普通配置,配置引脚为输入即可。 如下进行引脚初始化:(板载两个按键,一左一右均可以使用,注意复位键是在上面的) //key pin init void Key_Init(void) { GPIO_setAsInputPinWithPullUpResistor(KEY_LEFT
[单片机]
msp432快速入门第六节之<font color='red'>按键</font>扫描和GP<font color='red'>IO中断</font>操作
MSP430G2553测试程序(状态机检测按键
//原始状态P1.6亮,P1.0暗,利用状态机进行按键检测,按下并释放的瞬间P1.0翻转,P1.6翻转 // // MSP430G2xx3 // ----------------- // /|| XIN|- // | | | // --|RST XOUT|- // P1.3|KEY P1.6|-- LED // | P1.0|-- LED // Built with IAR Embedded Workbench Version: 5.40 / // Timer A0 interrupt service routine #pragma vector=TIMER0_A0_VECTOR
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved