CC2530学习笔记の百思才得其解的问题——Time 1查询方式

       一段CC2530定时器T1查询方式中断控制LED闪烁的代码浪费了我一个小时啊!真不知是人家的示例代码写的太抽象了,还是自己的C语言功底太菜了。最终发现自己死在了count++ >= 1这条普通的不能再普通的语句上了。下面上代码,代码注释会有详细的讲解!语言表达能力太差,不喜请喷!!!

#include 

typedef unsigned char uchar;
typedef unsigned int  uint;

#define LED1 P1_0       // P1.0口控制LED1

void InitLed(void)
{
    P1DIR |= 0x01;      //P1.0定义为输出
    LED1 = 1;           //使LED1灯上电默认为熄灭     
}

void InitT1()
{
    T1CTL = 0x0d;       //128分频,自动重装 0x0000-0xFFFF 
    //T1STAT= 0x21;       //通道0,中断有效(这条语句此处没用,用到协议栈时才会用到,淘宝店家是这么说的)   
}

void main(void)
{
    uchar count=0;
    
    InitLed();		     //调用初始化函数
    InitT1();                
    
    while(1)
    {
        if(IRCON > 0)    //这个寄存器中的每一位都是中断标志,中断发生时硬件置1
        { 
            IRCON=0;     //清除中断标志
/*********************** count++ >=1 的意思是第一次中断发生时,count是0,
                         不满足>=1的条件,故led状态不变,counnt++变为1了,
                         第二次中断发生时,count满足了>=1的条件,故led状
						 态改变,所以两次中断改变一次led状态 **********************************/            
            if(count++ >= 1) //约1s周期性闪烁,示波器测大约为1025MS
            {
              count=0;
              LED1 = !LED1;  //LED1闪烁        
            }
        } 
    }
}


                      在此感谢深圳安联德科技的郑工,在他的引导下,我才理解了这个问题。

你可能感兴趣的:(【CC2530与Zigbee】)