⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ir-com.lst

📁 SAA3010红外摇控51单片机接收程序,对想学单片机红外的人有帮助!
💻 LST
字号:
C51 COMPILER V7.20   IR_COM                                                                04/12/2007 07:02:27 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE IR_COM
OBJECT MODULE PLACED IN ir-com.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ir-com.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          // 波特率发生器的初值(115200波特率)XTAL 11.0592M
   2          //#define BRGR1_DATA 00   
   3          //#define BRGR0_DATA 0x50
   4          #include <REGX51.H>
   5          
   6          sbit WAY_0 = P3^2;
   7          sbit BLK= P3^3;
   8          sbit LED= P1^3;
   9          
  10          unsigned char bdata buffer;//发往串口的缓冲器
  11          sbit way0=buffer^0;        
  12          unsigned char irtype;      //RC5一帧的各段的标志
  13          
  14          unsigned char count,buf_s[3];       //红外接收位寄存器
  15          unsigned char end;         //红外一帧接收结束标志
  16          
  17          void  DelayA(void)
  18          {
  19   1              unsigned int TempCyc;
  20   1              for (TempCyc=0; TempCyc<650; TempCyc++); //3.5
  21   1      }
  22          
  23          
  24          
  25          void t0_service(void) interrupt 1 using 1         
  26          {
  27   1           //第一次进入中断,为定时1/4位的时间445us
  28   1           //以后则定时一位时间1.778ms进入中断
  29   1      way0=~WAY_0; //一体化解码后,有载频的部分变为低电平
  30   1      
  31   1      //DelayA();
  32   1      //DelayA();
  33   1      
  34   1      
  35   1      //way0=~WAY_0;
  36   1      TH0=(0xffff-1522)/256;
  37   1      TL0=(0xffff-1522)%256;
  38   1      count++;
  39   1      if((irtype==0)&&(count==3)) //起始码部分2个1和翻转位
  40   1      {
  41   2            buf_s[0]=buffer;
  42   2            count=0;
  43   2            irtype=1;
  44   2            buffer=0;
  45   2      }
  46   1      else if((irtype==1)&&(count==5)) //5位地址
  47   1      {
  48   2            buf_s[1]=buffer;
  49   2            count=0;
  50   2            irtype=2;
  51   2            buffer=0;
  52   2      }
  53   1      else if((irtype==2)&&(count==6)) //6位命令
  54   1      {
  55   2            buf_s[2]=buffer;
C51 COMPILER V7.20   IR_COM                                                                04/12/2007 07:02:27 PAGE 2   

  56   2            P0 = ~buffer;
  57   2            count=0;
  58   2            irtype=3;
  59   2            buffer=0;
  60   2      
  61   2      }
  62   1      else if(irtype==3) //等最后半位结束,实际延时1位时间
  63   1      {
  64   2      TI=0;
  65   2      count=0;
  66   2      irtype=0;
  67   2      buffer=0;
  68   2      end=1;
  69   2      TR0=0; //解码结束,定时器停止
  70   2      return;
  71   2      }
  72   1      buffer=buffer<<1;
  73   1       if(way0 == 1) buffer++;
  74   1      }
  75          
  76          void powerup( void )
  77          {
  78   1      TMOD = 0X21; //定时器1为方式2
  79   1      TL1 = 0xfd;   //置初值,波特率为9600
  80   1      TH1 = 0xfd;
  81   1      PCON = 0x00; //SMOD = 0
  82   1      TR1 = 1;   //启动定时器1
  83   1      IE=0x82;
  84   1      SCON = 0x50;
  85   1      }
  86          
  87          void main(void)
  88          {
  89   1      //unsigned char i;
  90   1           WAY_0=1;     //输入首先写1
  91   1               BLK=0;
  92   1               LED=0;
  93   1      powerup();
  94   1      while(1)
  95   1      {
  96   2           buffer=0;
  97   2           irtype=0;
  98   2           count=0;
  99   2           end=0;
 100   2      TH0=(0xffff-381)/256;
 101   2      TL0=(0xffff-381)%256;
 102   2           while (WAY_0);//等待低电平,一帧的开始       way
 103   2               TR0=1;        //开始定时,红外接收
 104   2           while(!end); //等一帧解码结束
 105   2      //for(i = 0;i<3;i++)
 106   2      //{
 107   2         TI=0;
 108   2         SBUF=buf_s[2]+0x30;
 109   2         while(!TI);  
 110   2      //}
 111   2           }
 112   1      }
 113          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    208    ----
C51 COMPILER V7.20   IR_COM                                                                04/12/2007 07:02:27 PAGE 3   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -