ca6002.c

来自「miceteck_MPC860_BSP源码,基于VXWORK」· C语言 代码 · 共 466 行 · 第 1/2 页

C
466
字号
          {

             if(ModSet==1)                      /* 手动 */
                 {               
                    SET_SEL_OSW2;
                    *CA6002_POI_OSW_STA = RegOswSta<<8;
                    
                    SwitchTime();               /* 延时10us */
                    
                    /* 设置成功返回TRUE,否则返回FALSE */ 
                    if((GetCa6002State(CA6002_REG_OSW_STA)&0x8)==0x8)
                        return(TRUE);
                    else 
                        return(FALS);
                 }
             else                               /* 自动 */
                 {
                    CLR_SEL_OSW2;
                    *CA6002_POI_OSW_STA = RegOswSta<<8;
                    
                    SwitchTime();               /* 延时10us */
                    
                    /* 设置成功返回TRUE,否则返回FALSE */ 
                    if((GetCa6002State(CA6002_REG_OSW_STA)&0x8)==0)
                        return(TRUE);
                    else 
                        return(FALS);                    
                 }
           }
       else                                     /* 设置接收通道 */
           {
             if((RegOswSta&0x8)==0x8)           /* 在开关模式已设为手动时才操作 */
             { 
               if(ModSet==1)                    /* 通道B */
                   {               
                      SET_STA_OSW2;
                      *CA6002_POI_OSW_STA = RegOswSta<<8;
                      
                      SwitchTime();             /* 延时10us */
                      
                      /* 设置成功返回TRUE,否则返回FALSE */ 
                      if((GetCa6002State(CA6002_REG_OSW_STA)&0x4)==0x4)
                          return(TRUE);
                      else 
                          return(FALS);                            
                   }
               else                             /* 通道A */
                   {
                      CLR_STA_OSW2;
                      *CA6002_POI_OSW_STA = RegOswSta<<8; 
                      
                      SwitchTime();             /* 延时10us */
                      
                      /* 设置成功返回TRUE,否则返回FALSE */ 
                      if((GetCa6002State(CA6002_REG_OSW_STA)&0x4)==0)
                          return(TRUE);
                      else 
                          return(FALS);                             
                   }           
             }
             else return(FALS);
           }  
  }
}
  
else return(FALS);

}

unsigned short SetCa6002Laser( unsigned short LASER_NUM,unsigned short STATE )
{
  unsigned Buffer=0,Value=0;
  if((LASER_NUM < 1)|(LASER_NUM > 2)|(STATE < 0)|(STATE > 1))
     return( FALS );

     switch( LASER_NUM )                        /* 选择操作激光器 */
      {
        case 1:if(STATE == 0)                   /* 设为打开时 */
               {
               	  Buffer = (((ca6002_disa1<<31)|(ca6002_disa2<<30))&0x7F000000);     /* 将控制位设为0 */
               	  *CA6002_POI_LAS_STA = Buffer;
               	  ca6002_disa1 = STATE;
               	  
               	  Value = *CA6002_POI_LAS_STA;         
               	  if((Value&0xFF000000) == (Buffer&0xFF000000)) return( TRUE );else return( FALS );
               	
               }
               else                             /* 设为关断时 */
               {
               	  Buffer = (((ca6002_disa1<<31)|(ca6002_disa2<<30))|0x80000000);     /* 将控制位设为1 */
               	  *CA6002_POI_LAS_STA = Buffer;
               	  ca6002_disa1 = STATE;
               	  
               	  Value = *CA6002_POI_LAS_STA;         
               	  if((Value&0xFF000000) == (Buffer&0xFF000000)) return( TRUE );else return( FALS );                             
               	  
               }
               
               break;
        case 2:if(STATE == 0)
               {
               	  Buffer = (((ca6002_disa1<<31)|(ca6002_disa2<<30))&0xBF000000);     /* 将控制位设为0 */
               	  *CA6002_POI_LAS_STA = Buffer;
               	  ca6002_disa2 = STATE;
               	  
               	  Value = *CA6002_POI_LAS_STA;         
               	  if((Value&0xFF000000) == (Buffer&0xFF000000)) return( TRUE );else return( FALS );
               	
               }
               else                             /* 设为关断时 */
               {
               	  Buffer = (((ca6002_disa1<<31)|(ca6002_disa2<<30))|0x40000000);     /* 将控制位设为1 */
               	  *CA6002_POI_LAS_STA = Buffer;
               	  ca6002_disa2 = STATE;
               	  
               	  Value = *CA6002_POI_LAS_STA;         
               	  if((Value&0xFF000000) == (Buffer&0xFF000000)) return( TRUE );else return( FALS );                             
               	  
               }
               
               break;

      } 
}

unsigned short SetCa6002Switch( unsigned short PORT_NUM,unsigned short STATE )
{
  unsigned Buffer=0,Value=0;
  if((PORT_NUM < 1)|(PORT_NUM > 4)|(STATE < 0)|(STATE > 1))
      return( FALS );
  
      switch( PORT_NUM )                         /* 选择交换机端口 */
      {
        case 1:if(STATE == 0)                    /* 设为打开时 */
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))&0x7f000000);        /* 将控制位设为0 */
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd1 = STATE;
               	
               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );
               	  
               }
               else                              /* 设为关断时 */
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))|0x80000000);        /* 将控制位设为1 */ 
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd1 = STATE;               	  

               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );                             
               	  
               }
               
               break;
        case 2:if(STATE == 0)
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))&0xbf000000);        /* 将控制位设为0 */
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd2 = STATE;
               	
               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );
               	  
               }
               else                              /* 设为关断时 */
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))|0x40000000);        /* 将控制位设为1 */ 
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd2 = STATE;               	  

               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );                             
               	  
               }
               
               break;
        case 3:if(STATE == 0)
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))&0xdf000000);        /* 将控制位设为0 */
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd3 = STATE;
               	
               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );
               	  
               }
               else                              /* 设为关断时 */
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))|0x20000000);        /* 将控制位设为1 */ 
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd3 = STATE;               	  

               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );                             
               	  
               }
               
               break;
        case 4:if(STATE == 0)
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))&0xef000000);        /* 将控制位设为0 */
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd4 = STATE;
               	
               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );
               	  
               }
               else                              /* 设为关断时 */
               {
               	  Buffer = (((ca6002_sd1<<31)|(ca6002_sd2<<30)|(ca6002_sd3<<29)|(ca6002_sd4<<28))|0x10000000);        /* 将控制位设为1 */ 
               	  
               	  *CA6002_POI_SWI_STA = Buffer;
               	  ca6002_sd4 = STATE;               	  

               	  Value = *CA6002_POI_SWI_STA;          
               	  if((Value&0xff000000) == (Buffer&0xff000000)) return( TRUE );else return( FALS );                             
               	  
               }
               
               break;               
       }  
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?