找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4866|回复: 0
打印 上一主题 下一主题
收起左侧

MSP430单片机操作中断嵌套C语言程序

[复制链接]
跳转到指定楼层
楼主
ID:51773 发表于 2013-7-14 04:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSP430单片机使用P1.5、P1.6两个I/O口接按键,用于13xx 14xx 15xx 16xx系列。MCLK
  1. #include <MSP430x14x.h>

  2. //选用端口定义
  3. #define KEYDIR P1DIR
  4. #define KEYIES P1IES
  5. #define KEYIE P1IE
  6. #define KEYIN P1IN
  7. #define KEYIFG P1IFG

  8. //定义键盘管脚
  9. #define KEY0 BIT5
  10. #define KEY1 BIT6

  11. #define SET_GIE __bis_SR_register(GIE)  //置位全局中断控制位
  12. /*****************************************************************************
  13. 初始化
  14. *****************************************************************************/
  15. void InitKey()
  16. {
  17.     KEYDIR &= ~(KEY0+KEY1);     //设置端口为输入
  18.     KEYIES |= KEY0+KEY1;        //设置下降沿中断
  19.     KEYIE |= KEY0+KEY1;         //打开端口中断
  20. }

  21. /*****************************************************************************
  22. 系统初始化
  23. ******************************************************************************/
  24. void InitSys()
  25. {
  26.     InitKey();
  27.     _EINT();    //打开全局中断控制,若不需要打开,可以屏蔽本句
  28. }


  29. int main()
  30. {
  31.     WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗
  32.     InitSys();
  33.     LPM3;
  34. }

  35. /*****************************************************************************
  36. 端口1中断函数
  37. 多中断中断源:P1IFG.0~P1IFG7
  38. ******************************************************************************/
  39. #pragma vector=PORT1_VECTOR
  40. __interrupt void Port1()
  41. {
  42.     static unsigned char biaozhi=0;
  43.     if((P1IFG&BIT5) ==BIT5)
  44.     {
  45.         //处理P1IN.5中断      
  46.         SET_GIE;
  47.         P1IFG &= ~BIT5;     //清除中断标志
  48.         biaozhi=1;     
  49.         while(biaozhi==1);
  50.     }
  51.     else if((P1IFG&BIT6) ==BIT6)
  52.     {
  53.         //处理P1IN.6中断
  54.         P1IFG &= ~BIT6;     //清除中断标志
  55.         biaozhi=0;     
  56.     }
  57.     else
  58.     {
  59.         P1IFG =0;
  60.     }

  61.     LPM3_EXIT;  //退出中断后,退出低功耗模式。若退出中断后希望保留低功耗模式,需
  62.                     //将本句屏蔽
  63. }
复制代码
CO   ACLK :32.768K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表