CC2530:外部中断实验

外部中断LED 

#include <ioCC2530.h> 
typedef unsigned char uchar; 
typedef unsigned int uint; 
#define LED1 P1_0 // P1.0 口控制 LED1
#define KEY1 P0_1 // P0.1 口控制 S1
void DelayMS(uint msec) 
{ 
 uint i,j; 
 
 for (i=0; i<msec; i++) 
 for (j=0; j<535; j++); 
}
void InitLed(void) 
{ 
 P1DIR |= 0x01; //P1.0 定义为输出口
 LED1 = 1; //LED1 灯上电默认为熄灭 
}
void InitKey() 
{ 
 P0IEN |= 0x2; // P0.1 设置为中断方式 1:中断使能
 PICTL |= 0x1; //端口 0 下降沿触发 
 IEN1 |= 0x20; //允许 P0 口中断
 P0IFG = 0x00; //初始化中断标志位
 EA = 1; //打开总中断
}
#pragma vector = P0INT_VECTOR 
__interrupt void P0_ISR(void) 
{ 
 DelayMS(10); //延时去抖
 LED1 = ~LED1; //改变 LED1 状态
 P0IFG = 0; //清中断标志 
 P0IF = 0; //清中断标志 
}
void main(void) 
{ 
 InitLed(); //设置 LED 灯相应的 IO 口
 InitKey(); //设置 S1 相应的 IO 口
 while(1) 
 { 
 } 
} 

P0_ISR(void) 中断处理函数

描 述: #pragma vector = 中断向量,紧接着是中断处理程序

外部中断控制LED倒流水灯

#include <ioCC2530.h> 
typedef unsigned char uchar; 
typedef unsigned int uint; 
#define LED1 P1_0 //定义 P1.0 口为 LED1 控制端
#define LED2 P1_1 //定义 P1.1 口为 LED2 控制端
#define LED3 P1_4 //定义 P1.4 口为 LED3 控制端
#define KEY1 P0_1 //定义 P0.1 口为 S1 控制端
uchar KeyValue=0; //产生中断保存中断状态,1 为产生按键中断
void DelayMS(uint msec) 
{ 
 uint i,j;
 for (i=0; i<msec; i++) 
 for (j=0; j<535; j++); 
}
void InitLed(void) 
{ 
 P1DIR |= 0x13; //P1.0、P1.1、P1.4 定义为输出
LedOnOrOff(1); //使所有 LED 灯默认为熄灭状态
}
void InitKey() 
{ 
 P0IEN |= 0x2; // P0.1 设置为中断方式 1:中断使能
 PICTL |= 0x1; //下降沿触发 
 IEN1 |= 0x20; //允许 P0 口中断
 P0IFG = 0x00; //初始化中断标志位
 EA = 1; //打开总中断
}
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void) 
{ 
 if(P0IFG > 0) //按键中断
 { 
 DelayMS(10); //延时去抖 
 if(P0IFG > 0) //按键中断
 { 
 KeyValue = 1; //产生中断保存中断状态
 } 
 } 
 
 P0IFG = 0; //清中断标志
 P0IF = 0; //清端口 0 中断标志
}
void main(void) 
{ 
 InitLed(); //设置 LED 灯相应的 IO 口
 InitKey(); //设置 KEY 相应的 IO 口
 
 while(1) 
 { 
 if(KeyValue == 1) //如果按键按下 LED3、LED2、LED1 将倒序流水灯闪烁 
 { 
 LED3 = !LED3; 
 DelayMS(200); 
 LED2 = !LED2; 
 DelayMS(200); 
 LED1 = !LED1; 
 DelayMS(200); 
 KeyValue = 0; 
 } 
 } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃橘子的橘猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值