void tim0_isr (void) interrupt 1 using 1{ irtime++; //用于计数2个下降沿之间的时间}void EX0_ISR (void) interrupt 0 //外部中断0服务函数{ static uchar i; //接收红外信号处理 static bit startflag; //是否开始处理标志位if(startflag) { if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms i=0; irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1 irtime=0; i++; if(i==33) { irok=1; i=0; } } else { irtime=0; startflag=1; }}这个程序中irtime是全局变量。那么当程序一开始,定时器就在工作,那么irtime如何能取值到33到63之间?bit startflag只是定义,是否给出了startflag的值?值到33到63之间?bit startflag只是定义,是否给出了startflag的值? |