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

📄 ds18b20.lst

📁 nokia5110智能电子钟的设计ds1302+ds18b20+stc12c5a60s2
💻 LST
字号:
C51 COMPILER V9.00   DS18B20                                                               07/01/2013 12:13:30 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN ..\output\ds18b20.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\c_file\ds18b20.c BROWSE INCDIR(..\c_file;..\h_file;..\output;..\project)
                    - DEBUG OBJECTEXTEND PRINT(.\ds18b20.lst) OBJECT(..\output\ds18b20.obj)

line level    source

   1          # include "stc12c5a60s2.h"
   2          #include "INTRINS.H" 
   3          # include "macroandconst.h"
   4          # include "main.h"
   5          # include "nokia5110.h"
   6          # include "delay.h"
   7          sbit DQ = P1^5;                     //DS18B20的数据口位P3.3 
   8          
   9          BYTE TPH;                           //存放温度值的高字节 
  10          BYTE TPL;                           //存放温度值的低字节 
  11          
  12          void DelayXus(BYTE n); 
  13          void DS18B20_Reset(); 
  14          void DS18B20_WriteByte(BYTE dat); 
  15          BYTE DS18B20_ReadByte();
  16          uint get_temperatuerResult();
  17          
  18           
  19          uint get_temperatuerResult() 
  20          { 
  21   1              uint temperatuerResult;
  22   1          DS18B20_Reset();                //设备复位 
  23   1          DS18B20_WriteByte(0xCC);        //跳过ROM命令 
  24   1          DS18B20_WriteByte(0x44);        //开始转换命令 
  25   1          while (!DQ);                    //等待转换完成     
  26   1              DS18B20_Reset();                //设备复位 
  27   1          DS18B20_WriteByte(0xCC);        //跳过ROM命令 
  28   1          DS18B20_WriteByte(0xBE);        //读暂存存储器命令 
  29   1      
  30   1          TPL = DS18B20_ReadByte();       //读温度低字节 
  31   1          TPH = DS18B20_ReadByte();       //读温度高字节 
  32   1      
  33   1              temperatuerResult=TPH<<8;
  34   1          temperatuerResult|=TPL;
  35   1              return  temperatuerResult;
  36   1                  
  37   1      } 
  38          
  39           /************************************** 
  40          复位DS18B20,并检测设备是否存在 
  41          **************************************/ 
  42          void DS18B20_Reset() 
  43          { 
  44   1          CY = 1; 
  45   1          while (CY) 
  46   1          { 
  47   2              DQ = 0;                     //送出低电平复位信号 
  48   2              DelayXus(240);              //延时至少480us 
  49   2              DelayXus(240); 
  50   2              DQ = 1;                     //释放数据线 
  51   2              DelayXus(60);               //等待60us 
  52   2              CY = DQ;                    //检测存在脉冲 
  53   2              DelayXus(240);              //等待设备释放数据线 
  54   2              DelayXus(180); 
C51 COMPILER V9.00   DS18B20                                                               07/01/2013 12:13:30 PAGE 2   

  55   2          } 
  56   1      } /************************************** 
  57          从DS18B20读1字节数据 
  58          **************************************/ 
  59          BYTE DS18B20_ReadByte() 
  60          { 
  61   1          BYTE i; 
  62   1          BYTE dat = 0;     for (i=0; i<8; i++)             //8位计数器 
  63   1          { 
  64   2              dat >>= 1; 
  65   2              DQ = 0;                     //开始时间片 
  66   2              DelayXus(1);                //延时等待 
  67   2              DQ = 1;                     //准备接收 
  68   2              DelayXus(1);                //接收延时 
  69   2              if (DQ) dat |= 0x80;        //读取数据 
  70   2              DelayXus(60);               //等待时间片结束 
  71   2          }     
  72   1              return dat; 
  73   1      } /************************************** 
  74          向DS18B20写1字节数据 
  75          **************************************/ 
  76          void DS18B20_WriteByte(BYTE dat) 
  77          { 
  78   1          char i;     for (i=0; i<8; i++)             //8位计数器 
  79   1          { 
  80   2              DQ = 0;                     //开始时间片 
  81   2              DelayXus(1);                //延时等待 
  82   2              dat >>= 1;                  //送出数据 
  83   2              DQ = CY; 
  84   2              DelayXus(60);               //等待时间片结束 
  85   2              DQ = 1;                     //恢复数据线 
  86   2              DelayXus(1);                //恢复延时 
  87   2          } 
  88   1      } 
  89          
  90          void temperatuercheck()
  91          {               
  92   1                uint WENDU;
  93   1                //uchar warring;
  94   1                uchar ge,shi,bai,xiaoshu;
  95   1                WENDU=get_temperatuerResult()*0.625;//放大十倍;
  96   1      
  97   1                LCD_write_hanzi(0,0,6);
  98   1                LCD_write_hanzi(1,0,7);       //temperature
  99   1      
 100   1                LCD_write_hanzi(3,2,11);
 101   1                bai=WENDU/1000;
 102   1                shi=WENDU/100%10;
 103   1                ge=WENDU/10%10;
 104   1                xiaoshu=WENDU%10;
 105   1                if(bai!=0)
 106   1                LCD_write_shu(1,2,bai);
 107   1                else
 108   1                LCD_write_shu(1,2,90);
 109   1      
 110   1                LCD_write_shu(2,2,shi);
 111   1                LCD_write_shu(3,2,ge);
 112   1                LCD_write_shu(4,2,87);
 113   1                LCD_write_shu(5,2,xiaoshu);
 114   1                
 115   1      
 116   1      
C51 COMPILER V9.00   DS18B20                                                               07/01/2013 12:13:30 PAGE 3   

 117   1      
 118   1                //warring=(WENDU/10)*10+(WENDU%10);
 119   1      
 120   1                //if(warring>42)beep=0;
 121   1                //else beep=1;
 122   1      }
 123          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    346    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       9
   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 + -