📄 ds18b20.lst
字号:
C51 COMPILER V8.02 DS18B20 07/23/2012 15:50:03 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS18B20.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 sbit beep=P3^3;
5 sbit ds=P3^4;
6 sbit seg0=P3^5;
7 sbit seg1=P3^6;
8 sbit seg2=P3^7;
9 sbit seg3=P3^2;
10 sbit led0=P1^0;
11 sbit led1=P1^1;
12 sbit led2=P1^2;
13 sbit led3=P1^3;
14 uint temp;
15 float f_temp;
16 uchar flag;
17 uint warn_l1=20;
18 uint warn_l2=50;
19 uint warn_h1=320;
20 uint warn_h2=350;
21 uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
22 void delay(uint z)
23 {
24 1 uint i,j;
25 1 for(i=z;i>0;i--)
26 1 for(j=110;j>0;j--);
27 1 }
28 void reset()
29 {
30 1 uint j;
31 1 ds=0;
32 1 j=103;
33 1 while(j>0)j--;
34 1 ds=1;
35 1 j=4;
36 1 while(j>0)j--;
37 1 }
38 bit read_bit()
39 {
40 1 uint i;
41 1 bit dat;
42 1 ds=0;i++;
43 1 ds=1; i++; i++;
44 1 dat=ds;
45 1 i=8;
46 1 while(i>0)i--;
47 1 return(dat);
48 1 }
49 uchar read()
50 {
51 1 uchar i,j,dat;
52 1 dat=0;
53 1 for(i=0;i<8;i++)
54 1 {
55 2 j=read_bit();
C51 COMPILER V8.02 DS18B20 07/23/2012 15:50:03 PAGE 2
56 2 dat=dat|(j<<i);
57 2 }
58 1 return(dat);
59 1 }
60 void write(uchar dat)
61 {
62 1 uint i;
63 1 uchar j;
64 1 bit aa;
65 1 for(j=1;j<=8;j++)
66 1 {
67 2 aa=dat&0x01;
68 2 dat=dat>>1;
69 2 if(aa)
70 2 {
71 3 ds=0;
72 3 i++;
73 3 i++;
74 3 ds=1;
75 3 i=8;while(i>0)i--;
76 3 }
77 2 else
78 2 {
79 3 ds=0;
80 3 i=8;while(i>0)i--;
81 3 ds=1;
82 3 i++;
83 3 i++;
84 3 }
85 2 }
86 1
87 1 }
88 void tempchange()
89 {
90 1 reset();
91 1 delay(1);
92 1 write(0xcc);
93 1 write(0x44);
94 1
95 1 }
96 uint get_temp()
97 {
98 1 int a,b;
99 1 reset();
100 1 delay(1);
101 1 write(0xcc);
102 1 write(0xbe);
103 1 a=read();
104 1 b=read();
105 1 flag=0;
106 1 b=b&0x0f;
107 1 if(b>8)
108 1 {
109 2 flag=1;
110 2 b=b&0x07;
111 2 b=(b*256+a);
112 2 temp=2047-b+1;
113 2 }
114 1 else
115 1 {
116 2 b=b&0x07;
117 2 temp=(b*256+a);
C51 COMPILER V8.02 DS18B20 07/23/2012 15:50:03 PAGE 3
118 2 }
119 1 f_temp=temp*0.0625;
120 1 temp=(uint)(f_temp*10+0.5);
121 1 return(temp);
122 1 }
123 void display(uchar i,uchar j,uchar k)
124 {
125 1 P0=0xff;
126 1 seg0=0;
127 1 P0=table[i];
128 1 delay(3);
129 1 seg0=1;
130 1
131 1 P0=0xff;
132 1 seg1=0;
133 1 P0=table[j]+0x01;
134 1 delay(3);
135 1 seg1=1;
136 1
137 1 P0=0xff;
138 1 seg2=0;
139 1 P0=table[k];
140 1 delay(3);
141 1 seg2=1;
142 1
143 1 if(flag==1)
144 1 {
145 2 P0=0xff;
146 2 seg3=0;
147 2 P0=0x02;
148 2 delay(3);
149 2 seg3=1;
150 2 }
151 1
152 1 }
153 void dis_temp(uint t)
154 {
155 1 uchar i,j,k;
156 1 i=t/100;
157 1 j=t%100/10;
158 1 k=t%100%10;
159 1 display(i,j,k);
160 1 }
161 void warn(uint s,uchar led)
162 {
163 1 uchar i;
164 1 i=s;
165 1 beep=1;
166 1
167 1 P1=~(led);
168 1 while(i--)
169 1 {
170 2 dis_temp(get_temp());
171 2
172 2 }
173 1 beep=0;
174 1 P1=0xff;
175 1 i=s; //延时
176 1 while(i--)
177 1 {
178 2 dis_temp(get_temp());
179 2
C51 COMPILER V8.02 DS18B20 07/23/2012 15:50:03 PAGE 4
180 2 }
181 1 }
182 void deal(uint t)
183 {
184 1 uchar i;
185 1 if((t>warn_l1)&&(t<=warn_l2))
186 1 {
187 2 warn(40,0x02);
188 2 }
189 1 else if(t<=warn_l1)
190 1 {
191 2 warn(10,0x01);
192 2 }
193 1 else if((t<warn_h2)&&(t>=warn_h1))
194 1 {
195 2 warn(40,0x04);
196 2 }
197 1 else if(t>=warn_h2)
198 1 {
199 2 warn(10,0x08);
200 2 }
201 1 else
202 1 {
203 2 i=40;
204 2 while(i--)
205 2 {
206 3 dis_temp(get_temp());
207 3 }
208 2 }
209 1
210 1 }
211 void init()
212 {
213 1 beep=0;
214 1 seg0=1;
215 1 seg1=1;
216 1 seg2=1;
217 1 seg3=1;
218 1 flag=0;
219 1 }
220 void main()
221 {
222 1 uchar i;
223 1 init();
224 1 while(1)
225 1 {
226 2 tempchange();
227 2 for(i=10;i>0;i--)
228 2 dis_temp(get_temp());
229 2 deal(temp);
230 2 dis_temp(get_temp());
231 2 }
232 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 705 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 9
IDATA SIZE = ---- ----
C51 COMPILER V8.02 DS18B20 07/23/2012 15:50:03 PAGE 5
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -