⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 绝对好东西!aduc812AD转换代码,望对大家学习有所帮助!
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -