📄 4.lst
字号:
305 2 }
306 1 else
307 1 {
308 2 if (SetTF || !Key_SET)
309 2 {
310 3 LED_One = (TMSetV) / 100; //SET状态下显示设定值
311 3 LED_Two = (TMSetV - LED_One * 100)/10;
312 3 LED_Three = TMSetV - LED_One * 100 - LED_Two * 10;
313 3 }
314 2 else
315 2 {
316 3 LED_One = (TMV) / 100; //转换百位值
317 3 LED_Two = (TMV - LED_One * 100)/10;
318 3 LED_Three = TMV - LED_One * 100 - LED_Two * 10;
319 3 }
320 2 }
321 1
322 1 //转LED字段
323 1 if (LED_One) //超过百时十位的处理
324 1 LED_Two = LEDDis[LED_Two];
325 1 else
326 1 {
327 2 if (LED_Two == 0)
328 2 LED_Two = LEDDis[10];
329 2 else
330 2 LED_Two = LEDDis[LED_Two];
331 2 }
332 1 if (Sign)
333 1 LED_One = LEDDis[11];
334 1 else
335 1 {
336 2 if (LED_One == 0)
337 2 LED_One = LEDDis[10];
338 2 else
339 2 LED_One = LEDDis[LED_One];
340 2 }
341 1 LED_Three = LEDDis[LED_Three];
342 1 }
343
344 void InitDS1820(void) //初始化DS1820
345 {
346 1 TMPort = 1; //拉高TMPort
347 1 _nop_(); //保持一个周期
348 1 TMPort = 0; //拉低TMPort
349 1 Delay_510(); //延时 DS1820复位时间要500us的低电平
350 1 TMPort = 1; //拉高TMPort
351 1 _nop_(); //保持
352 1 _nop_();
353 1 _nop_();
354 1
355 1 Delay_110(); //延时110us 等待DS1820回应
356 1 if (!TMPort) //回应信号为低电平
357 1 DS1820ON = 1;
358 1 else
359 1 DS1820ON = 0;
360 1 Delay_110(); //延时
361 1 Delay_110();
362 1 TMPort = 1; //拉高TMPort
363 1 }
C51 COMPILER V7.50 4 05/08/2008 15:16:11 PAGE 7
364
365 void ROMDS1820(void) //跳过ROM匹配
366 {
367 1 #pragma asm
368 1 MOV A,#0CCH
369 1 MOV R2,#8
370 1 CLR C
371 1 WR1:
372 1 CLR P1^0
373 1 MOV R3,#6
374 1 DJNZ R3,$
375 1 RRC A
376 1 MOV P1^0,C
377 1 MOV R3,#23
378 1 DJNZ R3,$
379 1 SETB P1^0
380 1 NOP
381 1 DJNZ R2,WR1
382 1 SETB P1^0
383 1 #pragma endasm
384 1 }
385
386 void TMVDS1820(void) //温度转换指令
387 {
388 1 #pragma asm
389 1 MOV A,#44H
390 1 MOV R2,#8
391 1 CLR C
392 1 WR2:
393 1 CLR P1^0
394 1 MOV R3,#6
395 1 DJNZ R3,$
396 1 RRC A
397 1 MOV P1^0,C
398 1 MOV R3,#23
399 1 DJNZ R3,$
400 1 SETB P1^0
401 1 NOP
402 1 DJNZ R2,WR2
403 1 SETB P1^0
404 1 //SETB P1^4 //测试
405 1 //MOV R3,#0FFH
406 1 //DJNZ R3,$
407 1 //CLR P1^4
408 1 #pragma endasm
409 1 }
410
411 void TMRDS1820(void) //读出温度指令
412 {
413 1 #pragma asm
414 1 MOV A,#0BEH
415 1 MOV R2,#8
416 1 CLR C
417 1 WR3:
418 1 CLR P1^0
419 1 MOV R3,#6
420 1 DJNZ R3,$
421 1 RRC A
422 1 MOV P1^0,C
423 1 MOV R3,#23
424 1 DJNZ R3,$
425 1 SETB P1^0
C51 COMPILER V7.50 4 05/08/2008 15:16:11 PAGE 8
426 1 NOP
427 1 DJNZ R2,WR3
428 1 SETB P1^0
429 1 #pragma endasm
430 1 }
431
432 void TMWDS1820(void) //写入温度限制指令
433 {
434 1 #pragma asm
435 1 MOV A,#04EH
436 1 MOV R2,#8
437 1 CLR C
438 1 WR13:
439 1 CLR P1^0
440 1 MOV R3,#6
441 1 DJNZ R3,$
442 1 RRC A
443 1 MOV P1^0,C
444 1 MOV R3,#23
445 1 DJNZ R3,$
446 1 SETB P1^0
447 1 NOP
448 1 DJNZ R2,WR13
449 1 SETB P1^0
450 1
451 1 #pragma endasm
452 1 }
453
454 void TMREDS1820(void) //COPY RAM to E2PRAM
455 {
456 1 #pragma asm
457 1 MOV A,#48H
458 1 MOV R2,#8
459 1 CLR C
460 1 WR33:
461 1 CLR P1^0
462 1 MOV R3,#6
463 1 DJNZ R3,$
464 1 RRC A
465 1 MOV P1^0,C
466 1 MOV R3,#23
467 1 DJNZ R3,$
468 1 SETB P1^0
469 1 NOP
470 1 DJNZ R2,WR33
471 1 SETB P1^0
472 1
473 1 #pragma endasm
474 1 }
475
476 void TMERDS1820(void) //COPY E2PRAM to RAM
477 {
478 1 #pragma asm
479 1 MOV A,#0B8H
480 1 MOV R2,#8
481 1 CLR C
482 1 WR43:
483 1 CLR P1^0
484 1 MOV R3,#6
485 1 DJNZ R3,$
486 1 RRC A
487 1 MOV P1^0,C
C51 COMPILER V7.50 4 05/08/2008 15:16:11 PAGE 9
488 1 MOV R3,#23
489 1 DJNZ R3,$
490 1 SETB P1^0
491 1 NOP
492 1 DJNZ R2,WR43
493 1 SETB P1^0
494 1
495 1 #pragma endasm
496 1 }
497
498 void WriteDS1820(void) //写入温度限制值
499 {
500 1 #pragma asm
501 1 MOV A,26H //发出4EH写ROM指令后连发两个字节分别为上下限
502 1 MOV R2,#8
503 1 CLR C
504 1 WR23:
505 1 CLR P1^0
506 1 MOV R3,#6
507 1 DJNZ R3,$
508 1 RRC A
509 1 MOV P1^0,C
510 1 MOV R3,#23
511 1 DJNZ R3,$
512 1 SETB P1^0
513 1 NOP
514 1 DJNZ R2,WR23
515 1 SETB P1^0
516 1 #pragma endasm
517 1 }
518
519 void ReadDS1820(void) //读出温度值
520 {
521 1 #pragma asm
522 1 MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出
523 1 MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV)
524 1 RE00:
525 1 MOV R2,#8
526 1 RE01:
527 1 CLR C
528 1 SETB P1^0
529 1 NOP
530 1 NOP
531 1 CLR P1^0
532 1 NOP
533 1 NOP
534 1 NOP
535 1 SETB P1^0
536 1 MOV R3,#09
537 1 RE10:
538 1 DJNZ R3,RE10
539 1 MOV C,P1^0
540 1 MOV R3,#23
541 1 RE20:
542 1 DJNZ R3,RE20
543 1 RRC A
544 1 DJNZ R2,RE01
545 1 MOV @R1,A
546 1 DEC R1
547 1 DJNZ R4,RE00
548 1 //SETB P1^2 //测试
549 1 //MOV R3,#0FFH
C51 COMPILER V7.50 4 05/08/2008 15:16:11 PAGE 10
550 1 //DJNZ R3,$
551 1 //CLR P1^2
552 1 #pragma endasm
553 1 }
554
555 void Delay_510(void) //延时510微秒
556 {
557 1 #pragma asm
558 1 MOV R0,#7DH
559 1 MOV R1,#02H
560 1 TSR1:
561 1 DJNZ R0,TSR1
562 1 MOV R0,#7DH
563 1 DJNZ R1,TSR1
564 1 #pragma endasm
565 1 }
566
567 void Delay_110(void) //延时110微秒
568 {
569 1 #pragma asm
570 1 MOV R0,#19H
571 1 MOV R1,#02H
572 1 TSR2:
573 1 DJNZ R0,TSR2
574 1 MOV R0,#19H
575 1 DJNZ R1,TSR2
576 1 #pragma endasm
577 1 }
578
579 void Delay_10ms(void) //延时10ms
580 {
581 1 #pragma asm
582 1 MOV R0,#19H
583 1 MOV R1,#0C8H
584 1 TSR3:
585 1 DJNZ R0,TSR3
586 1 MOV R0,#19H
587 1 DJNZ R1,TSR3
588 1 #pragma endasm
589 1 }
590
591 void Delay_4s(void) //延时4s
592 {
593 1 #pragma asm
594 1 MOV R2,#28H
595 1 TSR5:
596 1 MOV R0,#0FAH
597 1 MOV R1,#0C8H
598 1 TSR4:
599 1 DJNZ R0,TSR4
600 1 MOV R0,#0FAH
601 1 DJNZ R1,TSR4
602 1 DJNZ R2,TSR5
603 1 #pragma endasm
604 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1265 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.50 4 05/08/2008 15:16:11 PAGE 11
DATA SIZE = 12 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -