/*P1口接led数码管 数码管段上接p0口  红外线的接口接p3.2 经测试正确      */

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

uint t=0,i,cishu=1,weishu=1,shu=0x00,a;

sbit p2_0=P2^0;

bit flag,ok;

 int table[]= {  0x3f,0x06,0x5b,0x4f,0x66,0x6d,  0x7d,0x07,0x7f,0x6f   };  

uchar  wrie[34];

void tmie1_init() {    TMOD=0x02;    TH0=0x00; 

     TL0=0x00;   

    EA=1;

   ET0=1;    

TR0=1;

}

void time0_init()

{    

  EA=1; 

IT0=1;

   EX0=1;

}

void show(uint b)

{   

P1=~table[b];

  }

//数据处理

void deal()

{

 if(ok==1)

 {

  while(weishu)

  {   

if(wrie[weishu]>7)     

wrie[weishu]=1;  

 else   

wrie[weishu]=0;     

if(weishu==33)  

 {   weishu=1;  

 break;   

  }   

 weishu++;  

}  

shu=0x00;

  for(a=17;a<25;a++)

  {

shu>>=1;   

wrie[a]<<=7;

  shu+=wrie[a];  

  }

 switch(shu)  

{  case 0x16: show(0);break;

 case 0x0c: show(1);break;

 case 0x18: show(2);break;

 case 0x5e: show(3);break;

 case 0x08: show(4);break;

 case 0x1c: show(5);break;

 case 0x5a: show(6);break;

 case 0x42: show(7);break;

 case 0x52: show(8);break;  

case 0x4a: show(9);break;  

}  

ok=0;

 }

}

void main()

tmie1_init();

     time0_init();  

P0=0X80;  

while(1)  

deal();

}

void tmer_1() interrupt 1

{     

  i++;

}

void tmer_0() interrupt 0

{     

wrie[cishu]=i;

    i=0;    

if((wrie[cishu]<63)&&(wrie[cishu]>33))    

{

       cishu=0;    

flag=1;   

  }    

if((flag==1)&&(cishu==33))  

   {         

cishu=0;    

ok=1;    

}    

cishu++;

}