📄 main.lst
字号:
586 2 break;
587 2
588 2 case 3:
589 2 da=alarm&0x02;
590 2 if((da==2)&&(F5sLp==1))
591 2 // da=alarm&0x02;
592 2 {
593 3 F5sLp=0;
594 3 pin_lpr=1;
595 3 if(pin_lpr)
596 3 {
597 4 F5sLp=0;
598 4 alarm&=0xfd;
599 4 if(alarm==0)
600 4 {
601 5 alarm_Resume=1;
602 5 }
603 4 EX1=1;
604 4 state_Lp=0;
605 4 }
606 3 else
607 3 {
608 4 state_Lp=2;
609 4 }
610 3 }
611 2 break;
612 2
613 2 default:
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 11
614 2 break;
615 2 }
616 1
617 1 }
618
619
620
621
622
623 void display(void)
624 {
625 1 //alarm : bit0 Hpr alarm;bit1 Lpr alarm;bit2 SENS 00;bit3 SENS 50;
626 1 byte da1=0;
627 1 //fresh display TA
628 1 if(alarm==0x00)
629 1 {
630 2 if(display_TA)
631 2 {
632 3
633 3 //ECCF2=0
634 3 CCAPM1&=0xfe;
635 3 dp_chara(addr_TA,1,1,0,18);
636 3 da1=da_TA/10;
637 3 dp_bigchara(da1,1,2,18,12);
638 3 da1=da_TA%10;
639 3 dp_bigchara(da1,1,2,30,12);
640 3 display_TA=0;
641 3 ee_changed=1;
642 3 state_Ee=0;
643 3 //Open CCF2 interrupt
644 3 CCF1=0;
645 3 CCAPM1|=0x01;
646 3 }
647 2 //fresh display WA
648 2 if(display_WA)
649 2 {
650 3 //ECCF3=0
651 3 CCAPM3&=0xfe;
652 3 dp_chara(addr_WA,1,1,0,18);
653 3 da1=da_WA/10;
654 3 dp_bigchara(da1,1,2,18,12);
655 3 da1=da_WA%10;
656 3 dp_bigchara(da1,1,2,30,12);
657 3 display_WA=0;
658 3 //control wa output
659 3 WA_changed=1;
660 3 state_WA=0;
661 3 //display resume the normal state
662 3 //only display ta
663 3 display_resume=1;
664 3 //Open CCF3 interrupt
665 3 CCF3=0;
666 3 CCAPM3|=0x01;
667 3 }
668 2 if(display_resume)
669 2 {
670 3 if(state_Resume==0)
671 3 {
672 4 cnt_Resume=0;
673 4 F5sResume=0;
674 4 state_Resume=1;
675 4 }
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 12
676 3 else if((state_Resume==1)&&(F5sResume==1))
677 3 {
678 4 F5sResume=0;
679 4 state_Resume=0;
680 4 display_resume=0;
681 4 display_TA=1;
682 4 }
683 3 }
684 2 }
685 1 if((alarm!=0)&&(cnt_Display%37==0))
686 1 {
687 2 switch((alarm_state++)%4)
688 2 {
689 3 case 0:
690 3 da1=alarm&0x01;
691 3 if(da1)
692 3 {
693 4 lcd_clr(1);
694 4 dp_bigchara(addr_PR,0,1,26,60);
695 4 dp_bigchara(addr_AH,1,1,0,24);
696 4 // speaking();
697 4 }
698 3 break;
699 3 case 1:
700 3 da1=alarm&0x02;
701 3 if(da1)
702 3 {
703 4 lcd_clr(1);
704 4 dp_bigchara(addr_PR,0,1,26,60);
705 4 dp_bigchara(addr_AL,1,1,0,24);
706 4 // speaking();
707 4 }
708 3 break;
709 3 case 2:
710 3 da1=alarm&0x04;
711 3 if(da1)
712 3 {
713 4 lcd_clr(1);
714 4 dp_bigchara(addr_SENS,0,1,2,60);
715 4 dp_bigchara(addr_50,1,1,0,24);
716 4 }
717 3 break;
718 3 case 3:
719 3 da1=alarm&0x08;
720 3 if(da1)
721 3 {
722 4 lcd_clr(1);
723 4 dp_bigchara(addr_SENS,0,1,2,60);
724 4 dp_bigchara(addr_00,1,1,0,24);
725 4 // speaking();
726 4 }
727 3 break;
728 3 default:
729 3 break;
730 3 }
731 2
732 2 }
733 1 if(alarm_Resume)
734 1 {
735 2 alarm_Resume=0;
736 2 lcd_clr(0);
737 2 lcd_predp();
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 13
738 2 }
739 1 }
740
741 void speaking(void)
742 {
743 1 if((alarm)&&(cnt_Speaking>2))
744 1 {
745 2 // F54ms=0;
746 2 cnt_Speaking=0;
747 2 SpeakingBak=~SpeakingBak;
748 2 if(SpeakingBak)
749 2 {
750 3 SPEAKER=1;
751 3 }
752 2 else
753 2 {
754 3 SPEAKER=0;
755 3 }
756 2
757 2 }
758 1 else if(alarm==0)
759 1 {
760 2 SPEAKER=1;
761 2 cnt_Speaking=0;
762 2 }
763 1 }
764
765 word sample10_adc4(void)
766 {
767 1 word vresult;
768 1 word vmax,vmin,Vd;
769 1 byte i;
770 1 Vd=sample_adc(4);
771 1 vresult=vmax=vmin=Vd;
772 1 for(i=0;i<9;i++)
773 1 {
774 2 Vd=sample_adc(4);
775 2 vresult+=Vd;
776 2 if(Vd>vmax)
777 2 {
778 3 vmax=Vd;
779 3 }
780 2 else if(Vd<vmin)
781 2 {
782 3 vmin=Vd;
783 3 }
784 2
785 2 }
786 1 vresult-=vmax;
787 1 vresult-=vmin;
788 1 vresult>>=3;
789 1 return(vresult);
790 1 }
791
792 void delay2(word delay)
793 {
794 1 word i;
795 1 for(i=0;i<delay;i++);
796 1 }
797
798
799 unsigned char adc1(void)
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 14
800 {
801 1 unsigned char da;
802 1 //p1.1 is input of adc
803 1 //chs2~0:001B;adc_power=1;
804 1 //speed1~0:11B
805 1 // P1|=0x02;
806 1 P1M0|=0x02;
807 1 P1M1&=0xfd;
808 1 ADC_CONTR=0xe1;
809 1 ADC_CONTR&=0xe7;//clear start flag and end flag
810 1 ADC_DATA=0; //clear result data register
811 1 ADC_LOW2=0;
812 1 ADC_CONTR|=0x08;
813 1 while(!(ADC_CONTR&0x10));
814 1 // P1M1&=0xfd;
815 1 // P1M0&=0xfd;
816 1 ADC_CONTR&=0x80;
817 1 da=ADC_DATA;
818 1 return(da);
819 1 }
820
821 unsigned int sample_adc(unsigned char ch)
822 {
823 1 unsigned int Vd,Vd2;
824 1 switch(ch)
825 1 {
826 2 case 4:
827 2 while(1)
828 2 {
829 3 Vd=adc4();
830 3 Vd2=adc4();
831 3 if(abs(Vd-Vd2)<=3)
832 3 {
833 4 break;
834 4 }
835 3 }
836 2 break;
837 2
838 2 case 1:
839 2 while(1)
840 2 {
841 3 Vd=(unsigned int)adc1();
842 3 Vd2=(unsigned int)adc1();
843 3 if(abs(Vd-Vd2)<5)
844 3 {
845 4 break;
846 4 }
847 3 }
848 2 break;
849 2
850 2 default:
851 2 break;
852 2
853 2 }
854 1 return(Vd);
855 1 }
856
857
858 void delay(byte delay)
859 {
860 1 byte i;
861 1 for(i=0;i<delay;i++);
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 15
862 1 }
863
864
865
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2088 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 26
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 + -