📄 main.lst
字号:
591 {
592 1 char n;
593 1 unsigned long ul,ulc;
594 1 ul=2;
595 1 for(n=0;n<4;n++)
596 1 {
597 2 DelayMs(10);
598 2 ulc=Test0(i,wt);
599 2 if(ulc==-1) return(-1);
600 2 ul+=ulc;
601 2 }
602 1 ul>>=2;
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 11
603 1 return(ul);
604 1 }
605 void LedSend8(char d)
606 {
607 1 uchar i;
608 1 CLK=0;
609 1 for(i=0;i<8;i++)
610 1 {
611 2 d<<=1;
612 2 DA=CY;delay (10);
613 2 CLK=1;delay (10);
614 2 CLK=0;delay (10);
615 2 }
616 1 }
617 void LedShow(char hb,char lb)
618 {
619 1 CS=0;
620 1 delay(10);
621 1 // hb>>=1;
622 1 // if(CY)
623 1 // {
624 1 // lb|=0x80;
625 1 // }
626 1 // else
627 1 // {
628 1 // lb&=~0x80;
629 1 // }
630 1 LedSend8(hb);
631 1 LedSend8(lb);
632 1 CS=1;
633 1 delay (20);
634 1 CS=0;
635 1 }
636 void LedTest(void)
637 {
638 1 char d;
639 1 char i;
640 1 // twingle=1;
641 1 d=1;
642 1 LedShow(0xff,~0x40);DelayMs(400);
643 1 LedShow(~0x40,0xff);DelayMs(400);
644 1 for(i=0;i<6;i++)
645 1 {
646 2 LedShow(0xff,~(d));DelayMs(400);
647 2 d<<=1;
648 2 }
649 1 d=1;
650 1 for(i=0;i<6;i++)
651 1 {
652 2 LedShow(~(d),0xff);DelayMs(400);
653 2 d<<=1;
654 2 }
655 1 LedShow(0x7f,0);DelayMs(800);
656 1 LedShow(0,0x7f);DelayMs(800);
657 1 LedShow(0x7f,0x7f);
658 1 }
659 void Bell(unsigned int t)
660 {
661 1 BELL=0;
662 1 DelayMs(t);
663 1 BELL=1;
664 1 }
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 12
665 void Timer0 (void) interrupt TIMER0INT // using 1
666 {
667 1 TL0=CYCLE % 256;
668 1 TH0=CYCLE/256;
669 1 // TF2=0;
670 1 // EXF2=0;
671 1 // if(wtt) wtt--;
672 1 if(td) td--;
673 1 // if(StartTest) return;
674 1 // if(twingle) twingledo=1;
675 1 // if(twingledo)
676 1 // {
677 1 // if(!(dt--))
678 1 // {
679 1 // dt=30;
680 1 // if(Dis=!Dis)
681 1 // {
682 1 // LedShow(0xff,0xff);
683 1 // }
684 1 // else
685 1 // {
686 1 // LedShow(OkLed,~OkLed);
687 1 // if(!twingle) twingledo=0;
688 1 // }
689 1 // }
690 1 // }
691 1 }
692 long Test0(char i,unsigned int wt)
693 {
694 1 bit rc;
695 1 bit Testing;
696 1 long ul;
697 1 unsigned char j;
698 1 char BIE;
699 1 unsigned char tc;
700 1 bit lowint;
701 1 if(i>=16) return(0);
702 1 CB=0; //CB=0时主测节点电容(侧电阻时)接+VCC充电,或接+VCC充电停振(测电容时)
703 1 EX1=ET1=TR1=0; //
704 1 switch(i) //0,1,2,3为4被测电阻 4,5,6,7为4被测电容 8为标准电阻 9为标准电容
705 1 {
706 2 case 0:
707 2 case 1:
708 2 case 2:
709 2 case 3:
710 2 case RstdNo:
711 2 TMOD|=GATE1; //电阻测试,TIMER1 INT1选通计时,为高开始计时
712 2 rc=1;
713 2 CA=0; //CA=0:选择电阻
714 2 tc=0; //测量次数-1
715 2 break; //R:rc=1 C:rc=0
716 2 default:
717 2 TMOD&=~GATE1; //电容测试,TIMER1 软件控制计时
718 2 CA=1; //CA=0:选择电容
719 2 tc=200; //测量次数-1
720 2 rc=0;
721 2 break;
722 2 }
723 1 P2=(P2&0XF0)|i|0XC0; //通道设定
724 1 tn=TH1=TL1=0; //TIMER1 数值设为0
725 1 if(!rc)
726 1 {
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 13
727 2 DelayMs(50);
728 2 CB=1; //测电容,断开充电,让测电容电路先振荡
729 2 } //rc=0为电容测定
730 1 else
731 1 {
732 2 DelayMs(200);
733 2 }
734 1 //begin Test
735 1 StartTest=0;
736 1 Testing=0;
737 1 td=wt; //等待
738 1 j=0;
739 1 BIE=IE;
740 1 IE=0x80;
741 1 ET0=1; //定时中断保持
742 1 lowint=INT1;
743 1 while(td)
744 1 {
745 2 if(Testing)
746 2 {
747 3 if(lowint==INT1) {j=0;continue;}
748 3 if(++j<1) continue;
749 3 j=0;
750 3 lowint=INT1;
751 3 if(!lowint)
752 3 {
753 4 if(tc--)
754 4 {
755 5 TR1=1;
756 5 continue;
757 5 }
758 4 else
759 4 {
760 5 TR1=0;
761 5 ET1=0;
762 5 break;
763 5 }
764 4 }
765 3 }
766 2 else
767 2 {
768 3 if(!INT1) {j=0;continue;}
769 3 j++;
770 3 if(j<1) continue;
771 3 StartTest=1;
772 3 Testing=1;
773 3 IE1=0;
774 3 TF1=0;
775 3 ET1=1;
776 3 if(rc)
777 3 {
778 4 TR1=1; //测电阻
779 4 }
780 3 CB=1;
781 3 j=0;
782 3 }
783 2 }
784 1 IE=BIE;
785 1 CB=0;
786 1 TR1=0;
787 1 EX1=0;
788 1 if(td)
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 14
789 1 {
790 2 ul=256L*(tn*256L+TH1)+TL1;
791 2 }
792 1 else
793 1 {
794 2 ul=-1;
795 2 }
796 1 // if (ul<80000)
797 1 // ul=ul;
798 1
799 1 StartTest=0;
800 1 return(ul);
801 1 }
802 void Test(char i)
803 {
804 1 long ul;
805 1 if(i<0||i>=10) return;
806 1 ul=Test0(i,50);
807 1 if(i>=4||i==CstdNo)
808 1 {
809 2 if(ul<ParamC0[i])
810 2 {
811 3 TestData[i]=0;
812 3 }
813 2 else
814 2 {
815 3 TestData[i]=(float)nC*(ul-ParamC0[i])/StdC+0.5;
816 3 }
817 2 }
818 1 else
819 1 {
820 2 if(ul==-1)
821 2 {
822 3 TestData[i]=-1;
823 3 }
824 2 else
825 2 {
826 3 // if(ParamC0[i]==-1)
827 3 // {
828 3 TestData[i]=(float)nR*ul/StdR+0.5;
829 3 // }
830 3 // else
831 3 // {
832 3 // if(ul>ParamC0[i])
833 3 // {
834 3 // TestData[i]=0;
835 3 // }
836 3 // else
837 3 // {
838 3 // TestData[i]=1000.0*ul*ParamC0[i]/(ParamC0[i]-ul)/StdR+0.5;
839 3 // }
840 3 // }
841 3 }
842 2 }
843 1 }
844 void Check(char i)
845 {
846 1 //char i;
847 1 //OkLed=0;
848 1 if(i<6)
849 1 {
850 2 if(i<4)
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 15
851 2 {
852 3 if(TestData[i]>MinR&&TestData[i]<MaxR)
853 3 {
854 4 OkLed|=1<<i;
855 4 }
856 3 }
857 2 else
858 2 {
859 3 if(TestData[i]>MinC&&TestData[i]<MaxC)
860 3 {
861 4 OkLed|=1<<i;
862 4 }
863 3 }
864 2 LedShow((OkLed)|(0xfe<<i),(~(OkLed))|(0xfe<<i));
865 2 // OkLed=(OkLed)|(0xfe<<i);
866 2 // NgLed=(~(OkLed))|(0xfe<<i);
867 2 }
868 1 else
869 1 {
870 2 if((OkLed&=0x3f)==0x3f)
871 2 {
872 3 OkLed|=ALLOK;
873 3 }
874 2 LedShow(OkLed,~OkLed);
875 2 }
876 1 }
877 void Display(char i)
878 {
879 1 switch(i)
880 1 {
881 2 case 0:LcdPrint("R1=");ComPrint("R1= ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" MΩ\n");brea
-k;
882 2 case 1:LcdPrint("R2=");ComPrint("R2= ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" MΩ\n");bre
-ak;
883 2 case 2:LcdPrint("R3=");ComPrint("R3= ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" MΩ\n");brea
-k;
884 2 case 3:LcdPrint("R4=");ComPrint("R4= ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" MΩ\n");bre
-ak;
885 2 case 4:LcdPrint("C1=");ComPrint("C1= ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" PF\n");break
-;
886 2 case 5:LcdPrint("C2=");ComPrint("C2= ");DisplayData(i,TestData[i]);LcdPrint("\n");ComPrint(" PF\n");brea
-k;
887 2 case 6:LcdPrint("C3=");ComPrint("C3= ");DisplayData(i,TestData[i]);LcdPrint(" ");ComPrint(" PF\n");break
-;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -