| char Tk=0,Tkm=12,fa=0;
			
				void timerInter1(void) interrupt 3 {//T1中断
			
				fa++;
			
				}
			
				void timerInter0(void) interrupt 1 {//T0中断
			
				  uchar a,b,c;
			
				  if(++Tk>=Tkm){ //读取计数值
			
				        Tk = 0;
			
				    TR1 = 0; //暂停计数
			
				        a = fa, b = TH1, c = TL1;
			
				        fa = TH1 = TL1 = 0;
			
				        TR1 = 1;
			
				        feq = (a*256L*256L + b*256L+c) * (24/Tkm);
			
				    if(feq<=5) feq = 0;; //去除本频率(通常有1Hz)
			
				    if(feq<300&&feq>10) Tkm = 24; //低频(小于10视为不起振)
			
				        else                Tkm = 12; //频率较高时,闸门时间减小一些,加快测量速度
			
				  }
			
				}
			
				void putLx(float L){
			
				  if(L<1e-4) { L*=1e6; lcd_putf(L,2,4); lcd_puts(" uH"); return; }
			
				  if(L<1e-3) { L*=1e6; lcd_putf(L,1,4); lcd_puts(" uH"); return; }
			
				  if(L<1e-2) { L*=1e3; lcd_putf(L,3,4); lcd_puts(" mH"); return; }
			
				  if(L<1e-1) { L*=1e3; lcd_putf(L,2,4); lcd_puts(" mH"); return; }
			
				  if(L<1e+0) { L*=1e3; lcd_putf(L,1,4); lcd_puts(" mH"); return; }
			
				  if(L<1e+1) {         lcd_putf(L,3,4); lcd_puts("  H"); return; }
			
				  if(L<1e+2) {         lcd_putf(L,1,4); lcd_puts("  H"); return; }
			
				  if(L<1e+5) {         lcd_puti(L,5);   lcd_puts("  H"); return; }
			
				  lcd_puts("Overflow.");
			
				}
			
				float c2c(float f){ //针对涤纶电容修正
			
				code float a[5]={100,   1000,  10000, 100000, 150000 };  //频率
			
				code float b[5]={1.004, 1.000, 0.992, 0.960,  0.950  };  //修正量(综合修正表)
			
				//code float a[5]={100,   1000,  10000, 100000, 200000 }; //频率
			
				//code float b[5]={1.004, 1.000, 0.992, 0.975,  0.973  }; //修正量(涤纶原真修正表)
			
				char i;
			
				if(f<a[0]) return b[0];
			
				if(f>a[4]) return b[4];
			
				for(i=0;i<4;i++){
			
				  if( f>=a[i] && f<a[i+1]) return b[i] + (b[i+1]-b[i]) * (f-a[i]) / (a[i+1]-a[i]);
			
				}
			
				}
			
				float Lx=0;
			
				void calcL(){ //电感计算
			
				float f,w,c0;
			
				f = feq/1.024;
			
				c0 = 3.12e-9 * c2c(f);
			
				w = 2*3.1415926*f;
			
				if(w) Lx = 1/(w*w*c0); 
			
				else  Lx = 1e20;
			
				lcd_goto1(0); putLx(Lx-cs.L0);
			
				lcd_goto2(0); lcd_puts("F="); lcd_puti(f,6); lcd_puts("Hz");
			
				}
			
				 
			
				main(){
			
				uchar kn=0;
			
				eepEn = 12345;
			
				//端口初始化
			
				P3M0 = 0x00;    //00000000 
			
				P3M1 = 0x20;    //00100000 P3.5置为高阻口
			
				 
			
				delay2(5);    //等待升压电源电压上升
			
				lcd_init();   //初始化LCD
			
				lcd_cur0();   lcd_puts("LC 1.0");   //隐藏光标并显示片本  (责任编辑:admin) |