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

📄 ds1802.lst

📁 基于51单片机
💻 LST
字号:
C51 COMPILER V6.12  DS1802                                                                 04/23/2008 15:12:07 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE DS1802
OBJECT MODULE PLACED IN D:\FSGUDO~1\单片机~1\DS1302~1\DS1802.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\FSGUDO~1\单片机~1\DS1302~1\DS1802.C DB SB OE

stmt level    source

   1          //这是一个温度采集模块的驱动程序。
   2          /*
   3              |----|
   4              | DS |   DS18B20管脚排列
   5              +----+
   6              |  | |
   7              |  | |
   8              |  | |----------Vdd        
   9              |  |------------DQ-->P2.7
  10              |---------------GND
  11          */
  12          #include <reg51.h>
  13          #include "intrins.h"
  14          
  15          //------------DS18B20控制命令-----------------------------
  16          #define T_CONVER 0x44  //开始温度转换
  17          #define T_READ 0xbe    //读暂存器
  18          #define T_WRITE 0x4e   //写暂存器
  19          #define T_ROM_JMP 0xcc  //忽略64ROM地址
  20          //------------------------------------------------------
  21          
  22          sbit DQ=P2^7;  //DS18B20数据输出端
  23          bit REC_suc=0;  //DS18B20成功复位标志位(1为成功0为失败)
  24          
  25          
  26          void DS18B20_init();  //DS18B20初始化函数
  27          void DS18B20_send(unsigned char in_data); //DS18B20发送一个字节数据函数
  28          unsigned char DS18B20_read(); //从DS18B20读取一个字节函数
  29          extern void delay(unsigned int i);
  30          
  31          
  32          
  33          /****************************DS18B20初始化函数**************************/
  34          /*函数原型:void DS18B20_init()
  35          /*函数功能:DS18B20初始化
  36          /*输入参数:无
  37          /*输出参数:无
  38          /*调用模块:无
  39          /*建立时间:2005/11/14
  40          /**********************************************************************/
  41          void DS18B20_init()
  42          {
  43   1        unsigned char i=1;
  44   1        DQ=0;
  45   1        DQ=1;
  46   1        delay(16);  //延时227(230)us=(22+16*13)us 
  47   1        DQ=0;
  48   1        delay(37);  //延时502us(503)us=(22+37*13)us 
  49   1        DQ=1;
  50   1        delay(2);  //等待DS18B20作出相应 延时40us(48)us=(22+2*13)us
  51   1        i=DQ;
  52   1        if(i==0)
  53   1          {
  54   2      	 REC_suc=1; //复位信号标志1为成功0为失败
  55   2      	}
C51 COMPILER V6.12  DS1802                                                                 04/23/2008 15:12:07 PAGE 2   

  56   1        else
  57   1          {
  58   2           REC_suc=0; 
  59   2          }
  60   1      }
  61          
  62          /****************************DS18B20发送函数**************************/
  63          /*函数原型:void DS18B20_send(unsigned char in_data)
  64          /*函数功能:DS18B20发送数据
  65          /*输入参数:要发送的数据
  66          /*输出参数:无
  67          /*调用模块:无
  68          /*建立时间:2005/11/14
  69          /**********************************************************************/
  70          void DS18B20_send(unsigned char in_data)
  71          {  
  72   1         unsigned char i,out_data,k;
  73   1          out_data=in_data;
  74   1         for(i=1;i<9;i++)  //串行发送数据
  75   1         { 
  76   2          DQ=0;
  77   2      	DQ=1;
  78   2      	_nop_();
  79   2          _nop_();
  80   2          k=out_data&0x01;
  81   2      	if(k==0x01)  //判断数据  写1
  82   2      	{
  83   3      	 DQ=1;
  84   3          }
  85   2      	else   //写0
  86   2          {
  87   3      	 DQ=0;
  88   3      	}
  89   2      	 delay(3);  //延时62us(61)us=(22+3*13)us
  90   2      	 DQ=1;
  91   2           out_data=_cror_(out_data,1);  //循环右移1位
  92   2        }
  93   1      }
  94           
  95          /**************************DS18B20读函数**************************/
  96          /*函数原型:void DS18B20_read()
  97          /*函数功能:DS18B20读数据
  98          /*输入参数:无
  99          /*输出参数:读到的一字节内容
 100          /*调用模块:无
 101          /*建立时间:2005/11/14
 102          /******************************************************************/
 103          unsigned char DS18B20_read()
 104          {
 105   1         unsigned char i,in_data,k;
 106   1         in_data=0;
 107   1          for(i=1;i<9;i++)  //串行发送数据
 108   1         { 
 109   2            DQ=0;
 110   2      	  DQ=1;
 111   2      	  _nop_();
 112   2      	  _nop_();
 113   2            k=DQ; //读DQ端
 114   2      	  if(k==1)  //读到的数据是1
 115   2      	 {
 116   3      	   in_data=in_data|0x01;
 117   3      	 }
C51 COMPILER V6.12  DS1802                                                                 04/23/2008 15:12:07 PAGE 3   

 118   2      	  else
 119   2      	 {
 120   3      	   in_data=in_data|0x00;
 121   3      	 }
 122   2      	 delay(2);  //延时51us(48)us=(22+2*13)us
 123   2      	 DQ=1;
 124   2      	 in_data=_cror_(in_data,1); //循环右移1位
 125   2         }
 126   1         return(in_data);
 127   1      }
 128             
 129          /**************************DS18B20读取温度函数*********************/
 130          /*函数原型:void ReadTemperature()
 131          /*函数功能:DS18B20读取温度转换好的数据
 132          /*输入参数:无
 133          /*输出参数:无
 134          /*调用模块:无
 135          /*建立时间:2005/11/15
 136          /******************************************************************/
 137          int ReadTemperature()
 138          {
 139   1      unsigned char T_L=0;
 140   1      unsigned char T_H=0;
 141   1      unsigned char k;
 142   1      int temp;  //转换好的温度数值
 143   1      DS18B20_init();
 144   1      DS18B20_send(T_ROM_JMP); // 跳过读序号列号的操作
 145   1      DS18B20_send(T_CONVER); // 启动温度转换
 146   1      DS18B20_init();
 147   1      if(REC_suc==1)
 148   1       {
 149   2        DS18B20_send(T_ROM_JMP); //跳过读序号列号的操作
 150   2        DS18B20_send(T_READ); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
 151   2      
 152   2        T_L=DS18B20_read();
 153   2        T_H=DS18B20_read();
 154   2      
 155   2        k=T_H&0x01; //T_H&0xf8; 
 156   2        if(k==0x01)
 157   2         {temp=0-(256-T_L)*5;}  //温度是负数  
 158   2        else
 159   2         {temp=T_L*5;}          //温度是正数
 160   2        }
 161   1      else
 162   1        {
 163   2          temp=9999;//ERROR代码
 164   2        }
 165   1        return(temp);
 166   1      }
 167          
C51 COMPILER V6.12  DS1802                                                                 04/23/2008 15:12:07 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
REC_suc. . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
_DS18B20_send. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  in_data. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  out_data . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
ReadTemperature. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  T_L. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  T_H. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  temp . . . . . . . . . . . . . . . .  AUTO     DATA   INT      0002H  2
DQ . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A7H  1
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
INT0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
DS18B20_read . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  in_data. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
DS18B20_init . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
RB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009AH  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
TB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009BH  1
EX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AAH  1
IT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008AH  1
P. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D0H  1
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
C51 COMPILER V6.12  DS1802                                                                 04/23/2008 15:12:07 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
_delay . . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1


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