前面一节讲解了中断初始化和中断函数,下面是关于中断的代码示例。
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0
#define LED2 P1_1
#define SWITCH P0_1
//初始化P1_0和P1_1的端口
void InitIO(void){
P1DIR |=0x03; //设置状态为输出模式
LED1=1; //点亮LED
LED2=1; //点亮LED
}
//延时函数
//这是简单的延时函数对于初学者可以使用
void Delay(uint time){
uint i,j;
for(j=0;j<5;j++){
for(i=0;i<time;i++);
}
}
void InitswitchIO(void){
//初始化P0_1端口的状态
P0SEL &= ~0x02;
P0DIR &= ~0x02;
P0INP &= ~0x02;
P2INP &= ~0x20;
//初始化中断
PICTL |=0x01;//设置下降沿
P0IEN |=0x02;//P0_1端口中断使能寄存器
P0IE=1; //中断使能寄存器2
EA=1; //总中断开启
P0IFG |=0x00;//P0端口中断状态标志寄存器
}
#pragma vector = P0INT_VECTOR
__interrupt void P0_int(void)
{
if(P0IFG & 0x02)
{
EA=0; //总中断
Delay(10000);//延长时间
LED1=~LED1;
P0IFG &= ~0x02;//手动复位
}
P0IF = 0;
EA=1;
}
void main(){
//端口初始化函数
InitIO();
InitswitchIO();
while(1){
__interrupt void P0_int();
LED2=~LED2;
Delay(5000);
}
}
示例代码仅供参考 部分有误