- void tim0_isr()interrupt 1 using 1//定时器0中断服务函数
- {
- irtime++;
- }
- void ex0_isr()interrupt 0 using 0//外部中断0服务函数
- {
- static unsigned char i;
- static bit startflag;
- if(startflag)
- {
- if(irtime<63&&irtime>=33)//引导码TC9012的头码
- i=0;
- irdata=irtime;
- irtime=0;
- i++;
- if(i==33)
- {
- irok=1;
- i=0;
- }
- }
- else{irtime=0;startflag=1;}
- }
- void TIM0init()//定时器0初始化
- {
- TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
- TH0=0x00;//reload value
- TL0=0x00;//initial value
- ET0=1;//开总中断
- TR0=1;
- }
- void EX0init()
- {
- IT0=1;//Configure interrupt 0 for falling edge on/INT0(P3.2)
- EX0=1;//Enable EX0 Interrupt
- EA=1;
- }////////////////////////////////////////////////////////////////////////
- void lrcordpro()//红外码值处理函数(关键函数)
- {
- unsigned char i,j,k=1;
- unsigned char cord,value;
- for(i=0;i<4;i++)
- {/////////////////////处理4个字节
- for(j=1;j<=8;j++)
- {//////////////////处理1个字节8位
- cord=irdata[k];
- value=value>>1;
- if(cord>7)value=value|0x80;//大于某值为1
- k++;
- }
- IRcord=value;
- value=0;
- }
- irpro_ok=1;//处理完毕标志位置1
- }
- void lcd_delay(uchar ms)/*LCD1602延时*/
- {
- uchar j;
- while(ms--)
- {
- for(j=0;j<250;j++)
- {;}
- }
- }
- 我想问一下这个定时器0在什么时候中断,以及中断的时间并且引导码那部分能帮我解答一下吗
|