#include#define uchar unsigned char#define uint unsigned intunsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsigned char code smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78};uchar irtime;uchar startflag;uchar irdata[33];uchar bitnum;uchar irreceok;uchar ircode[4];uchar irprosok;uchar disp[8];//************************************************//延时函数,在12MHz的晶振频率下//大约50us的延时//************************************************void delay_50us(uint t){ uchar j; for(;t>0;t--) for(j=19;j>0;j--);}//************************************************//延时函数,在12MHz的晶振频率下//大约50ms的延时//************************************************void delay_50ms(uint t){ uint j; for(;t>0;t--) for(j=6245;j>0;j--);}void timer0init(void){ TMOD=0x02; TH0=0x00; TL0=0x00; ET0=1; EA=1; 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(void){ uchar i; for(i=0;i<8;i++) { P1=smg_du[disp[i]]; P2=smg_we[i]; delay_50us(20); }}void irpros(void) //0x1c{ uchar k,i,j; uchar value; k=1; for(j=0;j<4;j++) { for(i=0;i<8;i++) { value=value>>1; //7 if(irdata[k]>6) //8 { 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++; //255}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; }}
-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。