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

📄 ds18b20n.lst

📁 压缩包中包括多个常用的汇编
💻 LST
字号:
C51 COMPILER V3.20,  SN-50203013  DS18B20N                                                 07/30/05  12:29:23  PAGE 1   


DOS C51 COMPILER V3.20, COMPILATION OF MODULE DS18B20N
OBJECT MODULE PLACED IN E:\C51PRJ\DS18B20\DS18B20N.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\C51PRJ\DS18B20\DS18B20N.C DB SB OE

stmt level    source

   1          /****************************************************************************/
   2          /*                                                                          */
   3          /*               Copyright (c) 2005, 老树工作室                             */
   4          /*                   All rights reserved.                                   */
   5          /*                                                                          */
   6          /*      http://www.saintone.net      Email:hxm0902@163.com                  */
   7          /*      QQ:112431149                 Tel:010-62966630                       */
   8          /*                                                                          */
   9          /****************************************************************************/
  10          /****************************************************************************/
  11          /* 文件名:ds18b20.c                                                        */
  12          /* 版  本:Version 1.0                                                      */
  13          /* 描  述:单总线温度计ds18b20驱动代码                                      */
  14          /* 作  者:spot                                                             */
  15          /* 函  数:                                                                 */
  16          /*         delay_18b20                                                      */
  17          /*         ow_reset                                                         */
  18          /*         read_bit                                                         */
  19          /*         write_bit                                                        */
  20          /*         read_byte                                                        */
  21          /*         write_byte                                                       */
  22          /*         get_temperature                                                  */
  23          /*                                                                          */
  24          /* 历史记录:                                                               */
  25          /*  spot          2005-06-20     Creat Inital version. (Version 1.0)        */
  26          /****************************************************************************/
  27          
  28          #include <reg52.h>
  29          #include <absacc.h>
  30          #include <intrins.h>
  31          
  32          #define ERR 0xffff;
  33          
  34          typedef unsigned char u_char;
  35          typedef unsigned int  u_int;
  36          
  37          sbit DQ = P0^3;
  38          
  39          /* 函数声明 */
  40          bit ow_reset(void);              /* 初始化DS18B20子程序  */
  41          bit read_bit(void);              /* 从DS18B20读出1位     */
  42          void write_bit(u_char bitval);   /* 向DS18B20写入1位     */
  43          u_char read_byte(void);          /* 从DS18B20读出1个字节 */
  44          void write_byte(u_char val);     /* 向DS18B20写入1个字节 */
  45          u_int get_temperature(void);     /* 读取温度子程序       */
  46          /* 声明结束 */
  47          
  48          /* 延时子程序           */
  49          void delay_18b20 (u_int us)
  50          {
  51   1          while (us--);
  52   1      }
  53          
  54          /* 初始化DS18B20子程序  */
  55          bit ow_reset(void)
C51 COMPILER V3.20,  SN-50203013  DS18B20N                                                 07/30/05  12:29:23  PAGE 2   

  56          {
  57   1          bit presence = 0;
  58   1          DQ = 1;
  59   1          delay_18b20(8); /*add 20050730*/
  60   1          DQ = 0;
  61   1          delay_18b20(80);                    /* 保持低电平480μs以上 */
  62   1          DQ = 1;
  63   1          delay_18b20(14);                    /* 等待DS18B20响应     */
  64   1      
  65   1          presence = DQ;
  66   1          delay_18b20(8); /*add 20050730*/
  67   1          return presence;
  68   1      }
  69          
  70          /* 从DS18B20读出1位     */
  71          bit read_bit(void)
  72          {
  73   1          DQ = 0;
  74   1          delay_18b20(0);                     /* 保持低电平1us以上    */
  75   1          DQ = 1;
  76   1      
  77   1          if(DQ)
  78   1          {
  79   2              return 1;
  80   2          }
  81   1          else
  82   1          {
  83   2              return 0;
  84   2          }
  85   1      }
  86          
  87          /* 向DS18B20写入1位     */
  88          void write_bit(u_char bitval)
  89          {
  90   1          DQ = 0;
  91   1          delay_18b20(0);                     /* 主机在大于1us小于15us之内写数据 */
  92   1          if(bitval)
  93   1          {
  94   2              DQ = 1;
  95   2          }
  96   1          delay_18b20(9);                     /* DS18B20在15us到60us内采样数据  */
  97   1      
  98   1          DQ = 1;
  99   1      }
 100          
 101          /* 从DS18B20读出1个字节 */
 102          u_char read_byte(void)
 103          {
 104   1          u_char i;
 105   1          u_char value = 0;
 106   1      
 107   1          for (i = 0; i < 8; i++)
 108   1          {
 109   2              if(read_bit())
 110   2              {
 111   3                  value|= (0x01<<i);
 112   3              }
 113   2              delay_18b20(10);                /*  读时序至少60us        */
 114   2          }
 115   1          return(value);
 116   1      }
 117          
C51 COMPILER V3.20,  SN-50203013  DS18B20N                                                 07/30/05  12:29:23  PAGE 3   

 118          /* 向DS18B20写入1个字节 */
 119          void write_byte(u_char val)
 120          {
 121   1          u_char i;
 122   1          u_char temp;
 123   1      
 124   1          for (i = 0; i < 8; i++)             /* 从LSB开始写入,每次写1位 */
 125   1          {
 126   2              temp = val>>i;
 127   2              temp &= 0x01;
 128   2              write_bit(temp);
 129   2          }
 130   1      }
 131          
 132          /* 读取温度子程序       */
 133          u_int get_temperature(void)
 134          {
 135   1          u_char tempture_msb;
 136   1          u_char tempture_lsb;
 137   1          u_int temperature;
 138   1          if(ow_reset())                      /* 发送复位信号            */
 139   1          {
 140   2              return ERR;
 141   2          }
 142   1          else
 143   1          {
 144   2          	write_byte(0xcc); 	        /* 跳过ROM                 */
 145   2          	write_byte(0x44);	        /* 发送转换温度命令        */
 146   2      
 147   2          	ow_reset();
 148   2          	write_byte(0xcc);
 149   2          	write_byte(0xBE);	        /* 发送读memory命令        */
 150   2          	tempture_lsb=read_byte();
 151   2          	tempture_msb=read_byte();
 152   2          	ow_reset();
 153   2          	temperature=(tempture_msb << 8) | tempture_lsb;
 154   2      
 155   2          	return temperature;
 156   2          }
 157   1      }
 158          
 159          main()
 160          {
 161   1          u_int temperature = 0;
 162   1          while(1)
 163   1          {
 164   2              temperature = get_temperature();
 165   2              delay_18b20(10000);
 166   2          }
 167   1      }
C51 COMPILER V3.20,  SN-50203013  DS18B20N                                                 07/30/05  12:29:23  PAGE 4   

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


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
_delay_18b20 . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  us . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
T2 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
DQ . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0083H  1
T2IE . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CDH  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
BGEN . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CBH  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
T2IP . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CEH  1
u_int. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
T2EX . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
_write_byte. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  val. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
  temp . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  temperature. . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
C_T2 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C9H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
_write_bit . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  bitval . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
read_byte. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
read_bit . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
CP_RL2 . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00C8H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
ET2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ADH  1
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
TF2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CFH  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
C51 COMPILER V3.20,  SN-50203013  DS18B20N                                                 07/30/05  12:29:23  PAGE 5   

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


PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
PT2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BDH  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
get_temperature. . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  tempture_msb . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  tempture_lsb . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
  temperature. . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
TR2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CAH  1
PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
ow_reset . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     -----  -----
  presence . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
T2RSE. . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00CCH  1
u_char . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1


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