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

📄 18b20.lst

📁 自制实验DS18b20.rar实现温度精确显示
💻 LST
字号:
C51 COMPILER V8.02   18B20                                                                 04/09/2009 23:55:27 PAGE 1   


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

line level    source

   1          #include  <reg51.h> 
   2          #include <intrins.h>
   3          #include"7219.h"
   4          
   5          #define uint unsigned int
   6          #define uchar unsigned char
   7          uint qian,bai,shi,ge;
   8          float temps;//距离的个位、十位、百位
   9          uchar k[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};
  10          
  11          
  12          sbit temp=P0^6;
  13          bit yes;
  14          
  15          void delay1820(uchar w)
  16          {
  17   1              unsigned char k;
  18   1        for(k=w;k>0;k--)
  19   1        {}//延时计算方法 w*8+19
  20   1      }
  21          
  22          void delay13us1820()
  23          {
  24   1              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  25   1      }
  26          void init1820()
  27          {
  28   1              temp=0;
  29   1              delay1820(90);
  30   1              temp=1;
  31   1              delay13us1820();
  32   1              while(temp);
  33   1      
  34   1              delay1820(4);
  35   1              temp=1;
  36   1              delay1820(60);
  37   1                      
  38   1      }
  39          
  40          void write1820(uchar wdata)
  41          {
  42   1              char i,t;
  43   1              for(i=8;i>0;i--)
  44   1              {
  45   2                      
  46   2                      t=wdata&0x01;
  47   2                      temp=0;
  48   2                      _nop_();
  49   2                      _nop_();
  50   2              if(t)
  51   2                      temp=t;
  52   2                      delay1820(6);
  53   2                      temp=1;           
  54   2                      wdata=wdata>>1;
  55   2                      delay1820(3);
C51 COMPILER V8.02   18B20                                                                 04/09/2009 23:55:27 PAGE 2   

  56   2              }       
  57   1      }
  58          
  59          uchar read1820()
  60          {
  61   1              char i;
  62   1              uchar dat;
  63   1              for(i=8;i>0;i--)
  64   1              {
  65   2                      dat>>=1;
  66   2                      temp=0;
  67   2                      _nop_();
  68   2                      temp=1;
  69   2                      delay13us1820();
  70   2                      if(temp)
  71   2                              dat|=0x80;
  72   2                              temp=1;
  73   2                  delay1820(6);       
  74   2              }
  75   1              return(dat);
  76   1      }
  77          void max7219show()
  78           {
  79   1              Write(0x04,k[ge]);
  80   1              Write(0x03,k[shi]);
  81   1          Write(0x02,k[bai]);
  82   1              Write(0x01,k[qian]);
  83   1      }
  84          
  85          void readtemp()
  86          {
  87   1                      uint templ,temph;
  88   1                  init1820();
  89   1                      write1820(0xcc);
  90   1                      write1820(0x44);   
  91   1                      init1820();
  92   1                      write1820(0xcc);
  93   1                      write1820(0xbe);
  94   1                      templ=read1820();
  95   1                      temph=read1820();
  96   1                      //templ=(templ>>4)&0x0f;
  97   1                      temph=(temph<<8);//&0x07;
  98   1                      temps=templ|temph;
  99   1                      temps=temps*0.0625;
 100   1                      temps=temps*100;
 101   1      }
 102          void work(void)
 103          { uint value;
 104   1        value=temps;
 105   1        qian=value/1000;
 106   1        bai=(value-qian*1000)/100;
 107   1        shi=(value-qian*1000-bai*100)/10;
 108   1        ge=value-qian*1000-bai*100-shi*10;
 109   1       
 110   1      }
 111          void main()
 112          {
 113   1              
 114   1              init7219();
 115   1              while(1)
 116   1              {
 117   2                      readtemp();    
C51 COMPILER V8.02   18B20                                                                 04/09/2009 23:55:27 PAGE 3   

 118   2                      work();
 119   2              max7219show();
 120   2                      delay1820(50000);
 121   2                              delay1820(50000);
 122   2                              delay1820(50000);
 123   2                              delay1820(50000);
 124   2                              delay1820(50000);
 125   2                              delay1820(50000);
 126   2                              delay1820(50000);
 127   2                      
 128   2              }
 129   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    590    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     22       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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