📄 main.lst
字号:
481 4 IRIS_DIR=1; //反转
482 4 for(i=0;i<unPulseHigh;i++);
483 4 {}
484 4
485 4 IRIS_RUN=1; //停止
486 4 //for(i=0;i<unPulseLow;i++);
C51 COMPILER V7.10 MAIN 05/22/2006 14:37:00 PAGE 9
487 4 //{}
488 4 R_IRIS_Run_Flag=0x00;
489 4 IRIS_CurPos=IRIS_TgtPos; //使当前值等于上次发送的目标值,发送同样的目标值电机不转动
490 4 return;
491 4 }
492 3 Cnt++; //通过j计数,j计数达到预定值后,停止光圈电机转动,,
493 3 if(Cnt==1500) //并清楚转动标志位,防止转死情况的发生
494 3 {
495 4 IRIS_RUN=1;
496 4 IRIS_DIR=1;
497 4 R_IRIS_Run_Flag=0x00;
498 4 return;
499 4 }
500 3 }
501 2
502 2 }
503 1 else
504 1 {
505 2 UpdataCurPos();
506 2 IRIS_DIR=1;
507 2 while(L_IRIS_Run_Flag==0xFF)
508 2 {
509 3 IRIS_RUN=0; // 目标地址小于当前地址,光圈应增大,电机向左转
510 3 for(i=0;i<unPulseHigh;i++);
511 3 {}
512 3
513 3 IRIS_RUN=1; //停止
514 3 for(i=0;i<unPulseLow;i++);
515 3 {}
516 3
517 3 UpdataCurPos();
518 3 if((IRIS_TgtPos>=IRIS_CurPos)&&(L_IRIS_Run_Flag==0xFF))
519 3 {
520 4 IRIS_RUN=1;
521 4 IRIS_DIR=0; //反转
522 4 for(i=0;i<unPulseHigh;i++);
523 4 {}
524 4
525 4 IRIS_DIR=1; //停止
526 4 //for(i=0;i<unPulseLow;i++);
527 4 //{}
528 4 L_IRIS_Run_Flag=0x00;
529 4 IRIS_CurPos=IRIS_TgtPos; //使当前值等于上次发送的目标值,发送同样的目标值电机不转动
530 4 return;
531 4 }
532 3 Cnt++;
533 3 if(Cnt==1500) //通过j计数,j达到预定值后,停止光圈电机转动,
534 3 { //并清楚转动标志位,防止转死情况的发生
535 4 IRIS_RUN=1;
536 4 IRIS_DIR=1;
537 4 L_IRIS_Run_Flag=0x00;
538 4 return;
539 4 }
540 3 }
541 2 }
542 1 }
543
544 void Filter_Run_L() //滤光片电机旋转
545 {
546 1
547 1 FILTER_DIR=1;
548 1 FILTER_RUN=0;
C51 COMPILER V7.10 MAIN 05/22/2006 14:37:00 PAGE 10
549 1 TR0=1; //启动定时器0
550 1 //if(!ND_INVAL)
551 1 // {
552 1 // Serial_Port_Trans(0xDDDD); //当转动到位置时发送0xDDDD
553 1 //}
554 1
555 1 }
556 void Filter_Run_R()
557 {
558 1
559 1 FILTER_DIR=0;
560 1 FILTER_RUN=1;
561 1 TR0=1; //启动定时器0
562 1 //if(!ND_VAL)
563 1 //{
564 1 //Serial_Port_Trans(0xCCCC); //当转动到位置时发送0xCCCC
565 1 //}
566 1
567 1 //Serial_Port_Trans(0xFFFF);
568 1 }
569
570
571 void Initial_Filter_Moto()
572 {
573 1 unsigned int i=0x0000;
574 1 FILTER_DIR=1;
575 1 FILTER_RUN=0;
576 1 while(ND_VAL)
577 1 {
578 2 i++;
579 2 if(i==40000)
580 2 {
581 3 FILTER_DIR=1;
582 3 FILTER_RUN=1;
583 3 return;
584 3 }
585 2 }
586 1 FILTER_DIR=1;
587 1 FILTER_RUN=1;
588 1
589 1 //Serial_Port_Trans(0xFFFF);
590 1 }
591
592
593 void ABS_Account() //ABS转化输出
594 {
595 1 unsigned int G;
596 1 unsigned char *p;
597 1 G=(unsigned int)ABS_N;
598 1 p=(unsigned char *)&Y + 2;
599 1 Y=GetADC(ADIN_V_ABS);
600 1 Y=ABS_M*Y;
601 1 if(Y>=0x0FFF)
602 1 {
603 2 Y=0x0FFF;
604 2 }
605 1 if(Y<=0x0000)
606 1 {
607 2 Y=0x0000;
608 2 }
609 1 V_ABS_H=*p;
610 1 V_ABS_L=*(p+1);
C51 COMPILER V7.10 MAIN 05/22/2006 14:37:00 PAGE 11
611 1 Put_ABS(V_ABS_H,V_ABS_L);
612 1
613 1 }
614
615 void AEC_Account()
616 {
617 1 unsigned int G;
618 1 unsigned char *p;
619 1
620 1 p=(unsigned char *)&Y;
621 1 Y=(GetADC(ADIN_V_ABS) + GetADC(ADIN_V_ABS)) >> 1;
622 1 G=AEC_M*Y;
623 1 if(G > 0x0FFF)
624 1 {
625 2 V_AEC_H=0x0F;
626 2 V_AEC_L=0xFF;
627 2 }
628 1 else
629 1 {
630 2 Y = G + AEC_N;
631 2 if(Y>=0x0FFF)
632 2 {
633 3 V_AEC_H=0x0F;
634 3 V_AEC_L=0xFF;
635 3 }
636 2 else
637 2 {
638 3 V_AEC_H=*p;
639 3 V_AEC_L=*(p+1);
640 3 }
641 2
642 2 }
643 1 Put_AEC(V_AEC_H,V_AEC_L);
644 1
645 1 }
646
647
648 void R_Reverse() //IRIS_Moto向右侧反转
649 {
650 1 IRIS_DIR=0;
651 1 IRIS_RUN=1;
652 1 Delay(200); //反转时间由Delay函数控制
653 1 IRIS_DIR=1;
654 1 IRIS_RUN=1;
655 1 Delay(1000);
656 1 }
657
658 void L_Reverse() //IRIS_Moto向左侧反转
659 {
660 1 IRIS_DIR=1;
661 1 IRIS_RUN=0;
662 1 Delay(200); //反转时间由Delay函数控制
663 1 IRIS_DIR=1;
664 1 IRIS_RUN=1;
665 1 Delay(1000);
666 1 }
667
668 //--------------------------------------------//
669 //--2005-11-08 --//
670 //--功能:光圈初始化 --//
671 //--说明: --//
672 //-- 光圈在最小最大两个位置运行一次, --//
C51 COMPILER V7.10 MAIN 05/22/2006 14:37:00 PAGE 12
673 //-- 然后回到中间位置 --//
674 //--作者: 崔志立 --//
675 //--------------------------------------------//
676 void InitIris()
677 {
678 1 UpdataCurPos();
679 1 Delay(100);
680 1 UpdataCurPos();
681 1
682 1 //光圈初始化位置1
683 1 R_IRIS_Run_Flag=0xFF;
684 1 L_IRIS_Run_Flag=0xFF;
685 1 IRIS_TgtPos=0x0200;
686 1 IRIS_Moto_Run();
687 1 Delay(100);
688 1
689 1 //光圈初始化位置2
690 1 R_IRIS_Run_Flag=0xFF;
691 1 L_IRIS_Run_Flag=0xFF;
692 1 IRIS_TgtPos=0x0E00;
693 1 IRIS_Moto_Run();
694 1 Delay(100);
695 1
696 1 //光圈初始化位置3
697 1 R_IRIS_Run_Flag=0xFF;
698 1 L_IRIS_Run_Flag=0xFF;
699 1 IRIS_TgtPos=0x0800;
700 1 IRIS_Moto_Run();
701 1 Delay(100);
702 1
703 1 R_IRIS_Run_Flag=0x00;
704 1 L_IRIS_Run_Flag=0x00;
705 1 }
706 //--------------------------------------------//
707
708
709
710
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1570 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 32 14
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 + -