×
单片机 > 单片机程序设计 > 详情

C51红外解码程序

发布时间:2020-06-04 发布时间:
|

这是一个简单的红外解码程序,是针对9ms起始码和4.5ms结束码的红外信号晶振用的是11.0592M的

#i nclude 
#i nclude 
sfr p0=0x80;
sfr p3=0xb0;
sbit p32=p3^2;
unsigned char dm,i,j,k;
unsigned char data a[4];//定义4个数组,用来存储代码
void ds0_9ms(void)
{
 unsigned char j,k;
   for(j=18;j>0;j--)
     for(k=20;k>0;k--) ;
}
void ds1ms(void)
{
 unsigned char i,j;
 for(i=2;i>0;i--)
   for(j=230;j>0;j--) ;
}
void ds4_5ms(void)
{
 unsigned char i,j;
    for(i=10;i>0;i--)
   for(j=225;j>0;j--) ;
}
void ds2s(void)
{
unsigned char i,j,k;
 for(i=200;i>0;i--)  
  for(j=200;j>0;j--)
     for(k=10;k>0;k--) ;
}
void main()
{
 IT0=1;
 EX0=1;
 EA=1;
 dm=0;
 ds2s();
 p0=0;
while(1);
}
void t0(void) interrupt 0 using 2//外部中断0的函数
  {
    EA=0;
    for(k=0;k<10;k++)
  {
    ds0_9ms();
    if (p32==1) {k=10;break;}
    else if(k==9)
              {
            while(p32==0);
            ds4_5ms();
            for(i=0;i<4;i++)
               {
                 for(j=1;j<=8;j++)
                {
                 while(p32==0);
                 ds0_9ms();
                  if(p32==1)
                   {ds1ms();
                 dm=dm|0x80;
                 if(j<8) dm=dm>>1;
                }
                 else  if(j<8)dm=dm>>1;
                }
             a[i]=dm;
             dm=0;
                }
           for(i=0;i<4;i++)
             {
              p0=a[i];
              ds2s();
             }
          }
  }
 p0=0;
 EA=1;
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析