📄 ds1802.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 + -