|
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code table[]={0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- };
- uchar irtime;
- uchar startflag;
- uchar bitnum;
- uchar irreceok;
- uchar ircode[4];
- uchar irprosok;
- uchar irdata[];
- uchar disp[];
- sbit m1=P2^2;
- sbit m2=P2^3;
- sbit m3=P2^4;
- void delay(uint a)
- {
- while(a--);
- }
- void timer0init(void)
- {
- TMOD=0x02;
- TH0=0;
- TL0=0;
- EA=1;
- ET0=0;
- TR0=1;
- }
- void int0init(void)
- {
- IT0=1;
- EX0=1;
- EA=1;
- }
- void irwork(void)
- {
- disp[0]=ircode[0]/16;
- disp[1]=ircode[0]%16;
- disp[2]=ircode[1]/16;
- disp[3]=ircode[1]%16;
- disp[4]=ircode[2]/16;
- disp[5]=ircode[2]%16;
- disp[6]=ircode[3]/16;
- disp[7]=ircode[3]%16;
- }
- void display()
- {
- uchar i;
- for(i=0;i<8;i++)
- {
-
- switch(i)
- {
- case 0:
- m3=0;m2=0;m1=0;break;
- case 1:
- m3=0;m2=0;m1=1;break;
- case 2:
- m3=0;m2=1;m1=0;break;
- case 3:
- m3=0;m2=1;m1=1;break;
-
- }
- P0=table[disp[i]];
- delay(100);
- P0=0x00;
-
- }
- }
- void irpros(void)
- {
- uchar k,i,j;
- uchar value;
- k=1;
- for(j=0;j<4;j++)
- {
- for(i=0;i<8;i++)
- {
- value>>=1;
- irdata[k]>6;
- {
- value=value|0x80;
- }
- k++;
- }
- ircode[j]=value;
- }
- irprosok=1;
- }
- void main()
- {
- timer0init();
- int0init();
- while(1)
- {
- if(irreceok)//½ÓÊÕºÃÁËÂð
- {
- irpros();
- irreceok=0;
- }
- if(irprosok)
- {
- irwork();
- irprosok=0;
-
- }
- display();
- }
- }
- void timer0() interrupt 1
- {
- irtime++;
- }
- void int0()interrupt 0
- {
- if(startflag)//¼ì²âÒýµ¼Âð
- {
- if(irtime>32)
- {
- bitnum=0;
- }
- irdata[bitnum]=irtime;
- irtime=0;
- bitnum++;
- if(bitnum==33)
- {
- bitnum=0;
- irreceok=1;
- }
- }
- else
- {
- startflag=1;
- irtime=0;
- }
- }
復(fù)制代碼 |
|