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

📄 led8.lst

📁 此程序为51,可以接收红外遥控,读温度18b20.非常好懂.欢迎下载
💻 LST
字号:
C51 COMPILER V7.06   LED8                                                                  01/09/2008 10:10:44 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LED8
OBJECT MODULE PLACED IN LED8.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LED8.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //--------------------------------------------------
   2          //
   3          //              作者:闵运华
   4          //              qq:121758163
   5          //--------------------------------------------------
   6          #define Support_18b20
   7          #define Support_i2c
   8          #define Support_led
   9          
  10          
  11          
  12          #include <reg51.h>
  13          #ifdef Support_led
  14                  #include <led.h>
*** WARNING C280 IN LINE 147 OF LED.H: 'Tab00074': unreferenced local variable
  15          #endif
  16          
  17          #ifdef Support_18b20
  18                  #include <18b20.h>
  19          #endif
  20          
  21          #ifdef Support_i2c
  22                  #include <i2c.h>
  23          #endif
  24          
  25          sbit            Tab00000 =  P2^4;
  26          sbit            Tab00001 =  P2^5;
  27          sbit            Tab00002 =  P2^6;
  28          sbit            Tab00003 =  P2^7;
  29          
  30          sbit            Tab00004 = P1^0;
  31          sbit            Tab00005 = P1^1;
  32          sbit            Tab00006 = P1^2;
  33          sbit            Tab00007 = P1^3;
  34          sbit            Tab00008 = P1^4;
  35          
  36          
  37          
  38          
  39          sbit            Tab00009 = P3^0;
  40          sbit            Tab00010 = P3^1;
  41          unsigned char   Tab00011;
  42          unsigned int    Tab00012;
  43          bit             Tab00013;       //为1表示门己关着了
  44          #define         Tab00014                0
  45          #define         Tab00015                1
  46          
  47          //遥控区
  48          struct Tab00016nec{
  49                  unsigned char Tab00017;
  50                  unsigned char Tab00018;
  51                  unsigned char Tab00019;
  52                  unsigned int Tab00020;
  53                  unsigned int Tab00021;
  54                  unsigned char Tab00022;
C51 COMPILER V7.06   LED8                                                                  01/09/2008 10:10:44 PAGE 2   

  55                  unsigned char Tab00023;
  56          };
  57          struct Tab00016nec Tab00016; 
  58          #define Tab00024                        (Tab00016.Tab00019 & 0x01)
  59          #define Tab00025                        Tab00016.Tab00019       &=      0x0fe;
  60          #define Tab00026                        Tab00016.Tab00019       |=      0x01;
  61          
  62          #define Tab00027108Tab00028             (Tab00016.Tab00019 & 0x02)
  63          #define Tab00029108Tab00028             Tab00016.Tab00019       &=      0x0fd;
  64          #define Tab00030108Tab00028             Tab00016.Tab00019       |=      0x02;
  65          
  66          #define Tab00031                        (Tab00016.Tab00019&0x04)
  67          #define Tab00032                        Tab00016.Tab00019       &=      0x0fb;
  68          #define Tab00033                        Tab00016.Tab00019       |=      0x04;
  69          
  70          #define Tab00034                        (Tab00016.Tab00019 & 0x10)
  71          #define Tab00035                Tab00016.Tab00019       &=      0x0ef;
  72          #define Tab00036                Tab00016.Tab00019       |=      0x10;
  73          
  74          //函数声明
  75          void Tab000371Tab00038(void);
  76          void Tab0003710Tab00028(void);
  77          void Init_Sys();
  78          void Tab00039(void);
  79          
  80          
  81          
  82          
  83          
  84          void main(void)
  85          {
  86   1              unsigned char Tab00040 = 0;
  87   1              Init_Sys();
  88   1              Tab00041(0x1234);
  89   1              Tab00011 = 0;
  90   1              //初始化遥控结构的值
  91   1              Tab00016.Tab00017 = 0;
  92   1              Tab00016.Tab00018 = 0;
  93   1              Tab00016.Tab00019 = 0;
  94   1              Tab00016.Tab00020 = 0;
  95   1              Tab00016.Tab00021 = 0;
  96   1              Tab00016.Tab00022 = 0;
  97   1              Tab00016.Tab00023 = 0;
  98   1              
  99   1              while(1)
 100   1              {
 101   2                      
 102   2                      Tab00039();
 103   2                      
 104   2                      
 105   2                      
 106   2                      #ifdef Support_18b20
 107   2                      //显示温度
 108   2                      if(Tab00016.Tab00019 == 0 )
 109   2                      {
 110   3                              Tab00044(Tab00045());
 111   3                      }
 112   2                      #endif
 113   2              }
 114   1       }
 115          
 116          
C51 COMPILER V7.06   LED8                                                                  01/09/2008 10:10:44 PAGE 3   

 117          
 118          //延时子程序
 119          void Tab000371Tab00038(void)
 120          {
 121   1              Tab00012 = 0;
 122   1              while(Tab00012 < 5000);
 123   1      }
 124          
 125          
 126          //延时子程序
 127          void Tab00039(void)
 128          {
 129   1              Tab00012 = 0;
 130   1              while(Tab00012 < 2500);
 131   1      }
 132          //延时子程序
 133          void Tab0003710Tab00028(void)
 134          {
 135   1              Tab00012 = 0;
 136   1              while(Tab00012 < 50);
 137   1      }
 138          
 139          void Init_Sys()
 140          {
 141   1              TH0 = (0xffff - 2500)/256;//定时中断为2.5ms
 142   1              TL0 = (0xffff - 2500)%256;
 143   1              TMOD = 0x01;// t0为十六位计数器
 144   1              TR0 = 1;                //允许时间零中断
 145   1              ET0 = 1;
 146   1              
 147   1              TH1 = 55;
 148   1              TL1 = 55;
 149   1              TMOD |= 0x20;//时间计数器1的工作模式为八位自动重装
 150   1              TR1 = 1;                //允许时间零中断
 151   1              ET1 = 1;
 152   1              
 153   1              
 154   1              IE0 = 1;        //开外部中断零
 155   1              EX0 = 1;
 156   1              IT0 = 1;// INT0低电平触发(为1则为下降沿触发
 157   1              EA = 1;         //开总中断
 158   1              
 159   1      }
 160          
 161          //外部中断零
 162          void ex0_int(void) interrupt 0
 163          {
 164   1              //EA = 0;               //
 165   1              Tab00016.Tab00018 = 0;
 166   1              if(Tab00024)
 167   1              {
 168   2                      if(Tab00016.Tab00017 <= (9000 + 4500 + 1000)/200 && Tab00016.Tab00017 >= (9000 - 1000 )/200)
 169   2                      {
 170   3                              Tab00025;
 171   3                              Tab00033;
 172   3                      }
 173   2              }
 174   1              else if(Tab00031)
 175   1              {
 176   2                      if(Tab00016.Tab00017 <= (2250 + 400)/200 && Tab00016.Tab00017 >= (1125 - 400)/200)
 177   2                      {
 178   3                              if(Tab00016.Tab00022 > 15)
C51 COMPILER V7.06   LED8                                                                  01/09/2008 10:10:44 PAGE 4   

 179   3                                      Tab00016.Tab00021 >>= 1;
 180   3                              else
 181   3                                      Tab00016.Tab00020 >>= 1;
 182   3                              
 183   3                              if(Tab00016.Tab00017 >= (2250 + 1125)/200/2)
 184   3                              {
 185   4                                      if(Tab00016.Tab00022 > 15)
 186   4                                              Tab00016.Tab00021 |= 0x8000;
 187   4                                      else
 188   4                                              Tab00016.Tab00020 |= 0x8000;
 189   4                              }
 190   3                              Tab00016.Tab00022++;
 191   3                              if(Tab00016.Tab00022 == 32)
 192   3                              {
 193   4                                      Tab00030108Tab00028;
 194   4                                      Tab00032;
 195   4                                      Tab00016.Tab00023 = 0;
 196   4                                      Tab00041(((Tab00016.Tab00020 & 0xff)<< 8) | (Tab00016.Tab00021 &0xff));
 197   4                                      Tab00016.Tab00022 = 0;
 198   4                                      Tab00036;
 199   4                                      
 200   4                                      
 201   4                              }       
 202   3                      }
 203   2                      else
 204   2                      {
 205   3                              Tab00016.Tab00019 = 0;
 206   3                              Tab00026;
 207   3                              Tab00016.Tab00022 = 0;
 208   3                      }               
 209   2              }
 210   1              else if(Tab00027108Tab00028)
 211   1              {
 212   2                      if(Tab00016.Tab00017 >= (9000 + 2250 - 1000)/200)
 213   2                      {
 214   3                              Tab00016.Tab00023++;
 215   3                              Tab00041(((Tab00016.Tab00020 & 0xff)<< 8) | (Tab00016.Tab00021 &0xff));
 216   3                              
 217   3                              if(Tab00016.Tab00023 > 10)
 218   3                              {
 219   4                                      Tab00016.Tab00023 = 0;
 220   4                              }
 221   3                              Tab00035;
 222   3                      }
 223   2                      else
 224   2                      {
 225   3                              Tab00016.Tab00019 = 0;
 226   3                              Tab00026;
 227   3                              Tab00016.Tab00022 = 0;
 228   3                      }
 229   2              }
 230   1              else
 231   1              {
 232   2                      Tab00026;
 233   2              }
 234   1              Tab00016.Tab00017 = 0;
 235   1              //EA = 1;               //开总中断
 236   1      }
 237          
 238          
 239          
 240          
C51 COMPILER V7.06   LED8                                                                  01/09/2008 10:10:44 PAGE 5   

 241          //每2.5毫秒中断一次
 242          void time0(void) interrupt 1
 243          {
 244   1              //EA = 0;               //
 245   1              TH0 = (0xffff - 2500)/256;//定时中断为2.5ms
 246   1              TL0 = (0xffff - 2500)%256;
 247   1              Tab00011++;
 248   1              #if 1
 249   1              Tab00000 = 0;
 250   1              Tab00001 = 0;
 251   1              Tab00002 = 0;
 252   1              Tab00003 = 0;
 253   1              
 254   1              P0=Tab00049[Tab00011-1];
 255   1              
 256   1              switch(Tab00011)
 257   1              {
 258   2                      case 1:
 259   2                              Tab00000 = 1;
 260   2                              break;
 261   2                      case 2:
 262   2                              Tab00001 = 1;
 263   2                              break;
 264   2                      case 3:
 265   2                              Tab00002 = 1;
 266   2                              break;
 267   2                      case 4:
 268   2                              Tab00003 = 1;
 269   2                              Tab00011 = 0;
 270   2                              break;
 271   2                      default:
 272   2                              break;
 273   2              }
 274   1              #endif
 275   1              
 276   1              Tab00016.Tab00018++;
 277   1              
 278   1              //如果过了一百一十毫秒证明没有遥控信号
 279   1              if(Tab00016.Tab00018 > 50)
 280   1              {
 281   2                      if(Tab00016.Tab00019)
 282   2                              Tab00016.Tab00019 = 0;
 283   2                              
 284   2                      Tab00016.Tab00018 = 0;
 285   2              }
 286   1              //EA = 1;               //开总中断
 287   1              
 288   1      }
 289          
 290          //每200us中断一次
 291          void time1(void) interrupt 3
 292          {
 293   1              //EA = 0;               //
 294   1              Tab00016.Tab00017 ++;
 295   1              Tab00012++;
 296   1              //EA = 1;               //开总中断
 297   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1374    ----
   CONSTANT SIZE    =     39    ----
C51 COMPILER V7.06   LED8                                                                  01/09/2008 10:10:44 PAGE 6   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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