cc2530按键中断控制

 时间:2024-10-13 12:29:49

1、新建工程首先新建工程,并加以简单配置,可以参考我的分享:《IAR如何建立工程》,如下为硬件电路图:

cc2530按键中断控制

2、cc25补朱锚卦30 外部中断查看cc2530 datasheet可以知道,2530的所有外部引脚均可以配置为中碘钹阏螗断模式,如下图所示:P0\P1\P2 中,P0.0-0.7共享一个中断地址,P1.0-1.7共享一个中断地址,P2.0-P2.3共享一个中断地址。

cc2530按键中断控制

3、PxIEN在引脚中断功能配置时,常需要设置P0IEN,主要是开启/关闭引脚的中断功能。如下图所示,为1时开启,为0时关闭中断。开启S1按钮中断:P0IEN |= BIT4;

cc2530按键中断控制

4、PICTLPICTL可以控制Px口中断触发信号:上升沿触发、下降沿触发。由于按键在未按下时处于高电平,按下后为低电平,松开后又为高电平,所以会产生下降沿触发信号,配置为下降沿触发即可:PICTL |= BIT0; //falling edge

5、IEN1除了配置引脚,还需要开启端口引脚中断使能,如下所示开启PO口中断使能:IEN1 |= BIT5; //P0 interrupt

6、PxIFG在开启中断前需要先清除中断标志,以免误入中断造成系统混乱。P0IFG &= ~BIT4;

7、系统中断使能学习51都知道,在任何中断操作时,都需要开启系统中断:EA = 1; //system interrupt open

8、中断函数书写#pragma vector = P0INT_VECTOR__interrupt void P0_isr(void){ wg_waitUs(10); 霸烹钟爷P0IFG &= ~BIT4; P0IF &= ~BIT4; P1_0 = ~P1_0; //led1 trigger}其中wg_waitUs()是延时函数,起到按键消抖作用。

9、代码框架void wg_ledInit(void){ P1DIR |= 幞洼踉残BIT0; P1 |= BIT0;}void wg_btnIn足毂忍珩it(void){ P0IEN |= BIT4; // P0.4 button input PICTL |= BIT0; //falling edge IEN1 |= BIT5; //P0 interrupt P0IFG &= ~BIT4; EA = 1; //system interrupt open}void wg_waitUs(uint16 duration){ while (duration--) { asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); }}void main(void){ wg_ledInit(); wg_btnInit(); //loop for(;;) { ;// }}#pragma vector = P0INT_VECTOR__interrupt void P0_isr(void){ wg_waitUs(10); P0IFG &= ~BIT4; P0IF &= ~BIT4; P1_0 = ~P1_0; //led1 trigger}

  • 如何移民到新加坡
  • 如何办理法国签证?
  • KTV装修风格大全
  • 烧烤的调料怎么配
  • 家用洗车器怎么样?家用洗车器哪种好?
  • 热门搜索
    年月日手抄报 崇尚英雄精忠报国手抄报 有关端午节的手抄报 小学英语手抄报图片 英语国庆节手抄报 清明手抄报资料 手抄报 国庆节 教师节手抄报内容文字 推广普通话手抄报内容 数学故事手抄报