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

📄 main.lst

📁 自动化控制系统源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  03/13/2008 11:48:11 PAGE 1   


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

stmt level    source

   1          #include<AT892051.H>
   2          #include <intrins.h>
   3          
   4          #define Nop()           _nop_();
   5          typedef unsigned char   uchar;
   6          typedef unsigned int    uint;
   7          
   8          uchar code CrcTable [256] = {
   9          0,   94,  188, 226, 97,  63,  221, 131, 194, 156, 126, 32,  163, 253, 31,  65,
  10          157, 195, 33,  127, 252, 162, 64,  30,  95,  1,   227, 189, 62,  96,  130, 220,
  11          35,  125, 159, 193, 66,  28,  254, 160, 225, 191, 93,  3,   128, 222, 60,  98,
  12          190, 224, 2,   92,  223, 129, 99,  61,  124, 34,  192, 158, 29,  67,  161, 255,
  13          70,  24,  250, 164, 39,  121, 155, 197, 132, 218, 56,  102, 229, 187, 89,  7,
  14          219, 133, 103, 57,  186, 228, 6,   88,  25,  71,  165, 251, 120, 38,  196, 154,
  15          101, 59,  217, 135, 4,   90,  184, 230, 167, 249, 27,  69,  198, 152, 122, 36,
  16          248, 166, 68,  26,  153, 199, 37,  123, 58,  100, 134, 216, 91,  5,   231, 185,
  17          140, 210, 48,  110, 237, 179, 81,  15,  78,  16,  242, 172, 47,  113, 147, 205,
  18          17,  79,  173, 243, 112, 46,  204, 146, 211, 141, 111, 49,  178, 236, 14,  80,
  19          175, 241, 19,  77,  206, 144, 114, 44,  109, 51,  209, 143, 12,  82,  176, 238,
  20          50,  108, 142, 208, 83,  13,  239, 177, 240, 174, 76,  18,  145, 207, 45,  115,
  21          202, 148, 118, 40,  171, 245, 23,  73,  8,   86,  180, 234, 105, 55,  213, 139,
  22          87,  9,   235, 181, 54,  104, 138, 212, 149, 203, 41,  119, 244, 170, 72,  22,
  23          233, 183, 85,  11,  136, 214, 52,  106, 43,  117, 151, 201, 74,  20,  246, 168,
  24          116, 42,  200, 150, 21,  75,  169, 247, 182, 232, 10,  84,  215, 137, 107, 53};
  25          
  26          code uchar DisMode[14] = {0xa0, 0xbd, 0x64, 0x25, 0x39, 0x23, 0x22, 0xb5, 0x20, 0x21, 0x62, 0x7f, 0xff, 0x
             -df};
  27          uchar DisCon[3];       //   0    1     2      3    4      5     6    7     8      9    e     -     nl    d
             -ot
  28                                                                                                                                                                                                             
  29          sbit k1      = P3^0;    //继电器H
  30          sbit Ld      = P3^1;    //
  31          sbit key_up  = P3^2;    //+key
  32          sbit key_do  = P3^3;    //-key
  33          sbit led_r   = P3^4;    //green led
  34          sbit led_y   = P3^5;    //red led
  35          sbit led2    = P3^7;    //L
  36                      
  37          sbit led3    = P1^0;    //L
  38          sbit led1    = P1^1;    //L
  39          sbit led_g   = P1^2;    //green led
  40          sbit Sck     = P1^4;    //4094 Sck
  41          sbit Qd      = P1^5;    //4069 Qd
  42          sbit Sw      = P1^6;    //water postion
  43          sbit TempIO  = P1^7;    //18b20
  44          
  45          bit   Flag, DisFlag, ErFlag;   //Flag 1,18b20 工作常 0,异常  DisFlag 1,显示当前温度 0,显示设定温度
  46          bit   Error;  
  47          uchar *p;
  48          uchar idata temp_buff[9];
  49          uint Temperature; 
  50          uchar SetTemp;
  51          const HiTemp = 60, LoTemp = 23;
  52          
  53          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
C51 COMPILER V7.06   MAIN                                                                  03/13/2008 11:48:11 PAGE 2   

  54          //+ 函数原型声明
  55          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
  56          void Swbt(uchar bt,bit Sw);
  57          void Config18b20 (void);
  58          void delay(uchar x);
  59          void display(void);
  60          void GetKey(void);
  61          void Init18b20 (void);
  62          void WriteByte (uchar wr);
  63          uchar ReadByte (void);
  64          void read_bytes (uchar j);
  65          uchar CRC (uchar j);
  66          void TemperatuerResult(void);
  67          
  68          
  69          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
  70          //+ 函数: Swbt 
  71          //+ 功能: 指定位数码管开关
  72          //+ 参数: bt位,Sw开关0开1关
  73          //+ 返回: 无
  74          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
  75          void Swbt(uchar bt,bit Sw)
  76          {
  77   1         if (Sw)
  78   1         {
  79   2            switch (bt)
  80   2            {
  81   3               case 0:led1 = 0; break;
  82   3               case 1:led2 = 0; break;
  83   3               case 2:led3 = 0; break;
  84   3               default: break;  
  85   3            }
  86   2         }
  87   1         else
  88   1         {
  89   2            switch (bt)
  90   2            {
  91   3               case 0:led1 = 1; break;
  92   3               case 1:led2 = 1; break;
  93   3               case 2:led3 = 1; break;
  94   3               default: break;  
  95   3            }
  96   2         }
  97   1            
  98   1      }           
  99          
 100          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 101          //+ 函数: delay 
 102          //+ 功能: 按键和显示用延时
 103          //+ 参数: x
 104          //+ 返回: 无
 105          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 106          void kdelay(uchar x)
 107          {
 108   1         uchar i, j;
 109   1         for (i = x; i > 0; i--)
 110   1         {
 111   2            for (j = 0; j < 255; j++)
 112   2            {;}
 113   2         }
 114   1      }
 115          
C51 COMPILER V7.06   MAIN                                                                  03/13/2008 11:48:11 PAGE 3   

 116          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 117          //+ 函数: delay 
 118          //+ 功能: 18B20 用延时
 119          //+ 参数: x
 120          //+ 返回: 无
 121          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 122          void delay(uchar x)
 123          {
 124   1         while (x--);
 125   1      }
 126          
 127          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 128          //+ 函数: Rread_bytes
 129          //+ 功能: 读18B20
 130          //+ 参数: j
 131          //+ 返回: 无
 132          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 133          void read_bytes (uchar j)
 134          {
 135   1         uchar i;
 136   1         for(i = 0; i < j; i ++)
 137   1         {
 138   2            *p = ReadByte();
 139   2            p ++;
 140   2         }
 141   1      }
 142          
 143          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 144          //+ 函数: ReadByte
 145          //+ 功能: 读取单字节
 146          //+ 参数: 无
 147          //+ 返回: 无
 148          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 149          uchar ReadByte (void)     //读取单字节
 150          {
 151   1         uchar i,u = 0;
 152   1         for(i = 0; i < 8; i ++)
 153   1         {
 154   2            TempIO = 0;
 155   2            u >>= 1;
 156   2            TempIO = 1;
 157   2            if(TempIO ==1 )
 158   2            u |= 0x80;
 159   2            delay (4);
 160   2            Nop();
 161   2         }
 162   1         return(u);
 163   1      }
 164          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 165          //+ 函数: ReadID
 166          //+ 功能: 读取器件 id
 167          //+ 参数: 无
 168          //+ 返回: 无
 169          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 170          /*void ReadID (void)
 171          {
 172            Init18b20();
 173            WriteByte(0x33);         //read rom
 174            read_bytes(8);
 175          }*/
 176          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 177          //+函数:Init18b20 
C51 COMPILER V7.06   MAIN                                                                  03/13/2008 11:48:11 PAGE 4   

 178          //+ 功能:18B20初始化
 179          //+ 参数: wr
 180          //+ 返回: 无
 181          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 182          void Init18b20 (void)
 183          {
 184   1         TempIO = 1;
 185   1         Nop();
 186   1         TempIO = 0;
 187   1         delay(86);                //delay 530 uS//80
 188   1         Nop();
 189   1         TempIO = 1;
 190   1         delay(14);                //delay 100 uS//14
 191   1         Nop(); Nop();   Nop();
 192   1         
 193   1         if(TempIO == 0)
 194   1            Flag = 1;                  //detect 1820 success!
 195   1         else
 196   1            Flag = 0;                  //detect 1820 fail!
 197   1         delay(20);               //20
 198   1         Nop();      
 199   1         Nop();
 200   1         TempIO = 1;
 201   1      }
 202          
 203          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 204          //+ 函数: WriteByte
 205          //+ 功能: 18B20单字节写入
 206          //+ 参数: wr
 207          //+ 返回: 无
 208          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 209          void WriteByte (uchar wr)     //单字节写入
 210          {
 211   1         uchar i;
 212   1         
 213   1         for (i = 0; i < 8; i ++)
 214   1         {
 215   2            TempIO = 0;
 216   2            Nop();
 217   2            TempIO = wr & 0x01;
 218   2            delay(5);            //delay 45 uS //5
 219   2            Nop();
 220   2            Nop();
 221   2            TempIO = 1;
 222   2            wr >>= 1;
 223   2         }
 224   1      }
 225          
 226          //+++++++++++++++++++++++++++++++++++++++++++++++++++++
 227          //+ 函数: Config18b20
 228          //+ 功能: 重新配置报警限定值和分辨率
 229          //+ 参数: 无
 230          //+ 返回: 无
 231          //+++++++++++++++++++++++++++++++++++++++++++++++++++++  
 232          void Config18b20 (void)  //重新配置报警限定值和分辨率
 233          {
 234   1         Init18b20();
 235   1         WriteByte(0xcc);         //skip rom
 236   1         WriteByte(0x4e);         //write scratchpad
 237   1         WriteByte(0x28);         //上限
 238   1         WriteByte(0x14);         //下限
 239   1         WriteByte(0x7f);         //set 11 bit (0.125)
C51 COMPILER V7.06   MAIN                                                                  03/13/2008 11:48:11 PAGE 5   

 240   1         Init18b20();
 241   1         WriteByte(0xcc);         //skip rom
 242   1         WriteByte(0x48);         //保存设定值
 243   1         Init18b20();     
 244   1         WriteByte(0xcc);         //skip rom
 245   1         WriteByte(0xb8);         //回调设定值
 246   1      }

⌨️ 快捷键说明

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