📄 main.lst
字号:
-10;
289 4 ComPrint("Max_R: ");MaxR=GetInt()==0?MaxR*10:GetInt();DisplayData(0x81,MaxR);ComPrint(" KΩ\n");MaxR/=
-10;
290 4 ComPrint("Min_C:");MinC=GetInt()==0?MinC:GetInt();DisplayData(0x82,MinC);ComPrint(" PF\n");
291 4 ComPrint("Max_C:");MaxC=GetInt()==0?MaxC:GetInt();DisplayData(0x83,MaxC);ComPrint(" KΩ\n");
292 4 ComPrint("Std_R: ");nR=GetInt()==0?nR*10:GetInt();DisplayData(0x83,nR);ComPrint(" KΩ\n");nR/=10;
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 6
293 4 ComPrint("Std_C:");nC=GetInt()==0?nC:GetInt();DisplayData(0x83,nC);ComPrint(" PF\n");
294 4 LmWrite();
295 4 break;
296 4 case 'C':
297 4 ComPrint("Are you sure to calibrate?(Y/N)\n");
298 4 td=2000;
299 4 while((i=Remote())==0 && td!=0);
300 4 if(i!='Y'&&i!='y') break;
301 4 LcdClear();
302 4 LcdPrint("\n * Calibration *\n");
303 4 ComPrint("Calibrate...\n");
304 4 StdR0=Tests(RstdNo,1000);
305 4 StdC0=Tests(CstdNo,1000);
306 4 BsWrite();
307 4 ComPrint("StdR0= ");LongPrint(StdR0);ComPrint("\n");
308 4 ComPrint("StdC0= ");LongPrint(StdC0);ComPrint("\n");
309 4 ComPrint("Calibrate Ok!\n");
310 4 LcdClear();
311 4 LcdPrint("\n Calibration OK\n");
312 4 break;
313 4 case 'R':
314 4 case 'F':
315 4 ComPrint("Reset to default ");
316 4 if(i=='R')
317 4 ComPrint("parameter?(Y/N)\n");
318 4 else
319 4 ComPrint("calibration?(Y/N)\n");
320 4 td=2000;
321 4 while((d=Remote())==0 && td!=0);
322 4 if(d!='Y'&&d!='y') break;
323 4 if(i=='R')
324 4 {
325 5 DeftVal(0);
326 5 LmWrite();
327 5 }
328 4 else
329 4 {
330 5 DeftVal(1);
331 5 BsWrite();
332 5 }
333 4 DisParam();
334 4 break;
335 4 }
336 3 }
337 2 }
338 1 }
339 void BsWrite(void)
340 {
341 1 EEWrite(0x30,StdR0 % 256);
342 1 EEWrite(0x31,(StdR0>>8) % 256);
343 1 EEWrite(0x32,(StdR0>>16) % 256);
344 1 EEWrite(0x33,(StdR0>>32) % 256);
345 1 EEWrite(0x40,StdC0 % 256);
346 1 EEWrite(0x41,(StdC0>>8) % 256);
347 1 EEWrite(0x42,(StdC0>>16) % 256);
348 1 EEWrite(0x43,(StdC0>>32) % 256);
349 1 }
350 void LmWrite(void)
351 {
352 1 EEWrite(0x10,MinR % 256);
353 1 EEWrite(0x11,MinR / 256);
354 1 EEWrite(0x12,MaxR % 256);
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 7
355 1 EEWrite(0x13,MaxR / 256);
356 1 EEWrite(0x14,STD_RESISTOR % 256);
357 1 EEWrite(0x15,STD_RESISTOR / 256);
358 1 EEWrite(0x16,nR % 256);
359 1 EEWrite(0x17,nR / 256);
360 1 EEWrite(0x20,MinC % 256);
361 1 EEWrite(0x21,MinC / 256);
362 1 EEWrite(0x22,MaxC % 256);
363 1 EEWrite(0x23,MaxC / 256);
364 1 EEWrite(0x24,STD_CAPACITOR % 256);
365 1 EEWrite(0x25,STD_CAPACITOR / 256);
366 1 EEWrite(0x26,nC % 256);
367 1 EEWrite(0x27,nC / 256);
368 1 }
369 void DisParam(void)
370 {
371 1 ComPrint("Parameter:\n");
372 1 ComPrint("MinR= ");DisplayData(0x80,MinR*10);ComPrint(" KΩ\n");
373 1 ComPrint("MaxR= ");DisplayData(0x81,MaxR*10);ComPrint(" KΩ\n");
374 1 ComPrint("MinC= ");DisplayData(0x82,MinC);ComPrint(" PF\n");
375 1 ComPrint("MaxC= ");DisplayData(0x83,MaxC);ComPrint(" PF\n");
376 1 ComPrint("StdR= ");DisplayData(0x83,nR*10);ComPrint(" KΩ\n");
377 1 ComPrint("StdC= ");DisplayData(0x83,nC);ComPrint(" PF\n");
378 1 ComPrint("StdR0= ");LongPrint(StdR0);ComPrint("\n");
379 1 ComPrint("StdC0= ");LongPrint(StdC0);ComPrint("\n");
380 1 }
381 unsigned long LngRead(unsigned char a)
382 {
383 1 unsigned long d;
384 1 char i;
385 1 d=0;
386 1 for(i=3;i>=0;i--)
387 1 {
388 2 d<<=8;
389 2 d+=EERead(a+i);
390 2 }
391 1 return(d);
392 1 }
393 unsigned int GetInt(void)
394 {
395 1 unsigned char d;
396 1 unsigned int re;
397 1 re=0;
398 1 d=0;
399 1 while(1)
400 1 {
401 2 if(RI)
402 2 {
403 3 d=SBUF;
404 3 RI=0;
405 3 if(d>'9' || d<'0') break;
406 3 re=re*10+d-'0';
407 3 td=10; //50ms
408 3 }
409 2 if(d!=0 && td==0) break;
410 2 }
411 1 return(re);
412 1 }
413 bit EEWrite8(char d)
414 {
415 1 char i;
416 1 bit re;
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 8
417 1 SCL=0;
418 1 for(i=0;i<8;i++)
419 1 {
420 2 d<<=1;
421 2 SDA=CY;
422 2 SCL=0;
423 2 SCL=0;
424 2 SCL=1;
425 2 SCL=1;
426 2 SCL=1;
427 2 SCL=0;
428 2 }
429 1 SDA=1;
430 1 SCL=0;
431 1 SCL=0;
432 1 SCL=1;
433 1 re=SDA;
434 1 SCL=1;
435 1 SCL=1;
436 1 SCL=0;
437 1 return(re);
438 1 }
439 unsigned char EERead8(void)
440 {
441 1 char i;
442 1 char d;
443 1 d=0;
444 1 SCL=0;
445 1 for(i=0;i<8;i++)
446 1 {
447 2 d<<=1;
448 2 SCL=0;
449 2 SCL=1;
450 2 if(SDA) d++;
451 2 SCL=1;
452 2 SCL=1;
453 2 SCL=0;
454 2 }
455 1 return(d);
456 1 }
457 void EEStart(void)
458 {
459 1 SCL=0;
460 1 SDA=1;
461 1 SCL=0;
462 1 SCL=1;
463 1 SDA=0;
464 1 SCL=1;
465 1 SCL=1;
466 1 SCL=0;
467 1 }
468 void EEStop(void)
469 {
470 1 SCL=0;
471 1 SDA=0;
472 1 SCL=0;
473 1 SCL=1;
474 1 SDA=1;
475 1 SCL=1;
476 1 SCL=1;
477 1 SCL=0;
478 1 SDA=0;
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 9
479 1 }
480 bit EEWrite(char ad,char d)
481 {
482 1 char i;
483 1 for(i=0;i<100;i++)
484 1 {
485 2 EEStart();
486 2 if(EEWrite8(0xa0)) {EEStop();continue;}
487 2 i=0;
488 2 if(EEWrite8(ad)) {EEStop();continue;}
489 2 i=0;
490 2 if(EEWrite8(d)) {EEStop();continue;}
491 2 EEStop();
492 2 DelayMs(20);
493 2 return(0);
494 2 }
495 1 return(1);
496 1 }
497 unsigned char EERead(char ad)
498 {
499 1 char i;
500 1 char d;
501 1 for(i=0;i<100;i++)
502 1 {
503 2 EEStart();
504 2 if(EEWrite8(0xa0)) {EEStop();continue;}
505 2 i=0;
506 2 if(EEWrite8(ad)) {EEStop();continue;}
507 2 i=0;
508 2 EEStart();
509 2 if(EEWrite8(0xa1)) {EEStop();continue;}
510 2 i=0;
511 2 d=EERead8();
512 2 EEStop();
513 2 return(d);
514 2 }
515 1 }
516 bit CalC(void)
517 {
518 1 float fsum;
519 1 unsigned int sum,adv;
520 1 char i;
521 1 sum=0;
522 1 adv=0;
523 1 for(i=4;i<8;i++)
524 1 {
525 2 if(4*TestData[i]>sum) sum=4*TestData[i];
526 2 adv+=TestData[i];
527 2 }
528 1 adv-=sum/4;
529 1 while(1)
530 1 {
531 2 fsum=0;
532 2 for(i=4;i<8;i++)
533 2 {
534 3 fsum+=sqrt(1-4.0*TestData[i]/sum);
535 3 }
536 2 if(fsum>2+0.002)
537 2 {
538 3 if(adv==0)
539 3 {
540 4 TestData[4]=TestData[5]=8000;
C51 COMPILER V8.02 MAIN 06/16/2007 16:57:02 PAGE 10
541 4 return(0);
542 4 }
543 3 sum-=adv;
544 3 adv>>=1;
545 3 continue;
546 3 }
547 2 if(fsum<2-0.002)
548 2 {
549 3 if(adv==0) break;
550 3 sum+=adv;
551 3 adv>>=1;
552 3 continue;
553 3 }
554 2 break;
555 2 }
556 1 for(i=4;i<8;i++)
557 1 {
558 2 TestData[i]=(1-sqrt(1-4.0*TestData[i]/sum))*sum/2+0.5;
559 2 }
560 1 TestData[4]=1.0*TestData[4]*TestData[5]/(TestData[4]+TestData[5]);
561 1 TestData[5]=1.0*TestData[6]*TestData[7]/(TestData[6]+TestData[7]);
562 1 return(1);
563 1 }
564 bit ComPrint(char * st)
565 {
566 1 char i;
567 1 i=0;
568 1 for(i=0;i<128;i++)
569 1 {
570 2 if(st[i]==0) return(1);
571 2 td=10; //50ms
572 2 td=10;while(!TI) if(td==0) return(0);
573 2 if(st[i]==0xa)
574 2 {
575 3 SBUF=0xd;TI=0;
576 3 td=10;while(!TI) if(td==0) return(0);
577 3 }
578 2 SBUF=st[i];TI=0;
579 2 }
580 1 return(0);
581 1 }
582 /*void CalC(char i)
583 {
584 float f;
585 f=4.0*TestData[i]/4000;
586 f=sqrt(1-f)/2;
587 f=f*4000+0.5;
588 TestData[i]=f;
589 } */
590 long Tests(char i,unsigned int wt)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -