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

📄 hongwai.lst

📁 该编程语言是C语言
💻 LST
字号:
C51 COMPILER V7.06   HONGWAI                                                               07/30/2008 08:25:21 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE HONGWAI
OBJECT MODULE PLACED IN hongwai.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE hongwai.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //--------------------------------------------------
   2          // 外部中断1服务程序
   3          // 即红外识别程序
   4          //--------------------------------------------------
   5          #include "sfr.h"
   6          #include "port.h"
   7          //--------------------------------------------------
   8          extern bit Ready;       
   9          extern enum State IRstate;      
  10          //--------------------------------------------------
  11          void IRint() interrupt 2
  12          {
  13   1              static unchar count = 0;
  14   1              static unchar recevier[9] = {0,0,0,0,0,0,0,0,0};
  15   1              static unchar temp = 0;
  16   1              static unchar bits = 1;
  17   1              static unchar i = 0;
  18   1              unint time = 0;
  19   1      
  20   1              count++;
  21   1              if( count >= 3 )
  22   1              {
  23   2                      if( count == 3 )
  24   2                      {
  25   3                              TL1 = 0;        // 第一个下降沿使能Timer1
  26   3                      TH1 = 0;
  27   3                      TR1 = 1;
  28   3                      }
  29   2                      else 
  30   2                      {
  31   3                              TR1  = 0;       // 禁止Timer1,准备Timer1的值
  32   3                      time = TH1;
  33   3                      time = ( time << 8 ) + TL1;     // 读TIEMR1的值,看此电平的时间为多少
  34   3                      TL1  = 0;
  35   3                      TH1  = 0;
  36   3                      TR1  = 1;
  37   3      
  38   3                              if( time > 50 )
  39   3                              {
  40   4                                      if ( ( time > 0x0460 ) && ( time < 0x0490 ) )           // 说明收到的此位为1
  41   4                                      {
  42   5                                              temp |= bits;                           
  43   5                                      }
  44   4      
  45   4                                      bits = bits << 1;
  46   4                              }
  47   3      
  48   3                              if( bits == 0 )         // 收到一个字节的数据了
  49   3                              {
  50   4                                      recevier[i] = temp;
  51   4                                      temp = 0;
  52   4                                      bits = 1;
  53   4                                      i++;
  54   4                                      if( i == 9 )            //按一次按键产生的数据都已经收到
  55   4                                      {
C51 COMPILER V7.06   HONGWAI                                                               07/30/2008 08:25:21 PAGE 2   

  56   5                                              i = 0;
  57   5                                              count = 0;
  58   5                                              Ready = 1;
  59   5                                              recevier[1] = recevier[1] & 0xF0;
  60   5                                              if( recevier[0] == 0xA5 )
  61   5                                              {
  62   6                                                      switch ( recevier[1] )
  63   6                                                      {
  64   7                                                              case 0x00:                      // 按下的是开关键
  65   7                                                                      IRstate = IR_stop;
  66   7                                                                      break;
  67   7                                                              case 0x80:                      // 按下的是开关键                                                               
  68   7                                                                      IRstate = IR_start;
  69   7                                                                      break;                  
  70   7                                                              case 0xC0:                                                                      // 按下的是风速键
  71   7                                                                      if( recevier[5] == 0x03 )
  72   7                                                                      {
  73   8                                                                              IRstate = IR_low;                                       // 低风档
  74   8                                                                      }
  75   7                                                                      else if( recevier[5] == 0x01 )
  76   7                                                                      {
  77   8                                                                              IRstate = IR_middle;                            // 中风档
  78   8                                                                      }
  79   7                                                                      else if( recevier[5] == 0x02 )
  80   7                                                                      {
  81   8                                                                              IRstate = IR_large;                                     // 高风档
  82   8                                                                      }
  83   7                                                                      else
  84   7                                                                      {
  85   8                                                                              IRstate = IR_error;     
  86   8                                                                      }
  87   7                                                                      break;
  88   7                                                              case 0x40:                                                                      // 按下的是模式键
  89   7                                                                      if( recevier[6] == 0x04 )
  90   7                                                                      {
  91   8                                                                              IRstate = IR_sleep;                                     // 睡眠模式
  92   8                                                                      }
  93   7                                                                      else if( recevier[6] == 0x02 )
  94   7                                                                      {
  95   8                                                                              IRstate = IR_clever;                            // 聪明模式
  96   8                                                                      }
  97   7                                                                      else if( recevier[6] == 0x06 )
  98   7                                                                      {
  99   8                                                                              IRstate = IR_simple;                            // 普通无模式
 100   8                                                                      }
 101   7                                                                      else
 102   7                                                                      {
 103   8                                                                              IRstate = IR_error;     
 104   8                                                                      }
 105   7                                                                      break;
 106   7                                                              default:                                                                
 107   7                                                              IRstate = IR_error;                                                     // 收到误码
 108   7                                                                      break;
 109   7                                                      }
 110   6                                              }
 111   5                                              else
 112   5                                              {
 113   6                                                      IRstate = IR_error;                                                                     // 收到误码
 114   6                                              }
 115   5                                      }
 116   4                              }
 117   3                      }
C51 COMPILER V7.06   HONGWAI                                                               07/30/2008 08:25:21 PAGE 3   

 118   2              }
 119   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    260    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13    ----
   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 + -