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

📄 test.lst

📁 带有24C02的红外数据接收程序
💻 LST
字号:
C51 COMPILER V7.00  TEST                                                                   06/23/2004 18:23:19 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN Test.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Test.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <AT89X52.H>
   2          #define USE_WATCHDOG
   3          #include "User.H"
   4          #include "24CXX.H"
   5          
   6          #define SA      0x08
   7          #define SB  0x04
   8          #define SC  0x02
   9          #define SD      0x40
  10          
  11          #define SE      0x01
  12          #define SF      0x80
  13          #define SG      0x10
  14          #define SH      0x20
  15          
  16          struct {
  17                  byte x[8];
  18                  byte Min[8]; 
  19                  byte Max[8];
  20          }Gate;
  21          
  22          void InitMaxMin()
  23          {
  24   1              byte i;
  25   1      
  26   1              for(i=0; i<8; i++)
  27   1              {
  28   2                      Gate.Min[i]=255;
  29   2                      Gate.Max[i]=0;
  30   2              }
  31   1      }
  32          
  33          void GetCurrentToX()
  34          {
  35   1              byte i,k;
  36   1      
  37   1              for(i=0; i<8; i++)
  38   1              {
  39   2                      Gate.x[i]=255;  
  40   2                      for(k=0; k<255; k++)
  41   2                      {
  42   3                              P2=k; Delay10us();
  43   3                              if(P1&(0x01<<i))
  44   3                              { 
  45   4                                      Gate.x[i]=k;
  46   4                                      break;
  47   4                              }
  48   3                      }
  49   2              }
  50   1      }
  51          
  52          void UpdateMaxMin()
  53          {
  54   1              byte i;
  55   1              for(i=0; i<8; i++)
C51 COMPILER V7.00  TEST                                                                   06/23/2004 18:23:19 PAGE 2   

  56   1              {
  57   2                      if(Gate.x[i]>Gate.Max[i])
  58   2                              Gate.Max[i]=Gate.x[i];
  59   2                      if(Gate.x[i]<Gate.Min[i])
  60   2                              Gate.Min[i]=Gate.x[i];
  61   2              }
  62   1      }
  63          
  64          void SetGate()
  65          {
  66   1              byte i;
  67   1              for(i=0; i<8; i++)
  68   1                      Gate.x[i] = Gate.Min[i]/2 + Gate.Max[i]/2;
  69   1      }
  70          
  71          void LoadGate(byte *buffer)
  72          {
  73   1              Read24CXX(0,buffer,4);
  74   1              Sleep(10);
  75   1              Read24CXX(4,buffer+4,4);
  76   1              Sleep(10);
  77   1      }
  78          
  79          void SaveGate(byte *buffer)
  80          {
  81   1              Write24CXX(0,buffer,4);
  82   1              Sleep(10);
  83   1              Write24CXX(4,buffer+4,4);
  84   1              Sleep(10);
  85   1      }
  86          
  87          byte ReadIOPort()
  88          {
  89   1              byte i, IO_Port=0x00;
  90   1              for(i=0; i<8; i++)
  91   1              {
  92   2                      P2=Gate.x[i];
  93   2                      Delay10us();
  94   2                      IO_Port|=P1&(0x01<<i);
  95   2              }
  96   1              return IO_Port;
  97   1      }
  98          
  99          byte Convert(byte x)
 100          {
 101   1              byte temp=0;
 102   1      
 103   1              if(x&SA) temp|=0x01;
 104   1              if(x&SB) temp|=0x02;
 105   1              if(x&SC) temp|=0x04;
 106   1              if(x&SD) temp|=0x08;
 107   1              if(x&SE) temp|=0x10;
 108   1              if(x&SF) temp|=0x20;
 109   1              if(x&SG) temp|=0x40;
 110   1              if(x&SH) temp|=0x80;
 111   1      
 112   1              return ~temp;   
 113   1      }
 114          
 115          void InitTimer(void)
 116          {
 117   1              TMOD=0x1;
C51 COMPILER V7.00  TEST                                                                   06/23/2004 18:23:19 PAGE 3   

 118   1              TH0=0xd8;
 119   1              TL0=0xf0;
 120   1              TR0=1;
 121   1              ET0=1;
 122   1              EA=1;
 123   1      }
 124          
 125          void Timer0(void) interrupt 1
 126          {
 127   1              TH0=0xd8;
 128   1              TL0=0xf0;
 129   1      
 130   1              FeedDog();
 131   1      }
 132          
 133          
 134          void main()
 135          {
 136   1              static byte Port,History=0xFF;
 137   1              InitTimer();
 138   1              LoadGate(Gate.x);
 139   1      
 140   1              while(1)
 141   1              {
 142   2                      if(P3_2==0)
 143   2                  {
 144   3                              P0=0xAA;
 145   3                              InitMaxMin();
 146   3                              while(P3_2==0)
 147   3                              {
 148   4                                      GetCurrentToX();
 149   4                                      UpdateMaxMin();
 150   4                              }
 151   3                              SetGate();
 152   3                              SaveGate(Gate.x);
 153   3                      }
 154   2                      Port=Convert(ReadIOPort());
 155   2                      if(Port!=History);
 156   2                              P0=Port;                        
 157   2              }
 158   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    862    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26      32
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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