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

📄 ds18b20.lst

📁 自己做的单片机Proteus仿真实例
💻 LST
字号:
C51 COMPILER V8.02   DS18B20                                                               07/23/2012 15:50:03 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS18B20.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit beep=P3^3;
   5          sbit ds=P3^4;
   6          sbit seg0=P3^5;
   7          sbit seg1=P3^6;
   8          sbit seg2=P3^7;
   9          sbit seg3=P3^2;
  10          sbit led0=P1^0;
  11          sbit led1=P1^1;
  12          sbit led2=P1^2;
  13          sbit led3=P1^3;
  14          uint temp;
  15          float f_temp;
  16          uchar flag;
  17          uint warn_l1=20;
  18          uint warn_l2=50;
  19          uint warn_h1=320;
  20          uint warn_h2=350;
  21          uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
  22          void delay(uint z)
  23          {
  24   1           uint i,j;
  25   1               for(i=z;i>0;i--)
  26   1                  for(j=110;j>0;j--);
  27   1      }
  28          void reset()
  29          {
  30   1           uint j;
  31   1               ds=0;
  32   1               j=103;
  33   1               while(j>0)j--;
  34   1               ds=1;
  35   1               j=4;
  36   1               while(j>0)j--;
  37   1      }
  38          bit read_bit()
  39          {
  40   1           uint i;
  41   1               bit dat;
  42   1               ds=0;i++;
  43   1               ds=1; i++; i++;
  44   1               dat=ds;
  45   1               i=8;
  46   1               while(i>0)i--;
  47   1               return(dat);
  48   1      }
  49          uchar read()
  50          {
  51   1           uchar i,j,dat;
  52   1               dat=0;
  53   1               for(i=0;i<8;i++)
  54   1               {
  55   2                   j=read_bit();
C51 COMPILER V8.02   DS18B20                                                               07/23/2012 15:50:03 PAGE 2   

  56   2                       dat=dat|(j<<i);
  57   2               }
  58   1               return(dat);
  59   1      }
  60          void write(uchar dat)
  61          {
  62   1           uint i;
  63   1               uchar j;
  64   1               bit aa;
  65   1               for(j=1;j<=8;j++)
  66   1               {
  67   2                    aa=dat&0x01;
  68   2                        dat=dat>>1;
  69   2                        if(aa)
  70   2                        {
  71   3                             ds=0;
  72   3                                 i++;
  73   3                                 i++;
  74   3                                 ds=1;
  75   3                                 i=8;while(i>0)i--;
  76   3                        }
  77   2                        else
  78   2                        {
  79   3                             ds=0;
  80   3                                 i=8;while(i>0)i--;
  81   3                                 ds=1;
  82   3                                 i++;
  83   3                                 i++;
  84   3                         }
  85   2                }
  86   1      
  87   1      }
  88          void tempchange()
  89          {
  90   1           reset();
  91   1               delay(1);
  92   1               write(0xcc);
  93   1               write(0x44);
  94   1      
  95   1      }
  96          uint get_temp()
  97          {
  98   1           int a,b;
  99   1               reset();
 100   1               delay(1);
 101   1               write(0xcc);
 102   1               write(0xbe);
 103   1               a=read();
 104   1               b=read();
 105   1               flag=0;
 106   1               b=b&0x0f;
 107   1               if(b>8)
 108   1               {
 109   2                   flag=1;
 110   2                   b=b&0x07;
 111   2                       b=(b*256+a);
 112   2                       temp=2047-b+1;
 113   2                }
 114   1                else
 115   1                {
 116   2                   b=b&0x07;
 117   2                   temp=(b*256+a);
C51 COMPILER V8.02   DS18B20                                                               07/23/2012 15:50:03 PAGE 3   

 118   2                }
 119   1                f_temp=temp*0.0625;
 120   1                temp=(uint)(f_temp*10+0.5);
 121   1                return(temp);
 122   1      }
 123          void display(uchar i,uchar j,uchar k)
 124          {
 125   1                P0=0xff;
 126   1                seg0=0;
 127   1                P0=table[i];
 128   1                delay(3);
 129   1                seg0=1;
 130   1      
 131   1                P0=0xff;
 132   1                seg1=0;
 133   1                P0=table[j]+0x01;
 134   1                delay(3);
 135   1                seg1=1;
 136   1      
 137   1                P0=0xff;
 138   1                seg2=0;
 139   1                P0=table[k];
 140   1                delay(3);
 141   1                seg2=1;
 142   1      
 143   1                if(flag==1)
 144   1                   {
 145   2                          P0=0xff;
 146   2                              seg3=0;
 147   2                          P0=0x02;
 148   2                              delay(3);
 149   2                              seg3=1;
 150   2                        }
 151   1      
 152   1      }
 153          void dis_temp(uint t)
 154          {
 155   1            uchar i,j,k;
 156   1                i=t/100;
 157   1                j=t%100/10;
 158   1                k=t%100%10;
 159   1                display(i,j,k);
 160   1      }
 161          void warn(uint s,uchar led)
 162          {
 163   1            uchar i;
 164   1                i=s;
 165   1                beep=1;
 166   1                
 167   1                P1=~(led);
 168   1                while(i--)
 169   1                {
 170   2                        dis_temp(get_temp());
 171   2      
 172   2                }
 173   1                beep=0;
 174   1                P1=0xff;
 175   1                i=s;           //延时
 176   1                while(i--)
 177   1                {
 178   2                        dis_temp(get_temp());
 179   2      
C51 COMPILER V8.02   DS18B20                                                               07/23/2012 15:50:03 PAGE 4   

 180   2                }                  
 181   1      }
 182          void deal(uint t)
 183          {
 184   1            uchar i;
 185   1                if((t>warn_l1)&&(t<=warn_l2))
 186   1                {
 187   2                     warn(40,0x02);
 188   2                 }
 189   1                 else if(t<=warn_l1)
 190   1                 {
 191   2                     warn(10,0x01);
 192   2                 }        
 193   1                 else if((t<warn_h2)&&(t>=warn_h1))
 194   1                {
 195   2                     warn(40,0x04);
 196   2                 }
 197   1                 else if(t>=warn_h2)
 198   1                 {
 199   2                     warn(10,0x08);
 200   2                 }
 201   1                 else
 202   1                 {
 203   2                     i=40;
 204   2                         while(i--)
 205   2                         {
 206   3                              dis_temp(get_temp());
 207   3                         }
 208   2                      }
 209   1      
 210   1      }
 211          void init()
 212          {
 213   1           beep=0;
 214   1               seg0=1;
 215   1               seg1=1;
 216   1               seg2=1;
 217   1               seg3=1;
 218   1               flag=0;
 219   1      }
 220          void main()
 221          {
 222   1           uchar i;
 223   1           init();
 224   1               while(1)
 225   1               {
 226   2                   tempchange();
 227   2                       for(i=10;i>0;i--)
 228   2                       dis_temp(get_temp());
 229   2                       deal(temp);
 230   2                       dis_temp(get_temp());
 231   2                }
 232   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    705    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15       9
   IDATA SIZE       =   ----    ----
C51 COMPILER V8.02   DS18B20                                                               07/23/2012 15:50:03 PAGE 5   

   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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