CC2530外部中断

2019-04-15 18:18发布

一切都在代码中


#include #define uchar unsigned char #define uint unsigned int #define LED P1_1 #define kEY P0_1 void Delayms(uint); void InitLed(void); void KeyInit(); uchar KeyValue = 0; /*** 延时函数 */ void Delayms(uint xms) { uint i,j; for(i = xms;i > 0;i--) for(j = 587;j>0;j--); } /**** LED初始化程序 */ void InitLed(void) { P1DIR |= 0x02;//设置为输出 LED = 1;//LED1熄灭 } /** KEY初始化程序--外部中断 */ void KeyInit() { P0IEN |= 0x02;//设置各个控制口的中断使能,0为中断禁止,1为中断使能 / /允许按键 P0_1中断使能 PICTL |= 0x02;//0---3设置各个端口的中断触发方式,0为上升沿触发,1为下降沿触发 IEN1 |= 0x20; //允许P0口中断 中断使能1 0为中断禁止,1为中断使能 P0IFG =0x00;//终端状态标志寄存器,当输入端口有中断请求,相应的位置1 EA =1;//开启总中断 /** 外部中断操作思路: 1、 首相设置中断使能为,确认让那个IO口进行中断使能进行中断操作,使用的P0IEN寄存器进行微操作,确认哪一个进行中断操作 0禁止中断操作, 1 进行终端操作 2、 然后设置进行中断的条件(上升沿进行中断/下降沿进行中断) 使用的是PICTL寄存器 0上升沿进行中断, 1进行下降沿进行中断 3、 中断使能(一共有三个 IEN0 IEN1 IEN2) 0 中断禁止 1中断使能 和上边的第一步有什么区别??????????????? 4、 将终端状态标志位进行置 0 ,他是中断的状态的标志,只要条件完全满足,中断开始,这个P0IFG就会自动置 1,但是中断完成后要记得将他重新置 0 5. 打开总中断 */ } /** 中断处理函数 */ /** 格式 #pragma vector = 中断向量,紧接着是中断处理程序 **/ #pragma vector = P0INT_VECTOR __interrupt void P0_ISR(void) { Delayms(10);//去除抖动 LED = ~LED; P0IFG = 0;//清除中断标志 P0IF = 0;//清除中断标志???为啥还要用 搜不到 } /** 主函数 */ void main(void) { InitLed(); KeyInit(); while(1) { } }