CC2530利用按键中断点亮第一个led灯
创建工程可以查看我的第一篇文章
下面是代码
#include "main.h"
void INITLED(){
P1SEL &= ~0x03;
P1DIR |= 0x03;
P1INP &= ~0x03;
//P2INP |= 0x40; //下拉
}
void INITKEY(){
//io设置
P0SEL &= ~0x02;
P0DIR &= ~0x02; //输入
P2INP &= ~0x20; //上拉
//中断设置
PICTL |= 0x02; //下降沿触发
P0IEN |= 0x02; // P0_1中断打开 bit[2]
IEN1 |= 0x20; //端口0中断打开 bit[5]
IEN0 |= 0x80; //总中断打开 bit[7]
P0IFG |= 0x00; //清空中断标志
P0IF = 0l;
}
void display(uint x){
//延时大概1ms
for(uint i=0;i<x;i++)
for(uint j=0;j<535;j++);
}
void main(){
INITLED();
INITKEY();
LED1 = 1;
while(1);
}
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(){
if(P0IFG >0){
display(10);
P0IFG = 0;
if(P0IFG == 0){
LED1 = ~LED1;
}
}
P0IFG &= ~0x02; //清空中断标志
P0IF = 0l;
}
他的配置main.h文件代码为
#include <ioCC2530.h>
typedef unsigned int uint;
typedef unsigned char uchr;
#define LED1 P1_0 //led1
#define LED2 P1_1 //led2
#define KEY1 P0_1 //按键1的端口
这里是按照创思通信的底板原理图来看的。 他的LED1 接在P1_0上。KEY1 接在P0_1口。
下面为运行效果图