📄 7290_2.lst
字号:
472
473 /********定时1ms***********/
474 void delay3(uint Tm_count)
475 {
476 1 uint i;
477 1 while (Tm_count--)
478 1 {
479 2 Watch();
480 2 for (i=0; i<90; i++) {};
481 2 }
482 1 }
483
484 /******************/
485 /*产生输液量的定时*/
486 /******************/
487 void Time_0(void) interrupt 1
C51 COMPILER V7.09 7290_2 08/25/2004 15:37:04 PAGE 9
488 {
489 1 static uchar count;
490 1
491 1 TR0 = 0;
492 1 EA = 0;
493 1 TH0 = TH0_T;
494 1 TL0 = TL0_T;
495 1 if (count >= 13)
496 1 {
497 2
498 2 V_ml++;
499 2 count = 0;
500 2 _nop_();
501 2 _nop_();
502 2 }
503 1 else count++;
504 1 EA = 1;
505 1 TR0 = 1;
506 1 }
507
508 /****************************************/
509 /*************向计算机发数据*************/
510 /****************************************/
511
512
513 /*********************************************/
514 /*************Dalls(18B20)********************/
515 /*********************************************/
516 /* C_f=1 华氏,C_f=0 摄氏 */
517 void temperature(bit C_f)
518 {
519 1 tmstart();
520 1 delay3(100);
521 1 now_temper = read_temper(C_f);
522 1
523 1 }
524 /**************************/
525 bit tmreset(void)
526 {
527 1 uint i;
528 1 uchar j;
529 1 EA = 0;
530 1 TMDAT = 0;
531 1 i = 103; while (i>0) i--;
532 1 TMDAT =1;
533 1 i = 4; while (i>0) i--;
534 1 for (j=0xff; j>0; j--)
535 1 {
536 2 if (~TMDAT) break;
537 2 }
538 1 EA = 1;
539 1 if (j == 0) return(1); /* 无温度检测无件 */
540 1 return (0);
541 1 }
542 /***************************/
543 uchar readbyte(void)
544 {
545 1 uint i;
546 1 uchar k,j,dat = 0;
547 1 EA = 0;
548 1 for (k=1; k<=8; k++)
549 1 {
C51 COMPILER V7.09 7290_2 08/25/2004 15:37:04 PAGE 10
550 2
551 2 TMDAT = 0; i++;
552 2 TMDAT = 1; i++; i++;
553 2 j = TMDAT;
554 2 i = 8;while (i>0) i--;
555 2 dat = (j << 7)|(dat >> 1);
556 2 }
557 1 EA = 1;
558 1 return(dat);
559 1 }
560 /****************************/
561 void writebyte(uchar dat)
562 {
563 1 uint i;
564 1 uchar j;
565 1 bit testb;
566 1 EA = 0;
567 1 for (j=1; j<=8; j++)
568 1 {
569 2 testb = dat&0x01;
570 2 dat = dat >> 1;
571 2 if (testb)
572 2 {
573 3 TMDAT = 0;
574 3 i++; i++;
575 3 TMDAT = 1;
576 3 i = 8; while (i>0) i--;
577 3 }
578 2 else {
579 3 TMDAT = 0;
580 3 i = 8; while (i>0) i--;
581 3 TMDAT = 1;
582 3 i++; i++;
583 3 }
584 2 }
585 1 EA = 1;
586 1 }
587 /*******************************/
588 void tmstart (void)
589 {
590 1 bit flag_1;
591 1 do
592 1 {
593 2 flag_1 = tmreset();
594 2 if (flag_1) {sound(True,1);delay3(100);}
595 2 } while (flag_1);
596 1 delay3(1);
597 1 writebyte(0xcc);
598 1 writebyte(0x44);
599 1 }
600 uchar read_temper(bit C_F)
601 {
602 1
603 1 uchar a,b,y1,y2,y3;
604 1 uint i = 0;
605 1 tmreset();
606 1 delay3(1);
607 1 writebyte(0xcc);
608 1 writebyte(0xbe);
609 1 a = readbyte(); //LSB
610 1 b = readbyte(); //MSB
611 1 //*********************
C51 COMPILER V7.09 7290_2 08/25/2004 15:37:04 PAGE 11
612 1 if (C_F)
613 1 {
614 2 AD = a;
615 2 AD <<= 4;
616 2 if (AD_7) i = 50 ;
617 2 AD <<= 1;
618 2 if (AD_7) i= i + 25;
619 2 y1 = a >> 4;
620 2 y2 = b << 4;
621 2 y3 = y1 | y2;
622 2
623 2 y1 = (i * 9) / 100;
624 2 i = y3;
625 2 y3 = (i * 9 + y1)/5+32;
626 2 }
627 1 else
628 1 {
629 2 y1 = a >> 4;
630 2 y2 = b << 4;
631 2 y3 = y1 | y2;
632 2 }
633 1 disp(y3,1);
634 1 return (y3);
635 1 }
636 /***************************
637 id = True; 为温度
638 ***************************/
639 void disp(uchar y3,bit id)
640 {
641 1 uchar a;
642 1 uchar *p;
643 1 p = WriteBuf;
644 1 a = y3/100;
645 1 if (a == 0)
646 1 {
647 2
648 2 if (id)
649 2 {
650 3 WriteBuf[0] = 0x07;
651 3 WriteBuf[1] = 0x64;
652 3 WriteBuf[2] = 0x1f;
653 3 Zlg_write(p);
654 3 }
655 2 a = y3%100;
656 2 }
657 1 else
658 1 {
659 2 if (id)
660 2 {
661 3 WriteBuf[0] = 0x07;
662 3 WriteBuf[1] = 0x64;
663 3 WriteBuf[2] = a;
664 3 Zlg_write(p);
665 3
666 3 }
667 2 a = y3%100;
668 2 }
669 1 if (id)
670 1 {
671 2 y3 = 4;
672 2 WriteBuf[0] = 0x07;
673 2 WriteBuf[1] = 0x63;
C51 COMPILER V7.09 7290_2 08/25/2004 15:37:04 PAGE 12
674 2 WriteBuf[2] = a/0x0a;
675 2 Zlg_write(p);
676 2 WriteBuf[0] = 0x07;
677 2 WriteBuf[1] = 0x62;
678 2 WriteBuf[2] = a%0x0a;
679 2 Zlg_write(p);
680 2
681 2 }
682 1 else
683 1 {
684 2
685 2 if (y3 > 99)
686 2 {
687 3 y3 = 1;
688 3 Zlg_writebyte(0x10,0x02);
689 3 Zlg_writebyte(0x11,0x02);
690 3 delay3(50);
691 3 }
692 2 else
693 2 {
694 3 y3 = 1;
695 3 WriteBuf[0] = 0x07;
696 3 WriteBuf[1] = 0x60;
697 3 WriteBuf[2] = a/0x0a;
698 3 Zlg_write(p);
699 3 WriteBuf[0] = 0x07;
700 3 WriteBuf[1] = 0x61;
701 3 WriteBuf[2] = a%0x0a;
702 3 Zlg_write(p);
703 3
704 3 }
705 2 }
706 1
707 1 }
708
709 void sound(bit f,uchar i)
710 {
711 1 for (;i>0;i--)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -