CC2530————中断方式控制LED灯

#include “ioCC2530.h” // 引用头文件,包含对CC2530的寄存器、中断向量等的定义
/********************************************************************/

#define LED1 P1_0 // P1_0定义为P1.0
#define SW1 P1_2 // P1_2定义为SW1

/*********************************************************************

  • 函数名称:init

  • 功 能:初始化系统IO,使得P1_2引脚能接受并处理中断

  • 入口参数:无

  • 出口参数:无

  • 返 回 值:无
    ********************************************************************/
    void init()
    { //P1SEL &=~0x3D; // 设置LED1、SW1为普通IO口
    P1DIR |= 0x39 ; // 设置LED1为输出
    P1DIR &= ~0x04; //Sw1按键在 P1.2,设定为输入
    P1 &= ~0x39 ;
    PICTL &= ~0x02; //配置P1口的中断边沿为上升沿产生中断
    P1IEN |= 0x04; //使能P1.2中断
    IEN2 |= 0x10; //使能P1口中断

    EA = 1; //使能全局中断
    }

/*********************************************************************

  • 函数名称:EINT_ISR
  • 功 能:外部中断服务函数
  • 入口参数:无
  • 出口参数:无
  • 返 回 值:无
    *******************************************************************/
    #pragma vector=P1INT_VECTOR
    __interrupt void P1_INT(void)
    {
    EA = 0; // 关闭全局中断
    /
    若是P1.2产生的中断 */
    if(P1IFG & 0x04)
    {
    LED1=!LED1;
    P1IFG &= ~0x04; // 清除P1.2中断标志
    }
    EA = 1; // 使能全局中断
    }

/*********************************************************************

  • 函数名称:main
  • 功 能:main函数入口
  • 入口参数:无
  • 出口参数:无
  • 返 回 值:无
    ********************************************************************/
    void main(void)
    {
    init(); //调用初始化函数
    while(1)
    {
    }
    }

猜你喜欢

转载自blog.csdn.net/News53231323/article/details/113186890