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

📄 infrared.lst

📁 RM0038红外传感器接收电视机摇控的源码
💻 LST
字号:
C51 COMPILER V7.00  INFRARED                                                               08/19/2007 14:20:23 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE INFRARED
OBJECT MODULE PLACED IN Infrared.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Infrared.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "Infrared.h"
   2          #include "Serial.h"
   3          xdata uchar uSendCount1 = 0;
   4          xdata uchar count = 0;
   5          xdata uchar uRecvCount = 0;
   6          xdata uchar KeyHead = 0;
   7          xdata uchar Data0 = 0;
   8          xdata uchar Data1 = 0;
   9          xdata uchar rKey = 0;
  10          bit bFirstGetKey = 1;
  11          
  12          uchar GetKey(void)
  13          {
  14   1              if(bFirstGetKey)
  15   1              {
  16   2                      bFirstGetKey = 0;
  17   2                      T2MOD &= 0xFC; /* T2OE=0;定时器2输出不允许 */ 
  18   2                      T2MOD |= 0x00; /* DCEN=1;可以设置为向上/下计数:此程序中为向上达到0xff时溢出*/ 
  19   2                      C_T2 = 0;
  20   2                      EXF2=0; /* reset flag 定时器2外部标志位清除*/ 
  21   2                      TCLK=0;RCLK=0; /* disable baud rate generator 不用于波特率发生器*/ 
  22   2                      TH2=0x00;
  23   2                      TL2=0x00;
  24   2                      RCAP2H=0x00;
  25   2                      RCAP2L=0x00;
  26   2                      ET2=1;
  27   2                      IT3 = 1;            // 设置中断触发方式为下降沿触发
  28   2                      EX3=1;              // 允许外部中断INT0
  29   2              }
  30   1              if(rKey)
  31   1              {
  32   2                      uchar tKey = rKey;
  33   2                      rKey = 0;
  34   2                      return tKey;
  35   2              }
  36   1              return 0;
  37   1      }
  38                          
  39          //下面是外部中断INT0的中断服务程序
  40          void Int0IrqHandler (void) interrupt 7 {
  41   1      
  42   1              EX3 = 0;
  43   1              delay(30);
  44   1              if(P4_2 == 0)
  45   1              {
  46   2                      TH2 = 0xFF;
  47   2                      TL2 = 0x47;
  48   2                      TR2 = 1;
  49   2      
  50   2                      if(uSendCount1 == 0) count = 100;
  51   2                      uSendCount1++;
  52   2                      if(count >= 0x05&& count <= 0x18)
  53   2                      {
  54   3                              if(uRecvCount < 8)
  55   3                              {
C51 COMPILER V7.00  INFRARED                                                               08/19/2007 14:20:23 PAGE 2   

  56   4                                      KeyHead >>= 1;
  57   4                                      if(count > 0x0C)
  58   4                                      {
  59   5                                              KeyHead |= 0x80;
  60   5                                      }
  61   4                              }else
  62   3                              if(uRecvCount >= 0x1A&& uRecvCount < 0x22)
  63   3                              {
  64   4                                      Data0 >>= 1;
  65   4                                      if(count > 0x0C)
  66   4                                      {
  67   5                                              Data0 |= 0x80;
  68   5                                      }
  69   4                              }else
  70   3                              if(uRecvCount >= 0x22&& uRecvCount < 0x2A)
  71   3                              {
  72   4                                      Data1 >>= 1;
  73   4                                      if(count > 0x0C)
  74   4                                      {
  75   5                                              Data1 |= 0x80;
  76   5                                      }       
  77   4                              }
  78   3                              uRecvCount++;
  79   3                      }
  80   2                      count = 0;
  81   2              }
  82   1              EX3 = 1;
  83   1        
  84   1      }
  85          
  86          void timer2 (void) interrupt 5
  87          {
  88   1              TR2 = 0;
  89   1              TF2 = 0;
  90   1              TH2 = 0xFF;
  91   1              TL2 = 0x47;
  92   1              TR2 = 1;
  93   1              count ++;
  94   1      
  95   1              if((count > 200)&&(uSendCount1 > 1))
  96   1              {
  97   2                      TR2 = 0;
  98   2                      uSendCount1 = 0;
  99   2                      uRecvCount = 0;
 100   2                      if(KeyHead == 0x1F&&(Data0 = ~Data1))
 101   2                      {
 102   3                              //Send(Data0);
 103   3                              rKey = Data0;
 104   3                      }
 105   2                      KeyHead = 0;
 106   2                      Data0 = 0;
 107   2                      Data0 = 0;
 108   2              }
 109   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    374    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      7    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
C51 COMPILER V7.00  INFRARED                                                               08/19/2007 14:20:23 PAGE 3   

   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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