📄 ds18b20.lst
字号:
145 void write_scratchPad(uchar DTNo) // 系统主机向指定的DS18B20中写入TH、TL及配置寄存器数据
146 {
147 send_matchRom(DTNo); // 向总线发出匹配ROM命令,使编号为DTNo的器件处于选中状态
148 write_byte(0x4E); // 向总线发出写便笺存储器命令
149
150 write_byte(TH);
151 write_byte(TL);
152 write_byte(confgReg);
153
154 }
155
156
157 void read_ROMID(void) // 总线上只有一个DS18B20时,主机读出它的64位ROM代码
158 {
159 uchar i;
160 write_byte(0x33); // 启动读ROM
161 for(i=0;i<8;i++)
162 {
163 ROMID[0][i]=read_byte();
164 }
165 }*/
166
167
168 main()
169 {
170 1
171 1 uchar i,k,th,tl;
172 1 unit t=0;
173 1 float result;
174 1 P1=0x7f;
175 1 DQ=0;
176 1 initial();
177 1 TR1=1;
178 1
179 1
C51 COMPILER V7.50 DS18B20 01/09/2006 16:57:59 PAGE 4
180 1 while(1)
181 1 {
182 2
183 2 i=bus_reset(); // 如果总线上没有DS18B20,就等待
184 2 if(i==0)LED=0;
185 2 /* read_ROMID(); // 读出它的序列号
186 2 for(i=0;i<8;i++)
187 2 {
188 2 SBUF=ROMID[0][i];
189 2 while(TI==0);
190 2 TI=0;
191 2 }*/
192 2 // delay_1s();
193 2 // send_matchRom(0); // 匹配第0个传感器
194 2 // write_scratchPad(0); // 写入TH、TL、配置寄存器
195 2 write_byte(0xCC);
196 2 write_byte(0x44); // 启动转换
197 2 while(!read_bit()); // DQ 为低电平,等待,DQ为高表示转换结束
198 2
199 2 bus_reset();
200 2 // read_scratchPad(0); // 读取温度值,scratchPad的前两个字节就是温度
201 2 write_byte(0xCC);
202 2 write_byte(0xBE);
203 2
204 2 tl=read_byte();
205 2 th=read_byte();
206 2 tl&=0xfc; // 精度是10位,因此最低两位无效,屏蔽掉
207 2 t=th;
208 2 t<<=8;
209 2 t|=tl;
210 2 result=t*0.0625;
211 2 k=(uchar)result;
212 2
213 2 LED=!LED; // 发光二极管亮,提示发出一个数据
214 2
215 2 SBUF=k;
216 2 while(TI==0);
217 2 TI=0;
218 2 delay_1s();
219 2
220 2
221 2 }
222 1 }
223
224
225
226
227
228
C51 COMPILER V7.50 DS18B20 01/09/2006 16:57:59 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
scratchPad . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0000H 9
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
DQ . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0097H 1
delay_1s . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
TH . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0009H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
TL . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 000AH 1
_write_byte. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
val. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
temp . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
th . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
tl . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
t. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
result . . . . . . . . . . . . . . . * REG * DATA FLOAT 0004H 4
_write_bit . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
bitval . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
confgReg . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 000BH 1
SBUF . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0099H 1
PCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
read_byte. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
value. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
read_bit . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
TL1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008BH 1
bus_reset. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
presence . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
LED. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0096H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
initial. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_delay . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
time . . . . . . . . . . . . . . . . * REG * DATA INT 0006H 2
i. . . . . . . . . . . . . . . . . . * REG * DATA INT 0004H 2
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
ROMID. . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 000CH 80
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 308 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 92 2
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
C51 COMPILER V7.50 DS18B20 01/09/2006 16:57:59 PAGE 6
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -