#include "hal.h" #include "RF04EB.h"
#define BUTTON_PUSH_IF_MASK 0x02
void main(void) { INIT_GLED(); INIT_BUTTON(); P0IFG = 0x00; //P0口中断状态标志 对应的1表示有中断发生 初始化状态没中断发生
PICTL |= 0x08; //中断控制 P0_3~ P0_0中断使能
PICTL |= 0x01; //P0_7~P0_0下降沿产生中断
INT_ENABLE(INUM_P0INT,INT_ON);//P0中断使能
INT_GLOBAL_ENABLE(TRUE);
while(1);//循环等待中断事件的到来
} //中断服务子程序 #pragma vector = P0INT_VECTOR __interrupt void P0_IRQ(void) {//判断按键S1是否被按下 if(P0IFG & BUTTON_PUSH_IF_MASK) { GLED ^=1; P0IFG &=~BUTTON_PUSH_IF_MASK;//清除中断标识位
} P0IF = FALSE; //清除P0口的所有中断
}
|
其中INIT_BUTTON定义如下:
#define INIT_BUTTON() (P0DIR &=~0x02) 即将P0_1口设置为输入模式
该函数的主要功能是:在按下开发板上的S1按键式,绿色的灯会点亮。
其中INT_ENABLE的定义如下:
#define INT_ENABLE(inum, on) \ do { \ if (inum==INUM_RFERR) { RFERRIE = on; } \ else if (inum==INUM_ADC) { ADCIE = on; } \ else if (inum==INUM_URX0) { URX0IE = on; } \ else if (inum==INUM_URX1) { URX1IE = on; } \ else if (inum==INUM_ENC) { ENCIE = on; } \ else if (inum==INUM_ST) { STIE = on; } \ else if (inum==INUM_P2INT) { (on) ? (IEN2 |=
|
阅读(2806) | 评论(0) | 转发(5) |