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 + -
显示快捷键?