宏定义
#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) { } }