📄 all-test.lst
字号:
330 1
331 1 //
332 1 // P2=0x00;
333 1 TR0=0; //测试AD期间,必须关定时,否则在液晶显示和数据方面会有问题
334 1 P2_7=0;
335 1 P2_6=0;
336 1 P3_7=0; //开启
337 1 // do //40次中间测量有间隔
338 1 // {
339 1 measure();
340 1 // compare_four_data();
341 1 // delayms(150);
342 1 // }while(read_count<44);
343 1
344 1 P3_7=1; //disable
345 1 TR0=1;
346 1 // s=s/4;
347 1 // read_count=0;
348 1 // TR0=1; //开定时必须放在外面
349 1 // cs_temp&=0xfd;
350 1 // P0=cs_temp;
351 1 // P2=0x40;
352 1 // P3_6=0;
353 1 // P3_6=1;
354 1
355 1 // s=s-min1-min2-max1-max2; // 20中间数的和
356 1 // s=s/4; //保留小数点一位,函数返回后,必须执行s=s/10后,s中才真正存放平均值
357 1 // r=modf(s,&dp);
358 1 // if(r>=0.5)
359 1 // s=abs(dp)+1;
360 1 // else
361 1 // s=abs(dp);
362 1 // // 此时S为标准5位数//
363 1 // read_count=0;
364 1 }
C51 COMPILER V8.02 ALL_TEST 06/15/2007 10:53:26 PAGE 7
*** WARNING C280 IN LINE 316 OF FILE\ALL-TEST.C: 'r': unreferenced local variable
*** WARNING C280 IN LINE 317 OF FILE\ALL-TEST.C: 'dp': unreferenced local variable
365
366 //-------------------------------------------------------------//
367 float simple_input(float p, uchar colour, uchar steps )
368 {
369 1 bit en_loop=1;
370 1 uchar i;
371 1 uchar xdata k=23,d;
372 1
373 1 temp=p*100;
374 1 split_data(temp);
375 1
376 1 lcddis_series(0,6,name,0,0);
377 1 switch(colour)
378 1 {
379 2 case 0:
380 2 lcddis_series(6,1,sequence,0,0); break; //白度
381 2 case 1:
382 2 lcddis_series(6,1,sequence,1,0); break; //色度
383 2 default: break;
384 2 }
385 1 write_DDRAM(7,'-');
386 1 switch(steps)
387 1 {
388 2 case 0:
389 2 lcddis_series(8,1,sequence,0,0); break; // 调零
390 2 case 1:
391 2 lcddis_series(8,1,sequence,1,0); break; // 调准
392 2 case 2:
393 2 lcddis_series(8,1,sequence,2,0); break; // 标准值
394 2 case 3:
395 2 lcddis_series(8,1,sequence,3,0); break; // u 值
396 2 case 4:
397 2 lcddis_series(8,1,sequence,4,0); break; // g 值
398 2 default: break;
399 2 }
400 1 write_DDRAM(9,'-');
401 1 lcddis_series(10,1,sequence,1,0);
402 1 lcddis_series(12,3,step,0,0);
403 1 write_DDRAM(25,'.');
404 1
405 1 inc=0;
406 1 pr=1;
407 1
408 1 //------------
409 1 do
410 1 {
411 2
412 2 if(k>25) // 小数点位置偏差
413 2 d=23;
414 2 else
415 2 d=22;
416 2 switch(e_key)
417 2 {
418 3 case 12:
419 3 {
420 4 e_key=24;
421 4 k++;
422 4 if(k==25)
423 4 k=26;
424 4 if(k>27)
C51 COMPILER V8.02 ALL_TEST 06/15/2007 10:53:26 PAGE 8
425 4 k=23;
426 4 break;
427 4 }
428 3 case 9:
429 3 {
430 4 e_key=24;
431 4 eeprom_buffer[k-d]++;
432 4 if(eeprom_buffer[k-d]>9)
433 4 eeprom_buffer[k-d]=0;
434 4 break;
435 4 }
436 3 case 24:
437 3 {
438 4 if(inc==1) //明
439 4 {
440 5 lcddis_series(23,2,eeprom_buffer,1,1);
441 5 lcddis_series(26,2,eeprom_buffer,3,1);
442 5 }
443 4
444 4 if(inc==51) // must modify
445 4 {
446 5 lcddis_series(23,2,eeprom_buffer,1,1);
447 5 lcddis_series(26,2,eeprom_buffer,3,1);
448 5 write_DDRAM(k,' ');
449 5 }
450 4 wr_lcd(comm,0x0c,1);
451 4 break;
452 4 }
453 3
454 3 default:
455 3 en_loop=0;
456 3 break;
457 3 }
458 2
459 2 }while(en_loop);
460 1 //------------
461 1 if(e_key==16)
462 1 {
463 2 write_DDRAM(10,'2'); // OK 状态
464 2 for(i=12;i<15;i++)
465 2 write_DDRAM(i,' ');
466 2 lcddis_series(23,2,eeprom_buffer,1,1);
467 2 if(eeprom_buffer[1]==0)
468 2 write_DDRAM(23,' ');
469 2 lcddis_series(26,2,eeprom_buffer,3,1);
470 2 temp=eeprom_buffer[1]*1000 +eeprom_buffer[2]*100 +eeprom_buffer[3]*10 +eeprom_buffer[4];
471 2 temp/=100;
472 2 if(e_key==16) //数据前移一位,如果有写EEPROM,则写
473 2 {
474 3 for(i=0;i<4;i++)
475 3 eeprom_buffer[i]=eeprom_buffer[i+1];
476 3 return(temp);
477 3 }
478 2 }
479 1 else
480 1 return(p);
481 1 }
482 //------------------------------------------------------------//
483
484 void key_response(void)
485 {
486 1 switch(e_key)
C51 COMPILER V8.02 ALL_TEST 06/15/2007 10:53:26 PAGE 9
487 1 {
488 2 case 10:
489 2 {
490 3 e_key=24;
491 3 wr_lcd (comm,0x01,1); /*清屏,地址指针指向00H*/
492 3 wr_lcd (comm,0x08,1); //关显示
493 3
494 3 s=0;
495 3 adc_idle();
496 3 split_data(s);
497 3
498 3 wr_lcd (comm,0x01,1); /*清屏,地址指针指向00H*/
499 3 if(s>1500)
500 3 lcddis_series(0,5,eeprom_buffer,0,1);
501 3 else
502 3 lcddis_series(16,5,eeprom_buffer,0,1);
503 3 wr_lcd (comm,0x0c,1); /*开显示,关光标*/
504 3 break;
505 3 }
506 2 case 14:
507 2 {
508 3 e_key=0;
509 3 wr_lcd (comm,0x08,1);
510 3 break;
511 3 }
512 2 case 16:
513 2 {
514 3 e_key=0;
515 3 wr_lcd (comm,0x0c,1); /*开显示,关光标*/
516 3 break;
517 3 }
518 2 // case 14:
519 2 // {
520 2 // e_key=24;
521 2 // wr_lcd (comm,0x08,1); //关显示
522 2 // wr_lcd (comm,0x01,1); /*清屏,地址指针指向00H*/
523 2 // if(r457)
524 2 // {
525 2 // write_DDRAM(16,'R');
526 2 // write_DDRAM(17,0);
527 2 // write_DDRAM(18,1);
528 2 // write_DDRAM(19,2);
529 2 // write_DDRAM(20,':');
530 2 // }
531 2 // else
532 2 // {
533 2 // write_DDRAM(16,'R');
534 2 // write_DDRAM(17,3);
535 2 // write_DDRAM(18,':');
536 2 // write_DDRAM(19,' ');
537 2 // write_DDRAM(20,' ');
538 2 //
539 2 // }
540 2 // if(r457)
541 2 // {
542 2 // r457se=simple_input(r457se,0,1);
543 2 // if(e_key==16)
544 2 // {
545 2 // e_key=0;
546 2 // TR0=0;
547 2 // Write_A_Page(eeprom_buffer,4,0x08);
548 2 // TR0=1;
C51 COMPILER V8.02 ALL_TEST 06/15/2007 10:53:26 PAGE 10
549 2 // }
550 2 // }
551 2 // else
552 2 // {
553 2 // ryse=simple_input(ryse,0,1);
554 2 // if(e_key==16)
555 2 // {
556 2 // e_key=0;
557 2 // TR0=0;
558 2 // Write_A_Page(eeprom_buffer,4,0x0c);
559 2 // TR0=1;
560 2 // }
561 2 // }
562 2 // break;
563 2 // }
564 2
565 2 default: break;
566 2 }
567 1 }
568
569 void write_DDRAM(uchar pos ,uchar cont ) // 为单个数据写入DDRAM
570 {
571 1 uchar ex_addr;
572 1 if(pos>15)
573 1 ex_addr=0x30+pos;
574 1 else
575 1 ex_addr=pos;
576 1 wr_lcd(comm,0x80+ex_addr,1);
577 1 wr_lcd(dat,cont,1);
578 1 // wr_lcd(comm,0x0c,1); //如果有,会一个一个显示过来,能看清楚(不采取)
579 1 }
580
581 void lcddis_series(uchar lcd_pos ,uchar num, uchar *p, uchar p_n, bit dig)
582 {
583 1 uchar i;
584 1 uchar vis;
585 1 for(i=0;i<num;i++)
586 1 {
587 2 if(dig)
588 2 vis=*(p+p_n)+48; //自校准到相应ASCII码上
589 2 else
590 2 vis=*(p+p_n);
591 2 write_DDRAM(lcd_pos,vis);
592 2 p++;
593 2 lcd_pos++;
594 2 }
595 1 // wr_lcd(comm,0x0c,1);
596 1 }
597
598 void check_eeprom(uchar n)
599 {
600 1 uchar xdata i;
601 1 for(i=0;i<n;i++)
602 1 {
603 2 if((eeprom_buffer[i]>9)||(eeprom_buffer[i]<0)) //检测到无效
604 2 {
605 3 bfail=1;
606 3 }
607 2 }
608 1 }
609
610 void iniatial(void)
C51 COMPILER V8.02 ALL_TEST 06/15/2007 10:53:26 PAGE 11
611 {
612 1 uchar i;
613 1 uchar xdata addr;
614 1 bit un_effect=0;
615 1 //---------------------//开机初始化自检
616 1 TR0=0;
617 1 byte_dat=Read_One_Byte(0x68); //读符号位
618 1 TR0=1;
619 1 if((byte_dat&0x80)==0)
620 1 u_afunction=0; // +
621 1 else
622 1 u_afunction=1; // -
623 1
624 1 TR0=0;
625 1 byte_dat=Read_One_Byte(0x00);
626 1 TR0=1;
627 1 for(i=0;i<4;i++) //对AD值进行校验
628 1 {
629 2 un_effect=0;
630 2 switch(i)
631 2 {
632 3 case 0:
633 3 addr=0x01;
634 3 if((byte_dat&0x40)==0)
635 3 {
636 4 un_effect=1;
637 4 r457zeroflag=0;
638 4 }
639 3 break;
640 3 case 1:
641 3 addr=0x10;
642 3 if((byte_dat&0x80)==0)
643 3 {
644 4 un_effect=1;
645 4 ryzeroflag=0;
646 4 }
647 3 break;
648 3 case 2:
649 3 addr=0x20;
650 3 if((byte_dat&0x08)==0)
651 3 {
652 4 un_effect=1;
653 4 ryadflag=0;
654 4 }
655 3 break;
656 3 case 3:
657 3 addr=0x18;
658 3 if((byte_dat&0x04)==0)
659 3 {
660 4 un_effect=1;
661 4 r457adflag=0;
662 4 }
663 3 break;
664 3 default: break;
665 3 }
666 2 TR0=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -