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

📄 ir6122.lst

📁 一个51单片机下编写红外遥控接收程序
💻 LST
字号:
C51 COMPILER V8.01   IR6122                                                                06/08/2007 02:00:26 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE IR6122
OBJECT MODULE PLACED IN .\output\IR6122.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE IR\IR6122.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\IR6122.lst) OBJECT(.\out
                    -put\IR6122.obj)

line level    source

   1          
   2          
   3          #include  "headfiles\headfiles.h"
   4          
   5          /////////////////////////////////////////
   6          //                                                              /////////
   7          //        晶体:18.432MHz           /////////
   8          //                                                              /////////
   9          /////////////////////////////////////////
  10          
  11          
  12          void init_timer0(void)  //初始化
  13          {
  14   1              TMOD &= 0XF0;
  15   1              TMOD  |= 0X1;
  16   1              TL0 = 0x50;
  17   1              TH0 = 0xFF;
  18   1              TR0 = 1;
  19   1              PT0 = 1;
  20   1          ET0 = 1; 
  21   1              EA = 1;
  22   1              P3 = 0xFF;
  23   1      }
  24          
  25          
  26          
  27          
  28          
  29          void timer_isr() interrupt 1  //中断函数
  30          {
  31   1      //   DISABLE; 
  32   1          EA = 0; 
  33   1      //    test_IO_Flag = ~test_IO_Flag;
  34   1      //    P1 = test_IO_Flag;
  35   1          IR_decode(); 
  36   1                 
  37   1              TL0 = 0x50;
  38   1              TH0 = 0xFF;
  39   1      //  ENABLE;
  40   1          EA = 1;
  41   1      }
  42          
  43          
  44          sbit  Ir_line = P3^5;
  45          
  46          
  47          bit  High_Flag;
  48          
  49          bit  Rcv_OK;
  50          
  51          #define  data_code_long    12
  52          #define  data_code_short   4
  53          
  54          unsigned char  Ir_timer;
C51 COMPILER V8.01   IR6122                                                                06/08/2007 02:00:26 PAGE 2   

  55          unsigned char  Rcv_bit_cnt;
  56          unsigned char  Rcv_Byte_cnt;
  57          
  58          unsigned char  Rcv_Code[2];
  59          
  60          
  61          
  62          #define  data_code_long    12
  63          #define  data_code_short   4  
  64          
  65          void Rcv_bit_Deal(bit bt)
  66          {
  67   1         if((Ir_timer > data_code_short-3)&&(Ir_timer < data_code_short+4))
  68   1               {
  69   2                 if(Rcv_bit_cnt&0x01)
  70   2                      {
  71   3                              Rcv_Code[Rcv_Byte_cnt] <<= 1;
  72   3                              Rcv_Code[Rcv_Byte_cnt] |=  bt;  
  73   3                      }
  74   2                 Rcv_bit_cnt++;
  75   2                 if(Rcv_bit_cnt==10)
  76   2                      {
  77   3                          Rcv_Byte_cnt++;    
  78   3                      }                                       
  79   2                 else if(Rcv_bit_cnt>25)
  80   2                      {
  81   3                              Rcv_OK = 1;
  82   3                              Rcv_bit_cnt = 0;
  83   3                              Rcv_Byte_cnt = 0;       
  84   3                      }
  85   2                 else
  86   2                      {
  87   3                      }
  88   2                }
  89   1              else if((Ir_timer > data_code_long-4)&&(Ir_timer < data_code_long+5))
  90   1                {
  91   2                       Rcv_Code[Rcv_Byte_cnt] <<= 1;
  92   2                       Rcv_Code[Rcv_Byte_cnt] |=  bt;
  93   2                       Rcv_bit_cnt += 2;
  94   2                       if(Rcv_bit_cnt==11)
  95   2                         {
  96   3                                Rcv_Byte_cnt++;    
  97   3                         }
  98   2                       else if(Rcv_bit_cnt>25)
  99   2                        {
 100   3                                Rcv_OK = 1;
 101   3                                Rcv_bit_cnt = 0;
 102   3                                Rcv_Byte_cnt = 0;     
 103   3                        }
 104   2                       else
 105   2                        {
 106   3      
 107   3                        }                                                                                                
 108   2                      }
 109   1                else
 110   1                 {
 111   2                         Rcv_bit_cnt = 0;
 112   2                         Rcv_Byte_cnt = 0;                        
 113   2                 }
 114   1      }
 115          
 116          
C51 COMPILER V8.01   IR6122                                                                06/08/2007 02:00:26 PAGE 3   

 117          
 118          void IR_decode(void)
 119          {
 120   1        if(Ir_line)
 121   1         {
 122   2           if(High_Flag)
 123   2             {
 124   3                Ir_timer++;
 125   3                if(Ir_timer>180)
 126   3                 {
 127   4                   Ir_timer = 180;                                                                                                      
 128   4                 }                       
 129   3                 }
 130   2                else
 131   2                 {
 132   3                    Rcv_bit_Deal(0);
 133   3                        Ir_timer = 0;
 134   3                 }
 135   2                High_Flag = 1;
 136   2              }
 137   1        else
 138   1         {
 139   2            if(High_Flag)
 140   2                  {
 141   3                        Rcv_bit_Deal(1);
 142   3                        Ir_timer = 0;              
 143   3                  }
 144   2                else
 145   2                  {
 146   3                         Ir_timer++;
 147   3                      }
 148   2                 High_Flag = 0;                  
 149   2              }
 150   1      }
 151          
 152          
 153          void  Rcv_IRKey(void)
 154          {
 155   1          if(Rcv_OK == 1)
 156   1               {
 157   2                  Send_Str("Head code:  \0");
 158   2                      Send_HEX_char(Rcv_Code[0]);
 159   2                      Send_Str("     \0");
 160   2                      Send_Str("Key code:  \0");
 161   2                      Send_HEX_char(Rcv_Code[1]);
 162   2                      Send_Str("\r\n\0");
 163   2                      Rcv_OK = 0;
 164   2               }
 165   1      }
 166          
 167          
 168          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    325    ----
   CONSTANT SIZE    =     38    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       1
C51 COMPILER V8.01   IR6122                                                                06/08/2007 02:00:26 PAGE 4   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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