CC2530外部中断的中断标志有两个(这里我以P0_4为例)P0IFG和P0IF,检测到相应的中断信号时,标志位应该是会自动置位的,即P0IFG=0X10; P0IF=1;
但是我查询检测时发现只有P0IFG被置位了,P0IF的值却没有改变。代码如下,请各位博友指教!
//外部中断查询方式
#include<ioCC2530.h>
#define led1 P1_0
//主函数
void main()
{
//P1_0 控制led灯
P1SEL&=~0X01;//P1_0 设置为通用I/O口
P1DIR|= 0X01;//P1_0 设置为输出
PICTL|= 0X01;//下降沿引起中断
while(1)
{
if(P0IF==1) //查询P0IF无效 但是如果改为if(P0IFG>0) 查询P0IFG有效
{
led1=~led1;
P0IFG=0X00;
P0IF=0;
}
}
}
下图是调试界面,添加watch后可以看到P0IFG的值是改变了的,但是P0IF的值却没有改变,这让我感到困惑,难道不是都要发生改变吗???