📄 text1.lst
字号:
247 1 else
248 1 DQ0=1;
249 1 delay15();
250 1 delay15(); //----delay 30us-----
251 1 // while(DQ);
252 1 if(dqhao)
253 1 {
254 2 while(DQ1); //无DS18B20存在时,等待
255 2 for(i=0;i<8;i++)
256 2 delay60();
257 2 }
258 1 else
259 1 {
260 2 while(DQ0);
261 2 for(i=0;i<8;i++)
262 2 delay60();
263 2 }
264 1 //DQ=1; //over
265 1 if(dqhao)
266 1 DQ1=1;
267 1 else
268 1 DQ0=1;
269 1 }
270
271 void bit_w(uchar b,uchar dqhao) //write bit data to DQ
272 {
273 1 // DQ=1;
274 1 if(dqhao)
275 1 DQ1=1;
276 1 else
277 1 DQ0=1;
278 1
279 1 // DQ=0;
280 1 if(dqhao)
281 1 DQ1=0;
282 1 else
283 1 DQ0=0;
284 1 _nop_ ;
*** WARNING C275 IN LINE 284 OF TEXT1.C: expression with possibly no effect
285 1 _nop_ ;
*** WARNING C275 IN LINE 285 OF TEXT1.C: expression with possibly no effect
286 1 _nop_ ;
*** WARNING C275 IN LINE 286 OF TEXT1.C: expression with possibly no effect
287 1 _nop_ ;
*** WARNING C275 IN LINE 287 OF TEXT1.C: expression with possibly no effect
288 1 _nop_ ;
*** WARNING C275 IN LINE 288 OF TEXT1.C: expression with possibly no effect
289 1 // DQ=b;
290 1 if(dqhao)
291 1 DQ1=b;
292 1 else
293 1 DQ0=b;
294 1 delay60(); //delay 60us
295 1 // DQ=1; //over
296 1 if(dqhao)
297 1 DQ1=1;
298 1 else
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 6
299 1 DQ0=1;
300 1 _nop_ ;
*** WARNING C275 IN LINE 300 OF TEXT1.C: expression with possibly no effect
301 1 }
302
303 void byte_w(uchar byte,uchar dqhao) //write byte data to DQ
304 {
305 1 uchar i;
306 1 uchar b;
307 1 for(i=0;i<8;i++)
308 1 {
309 2 b=byte&0x01;
310 2 bit_w(b,dqhao);
311 2 byte=byte>>1;
312 2 }
313 1 }
314
315 bit bit_r(uchar dqhao) //从DQ读一位数据
316 {
317 1 bit b;
318 1 // DQ =1;
319 1 if(dqhao)
320 1 DQ1=1;
321 1 else
322 1 DQ0=1;
323 1 // DQ=0;
324 1 if(dqhao)
325 1 DQ1=0;
326 1 else
327 1 DQ0=0;
328 1 _nop_;
*** WARNING C275 IN LINE 328 OF TEXT1.C: expression with possibly no effect
329 1 _nop_;
*** WARNING C275 IN LINE 329 OF TEXT1.C: expression with possibly no effect
330 1 _nop_;
*** WARNING C275 IN LINE 330 OF TEXT1.C: expression with possibly no effect
331 1 // DQ=1;
332 1 if(dqhao)
333 1 DQ1=1;
334 1 else
335 1 DQ0=1;
336 1 _nop_;
*** WARNING C275 IN LINE 336 OF TEXT1.C: expression with possibly no effect
337 1 _nop_;
*** WARNING C275 IN LINE 337 OF TEXT1.C: expression with possibly no effect
338 1 // b=DQ;
339 1 if(dqhao)
340 1 b=DQ1;
341 1 else
342 1 b=DQ0;
343 1 delay60();
344 1 // DQ=1; //over
345 1 if(dqhao)
346 1 DQ1=1;
347 1 else
348 1 DQ0=1;
349 1 _nop_;
*** WARNING C275 IN LINE 349 OF TEXT1.C: expression with possibly no effect
350 1 return b;
351 1 }
352
353
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 7
354 uchar byte_r(uchar dqhao) //read byte data from DQ
355 {
356 1 uchar i,j;
357 1 bit b;
358 1 j=0;
359 1 for(i=0;i<8;i++)
360 1 {
361 2 b=bit_r(dqhao);
362 2 if(b)
363 2 {
364 3 j+=1;
365 3 }
366 2 j=_cror_(j,1); //sycle right shift a bit
367 2 }
368 1 return j;
369 1
370 1 }
371 uchar gettemp(uchar dqhao)
372 {
373 1 uchar temp1,temp2;
374 1 reset(dqhao) ;
375 1 byte_w(0xcc,dqhao) ; //跳过ROM
376 1 byte_w(0x44,dqhao) ; //温度变换
377 1 delay100m() ;
378 1 reset(dqhao);
379 1 byte_w(0xcc,dqhao) ;
380 1 byte_w(0xBE) ; //读暂存器
*** WARNING C209 IN LINE 380 OF TEXT1.C: '_byte_w': too few actual parameters
381 1 temp2=byte_r(dqhao);
382 1 temp1=byte_r(dqhao);
383 1 delay100m();
384 1 temp1=temp1<<4;
385 1 temp1+=(temp2&0xf0)>>4;
386 1
387 1 return temp1;
388 1
389 1 }
390
391
392 /******************************************************************/
393 /* 文字显示、温度数据显示与发送程序 */
394 /******************************************************************/
395
396 void wenzi() //文字显示
397 {
398 1 hz16x16(0,0,xu) ;
399 1 hz16x16(0,1,hao) ;
400 1 hz16x16(0,3,wen) ;
401 1 hz16x16(0,4,du) ;
402 1 hz16x16(0,6,zhuang) ;
403 1 hz16x16(0,7,tai) ;
404 1
405 1 }
406 void send(uchar dat) //串口发送子程序
407 {
408 1 ES=0;
409 1 SBUF=dat;
410 1 while(!TI);
411 1 TI=0;
412 1 ES=1;
413 1 }
414 void wendu(uchar dqhao) //温度数据显示与发送程序
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 8
415 {
416 1
417 1 uchar bai,shi,ge,dq,wenduodata;
418 1 dq=dqhao;
419 1 wenduodata=gettemp(dqhao);
420 1 bai=wenduodata/100;
421 1 shi=wenduodata%100/10;
422 1 ge=(wenduodata%100)%10 ;
423 1 zf8x16(dq+2,0,no);
424 1 sz8x8(dq+2,2,z[dq]);
425 1 sz8x8(dq+2,6,z[bai]);
426 1 sz8x8(dq+2,7,z[shi]);
427 1 sz8x8(dq+2,8,z[ge]);
428 1
429 1 send(0x30+dq); //数字加上0x30转为相应字符ASCII码
430 1 send(0x20);
431 1 send(0x30+bai);
432 1 send(0x30+shi);
433 1 send(0x30+ge);
434 1 send(0x20);
435 1
436 1
437 1 if(wenduodata==0)
438 1 zf8x16(dq+2,6,off);
439 1 else
440 1 zf8x16(dq+2,6,on);
441 1 }
442
443
444 /*****************************************************************/
445 /* main程序 */
446 /*****************************************************************/
447 main()
448 {
449 1 TMOD=0x20;
450 1 TH1=0xfd;
451 1 TL1=0xfd;
452 1 TR1=1;
453 1 SM0=0;
454 1 SM1=1;
455 1 REN=1;
456 1 EA=1;
457 1 ES=1;
458 1
459 1 lcd_init();
460 1
461 1 wenzi();
462 1
463 1 while(1)
464 1 {
465 2 wendu(0);
466 2 wendu(1);
467 2 }
468 1 }
469
470
471
472
473
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.06 TEXT1 05/11/2008 06:39:19 PAGE 9
CODE SIZE = 1344 ----
CONSTANT SIZE = 320 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 22
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 13 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -