📄 ds18b20.lst
字号:
C51 COMPILER V7.06 DS18B20 12/30/2010 18:19:41 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN ds18b20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds18b20.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "reg52.h"
2 #include "delay.h"
3 #include "intrins.h"
4 sbit dq=P1^4;
5 void rest()
6 {
7 1 dq=0;
8 1 delay_n10us(60);
9 1 dq=1;
10 1 delay_n10us(60);
11 1 }
12
13 void write1()
14 {
15 1 dq=0;
16 1 _nop_();_nop_();
17 1 _nop_();_nop_();
18 1 dq=1;
19 1 delay_n10us(7);
20 1 }
21
22 void write0()
23 {
24 1 dq=0;
25 1 delay_n10us(8);
26 1 dq=1;
27 1 }
28
29 bit read()
30 {
31 1 bit temp;
32 1 dq=0;
33 1 _nop_();_nop_();
34 1 _nop_();
35 1 dq=1;_nop_();
36 1 if(dq)temp=1;
37 1 else temp=0;
38 1 delay_n10us(8);
39 1 return temp;
40 1 }
41
42 void write_18b20_data(unsigned char date)
43 {
44 1 unsigned char m;
45 1 dq=1;
46 1 for(m=0;m<8;m++)
47 1 {
48 2 if(date&0x01)write1();
49 2 else write0();
50 2 date=date>>1;
51 2 }
52 1 }
53
54 unsigned char read_18b20_data()
55 {
C51 COMPILER V7.06 DS18B20 12/30/2010 18:19:41 PAGE 2
56 1 unsigned char m;
57 1 unsigned char date=0;
58 1 dq=1;
59 1 for(m=0;m<8;m++)
60 1 {
61 2 date=date>>1;
62 2 if(read())date=date|0x80;
63 2 }
64 1 return date;
65 1 }
66
67 void ini_18b20()
68 {
69 1 EA=0;
70 1 rest();
71 1 write_18b20_data(0xcc); //跳过ROM匹配
72 1 write_18b20_data(0x4e); //发写寄存器指令
73 1 write_18b20_data(0x7d); //写高温报警125
74 1 write_18b20_data(0xc9); //写低温报警-55
75 1 write_18b20_data(0x00); //写转换模式10位模式,100m
76 1 EA=1;
77 1 }
78 unsigned char read_tempuature()
79 {
80 1 unsigned char htem,ltem,tempuature=0;
81 1 EA=0;
82 1 rest();
83 1 write_18b20_data(0xcc); //跳过ROM匹配
84 1 write_18b20_data(0x44); //发送转换指令
85 1 EA=1;
86 1 delay_ms(150);
87 1 EA=0;
88 1 rest();
89 1 write_18b20_data(0xcc); //跳过ROM匹配
90 1 write_18b20_data(0xbe); //发送读RAM指令
91 1 ltem=read_18b20_data(); //读温度低位
92 1 htem=read_18b20_data(); //读间谍高位
93 1 rest();
94 1 htem=htem<<5;
95 1 ltem=ltem>>3;
96 1 tempuature=tempuature|htem;
97 1 tempuature=tempuature|ltem;
98 1 EA=1;
99 1 return tempuature;
100 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 249 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
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 + -