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