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

📄 text1.lst

📁 单总线多点测温系统
💻 LST
字号:
C51 COMPILER V7.50   TEXT1                                                                 11/19/2004 12:49:40 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include<xuanze.h>
   3          
   4          
   5          unsigned  int shu[]={0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39};
   6          unsigned long t;
   7          
   8          
   9          
  10          
  11            void flcd_1602()           //当为负温度时,液晶显示可以高位为0屏蔽.
  12           {       init(0x80);write_data(0x4e);//NO  
  13   1         init(0x81);write_data(0x4f);
  14   1         init(0x82);write_data(0x80);
  15   1      
  16   1         
  17   1         init(0x85);write_data(0x74);//temperature 
  18   1         init(0x86);write_data(0x65); 
  19   1         init(0x87);write_data(0x6d);  
  20   1         init(0x88);write_data(0x70);  
  21   1         init(0x89);write_data(0x65);  
  22   1         init(0x8a);write_data(0x72);
  23   1         init(0x8b);write_data(0x61);  
  24   1         init(0x8c);write_data(0x74);  
  25   1         init(0x8d);write_data(0x75);  
  26   1         init(0x8e);write_data(0x72);
  27   1         init(0x8f);write_data(0x65);
  28   1        
  29   1          init(0xc0);write_data(0x80);
  30   1         init(0xc1);write_data(0x80);
  31   1         init(0xc2);write_data(0x69); //is: 
  32   1         init(0xc3);write_data(0x73);  
  33   1         init(0xc4);write_data(0x3a); 
  34   1       
  35   1              if((t/1000%10)!=0)
  36   1              {init(0xc5);write_data(0x2d);  
  37   2           init(0xc6);write_data(shu[t/1000%10]);
  38   2               init(0xc7);write_data(shu[t/100%10]);  
  39   2              }
  40   1              else
  41   1              {init(0xc5);write_data(0xfe);  
  42   2           init(0xc6);write_data(0x2d);
  43   2               init(0xc7);write_data(shu[t/100%10]);  
  44   2              }
  45   1              init(0xc8);write_data(0x2e);
  46   1          init(0xc9);write_data(shu[(t%100)/10]); 
  47   1              init(0xca);write_data(shu[t%10]);
  48   1              init(0xcb);write_data(0x27);
  49   1              init(0xcc);write_data(0x43);
  50   1              init(0xcd);write_data(0x80);
  51   1              init(0xce);write_data(0x80);
  52   1              init(0xcf);write_data(0x80);
  53   1       }
  54          
  55           void lcd_1602()              //当为正温度时,液晶显示可以高位为0屏蔽.
C51 COMPILER V7.50   TEXT1                                                                 11/19/2004 12:49:40 PAGE 2   

  56           {       init(0x80);write_data(0x4e);//NO  
  57   1         init(0x81);write_data(0x4f);
  58   1         init(0x82);write_data(0x80);
  59   1      
  60   1         init(0x84);write_data(0x80);
  61   1         init(0x85);write_data(0x74); //temperature 
  62   1         init(0x86);write_data(0x65);  
  63   1         init(0x87);write_data(0x6d);  
  64   1         init(0x88);write_data(0x70);  
  65   1         init(0x89);write_data(0x65);
  66   1         init(0x8a);write_data(0x72);  
  67   1         init(0x8b);write_data(0x61);  
  68   1         init(0x8c);write_data(0x74);  
  69   1         init(0x8d);write_data(0x75);
  70   1         init(0x8e);write_data(0x72);
  71   1         init(0x8f);write_data(0x65);
  72   1      
  73   1         init(0xc0);write_data(0x80);
  74   1         init(0xc1);write_data(0x80);
  75   1         init(0xc2);write_data(0x69); //is: 
  76   1         init(0xc3);write_data(0x73);  
  77   1         init(0xc4);write_data(0x3a); 
  78   1        if(t/10000!=0)
  79   1              {init(0xc5);write_data(shu[t/10000]);  
  80   2           init(0xc6);write_data(shu[t/1000%10]);
  81   2           init(0xc7);write_data(shu[t/100%10]);
  82   2               }
  83   1              else
  84   1          {if((t/1000%10)!=0)
  85   2            {init(0xc5);write_data(0xfe);
  86   3                 init(0xc6);write_data(shu[t/1000%10]);
  87   3                init(0xc7);write_data(shu[t/100%10]);
  88   3                }
  89   2                else
  90   2             {init(0xc5);write_data(0xfe);
  91   3                 init(0xc6);write_data(0xfe);
  92   3             init(0xc7);write_data(shu[t/100%10]);}
  93   2           } 
  94   1          
  95   1           
  96   1               init(0xc8);write_data(0x2e);
  97   1              init(0xc9);write_data(shu[(t%100)/10]); 
  98   1              init(0xca);write_data(shu[t%10]);
  99   1              init(0xcb);write_data(0x27);
 100   1              init(0xcc);write_data(0x43);
 101   1              init(0xcd);write_data(0x80);
 102   1              init(0xce);write_data(0x80);
 103   1              init(0xcf);write_data(0x80);
 104   1      
 105   1       }
 106          void jiance()      //初始化,即检测是否存在DS18B20.
 107          {unsigned char k=0;
 108   1        loop:DS=1;
 109   1            DS=0;       //主机将总线从高电平拉到低电平
 110   1             del(100);  //持续400us~960us
 111   1            DS=1;       //然后释放总线
 112   1      
 113   1            del(10);   //DS18B20检测到总线上升沿后,等待15us~60u后发低电平。
 114   1          k=DS;
 115   1          del(20);     //低电平至少要持续60~240us
 116   1           if(k==1)   // 60~240us内 若为高电平则要重新检测。
 117   1           goto loop;
C51 COMPILER V7.50   TEXT1                                                                 11/19/2004 12:49:40 PAGE 3   

 118   1      
 119   1      }
 120          
 121          
 122           read()                      //从DS18B20中读出数据
 123          { unsigned char i;
 124   1        unsigned long date=0;
 125   1        for(i=0;i<16;i++)
 126   1        { DS=0;        //主机在某一时刻将总线从高电平拉到低电平.
 127   2         date>>=1;
 128   2                 
 129   2           
 130   2              DS=1;
 131   2               del(3);       //保持15us将总线拉到高电平,产生读时间隙
 132   2          if(DS)        
 133   2          date|=0x8000;
 134   2          del(8);          //读数据需要持续35us~60us.
 135   2      
 136   2         
 137   2         }
 138   1         return(date);
 139   1      }
 140          void  main()
 141          { unsigned long  flag=0;
 142   1              EA=0;
 143   1          SP=0X60;
 144   1         init(0x01);   //对液晶屏初始化
 145   1         init(0x38);
 146   1         init(0x0c);
 147   1         init(0x06);
 148   1         
 149   1        while(1)
 150   1       {  
 151   2              jiance();  //对DS18B20初始化
 152   2          matchrom();
 153   2          write(0x44); //启动温度变换 
 154   2              del(100);        
 155   2          jiance();
 156   2          matchrom();
 157   2        if(f==1)
 158   2          {f=0;}
 159   2        else
 160   2        {  write(0xbe); // 读暂存存储器
 161   3           t=read();
 162   3           flag=t&0x8000;  //对读取的数据进行处理
 163   3          if(flag==0x8000)
 164   3           {t=~t;
 165   4             t=t+1;
 166   4             t=t*25;
 167   4                  t>>=2;
 168   4             flcd_1602();
 169   4               }
 170   3         else
 171   3         {  t=t*25;
 172   4            t>>=2;
 173   4            lcd_1602();
 174   4          }
 175   3         }
 176   2        }
 177   1       }


C51 COMPILER V7.50   TEXT1                                                                 11/19/2004 12:49:40 PAGE 4   

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