#在这里快速回复##include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit ir=P3^2; //红外线一体接收器的接口 sbit led=P2^1;//此处写led灯的连接IO口 unsigned int timer1; uchar irtime; uchar irdata[33]; uchar bitnum; uchar startflag; uchar irok; uchar ircode[4]; uchar irprosok; void delay(uchar x); void timer0init(void) //256*(1/12m)*12=0.256ms { TMOD=0x02; TH0=0x00; TL0=0x00; ET0=1; EA=1; TR0=1; } void irpros(void) // 红外码值处理 { uchar mun,k,i,j; k=1; for(j=0;j<4;j++) { for(i=0;i<8;i++) { mun=mun>>1; if(irdata[k]>6) { mun=mun | 0x80; } k++; } ircode[j]=mun; } irprosok=1; } void delay(uchar x) { uchar a,b; for(a=x;a>0;a--) for(b=200;b>0;b--); } void int0init(void) { IT0=1; EX0=1; EA=1; } void main() { timer0init(); int0init(); while(1) { if(irok==1) { irpros(); irok=0; } if(ircode[2]==0x08) { led=!led; } } } void int0 () interrupt 0 { if(startflag) { if(irtime>32&&irtime<63) { bitnum=0; } irdata[bitnum]=irtime; irtime=0; bitnum++; if(bitnum==33) { bitnum=0; irok=1; } } else { irtime=0; startflag=1; } } void timer0 () interrupt 1 { irtime++; } |