📄 温测b.lst
字号:
201 {
202 1 while( x-- );
203 1 }
204 void writecommandtods18b20( uchar command )
205 {
206 1 uchar a;
207 1 for( a=8; a>0; a-- )
208 1 {
209 2 DQ = 0;
210 2 _nop_(); // dalay 5us;
211 2 _nop_();
212 2 _nop_();
213 2 DQ = command&0x01;
214 2 DS1820_delay(5); //dalay 60us;
215 2 command >>= 1;
216 2 DQ = 1;
217 2 _nop_(); // dalay 5us;
218 2 _nop_();
219 2 _nop_();
220 2 }
221 1 }
222 uchar readdatafromds18b20()
223 {
224 1 uchar i;
225 1 uchar da;
226 1 for( i=8; i>0; i-- )
227 1 {
228 2 DQ = 0;
229 2 _nop_();
230 2 da >>= 1; //delay 1us;
231 2 DQ = 1;
232 2 if (DQ)
233 2 da |= 0x80;
234 2 DS1820_delay(4); // dalay 50us;
235 2 _nop_(); // dalay 5us;
236 2 _nop_();
237 2 }
238 1 return da;
239 1 }
240 void resetpulse()
241 {
C51 COMPILER V8.05a 温测B 07/04/2008 19:10:02 PAGE 5
242 1 loop:
243 1 DQ = 1;
244 1 _nop_(); // dalay 5us;
245 1 _nop_();
246 1 _nop_();
247 1 _nop_();
248 1 _nop_();
249 1 DQ = 0;
250 1 DS1820_delay(80); //delay >480us;
251 1 DQ = 1;
252 1 DS1820_delay(10); //delay = 100us;
253 1 if( DQ )
254 1 goto loop;
255 1 DS1820_delay(20);
256 1 DQ = 1;
257 1 _nop_(); // dalay 5us;
258 1 _nop_();
259 1 _nop_();
260 1 _nop_();
261 1 _nop_();
262 1 }
263 void IIC_delay(uchar x)
264 {
265 1 uint i;
266 1 for(i=0;i<x;i++);
267 1 }
268
269 void flash()
270 { ; ; }
271 void x24c02_init() //24c02初始化子程序
272 {
273 1 scl=1;
274 1 flash();
275 1 sda=1;
276 1 flash();
277 1 }
278 void start() //启动I2C总线
279 {
280 1 sda=1;
281 1 flash();
282 1 scl=1;
283 1 flash();
284 1 sda=0;
285 1 flash();
286 1 scl=0;
287 1 flash();
288 1 }
289 void stop() //停止I2C总线
290 {
291 1 sda=0;
292 1 flash();
293 1 scl=1;
294 1 flash();
295 1 sda=1;
296 1 flash();
297 1 }
298 void writex(uchar j) //写一个字节
299 {
300 1 uchar i,temp;
301 1 temp=j;
302 1 for (i=0;i<8;i++)
303 1 {
C51 COMPILER V8.05a 温测B 07/04/2008 19:10:02 PAGE 6
304 2 temp=temp<<1;
305 2 scl=0;
306 2 flash();
307 2 sda=CY;
308 2 flash();
309 2 scl=1;
310 2 flash();
311 2 }
312 1
313 1 scl=0;
314 1 flash();
315 1 sda=1;
316 1 flash();
317 1 }
318 uchar readx() //读一个字节
319 {
320 1 uchar i,j,k=0;
321 1 scl=0;
322 1 flash();
323 1 sda=1;
324 1 for (i=0;i<8;i++)
325 1 {
326 2 flash();
327 2 scl=1;
328 2 flash();
329 2 if (sda==1) j=1;
330 2 else j=0;
331 2 k=(k<<1)|j;
332 2 scl=0;
333 2 }
334 1 flash();
335 1 return(k);
336 1 }
337 void clock() //I2C总线时钟
338 {
339 1 uchar i=0;
340 1 scl=1;
341 1 flash();
342 1 while ((sda==1)&&(i<255))i++;
343 1 scl=0;
344 1 flash();
345 1 }
346
347 ////////从24c02的地址address中读取一个字节数据/////
348
349 uchar x24c02_read(uchar address)
350 {
351 1 uchar i;
352 1 start();
353 1 writex(0xa0);
354 1 clock();
355 1 writex(address);
356 1 clock();
357 1 start();
358 1 writex(0xa1);
359 1 clock();
360 1 i=readx();
361 1 stop();
362 1 IIC_delay(10);
363 1 return(i);
364 1 }
365
C51 COMPILER V8.05a 温测B 07/04/2008 19:10:02 PAGE 7
366 //////向24c02的address地址中写入一字节数据info/////
367
368 void x24c02_write(uchar address,uchar info)
369 {
370 1 EA=0;
371 1 start();
372 1 writex(0xa0);
373 1 clock();
374 1 writex(address);
375 1 clock();
376 1 writex(info);
377 1 clock();
378 1 stop();
379 1 EA=1;
380 1 IIC_delay(100);
381 1 }
382 void MCU_init()
383 {
384 1 TMOD=0x11;
385 1 TH0=(65536-4000)/256;
386 1 TL0=(65536-4000)%256;
387 1 ET0=1;
388 1 TH1=(65536-4000)/256;
389 1 TL1=(65536-4000)%256;
390 1 ET1=1;
391 1 TR1=0;
392 1 EA=1;
393 1 TR0=1;
394 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1269 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 62 ----
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 + -