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

📄 functionprototype.c

📁 UCOSii for c8051f020
💻 C
📖 第 1 页 / 共 5 页
字号:
         {
             if(!CHECK_STATUS(SID_Switch,I_SID_1))
             {
                 SET_STATUS(Output_1,Q_SID_MoveDown);
                 CLR_STATUS(Output_1,Q_SID_MoveUp);
             }
         }
         else if(IS_POS_EDGE(Local_Flag_1,V_SID_POSEDGE))
             {
                 CLR_STATUS(Output_1,Q_SID_MoveDown);
                 CLR_STATUS(Output_1,Q_SID_MoveUp);
             }
    UPDATE_EDGE(Local_Flag_1,V_SID_POSEDGE);

    if(
       	CHECK_STATUS(SID_Switch,I_SID_2) && (abs(TL_SC_Distance > 923))  ||
       	CHECK_STATUS(SID_Switch,I_SID_3) && (abs(TL_SC_Distance > 1007)) ||
       	CHECK_STATUS(SID_Switch,I_SID_4) && (abs(TL_SC_Distance > 1091)) ||
       	CHECK_STATUS(SID_Switch,I_SID_5) && (abs(TL_SC_Distance > 1175))
      	)
    {
        CLR_STATUS(Output_1,Q_SID_MoveDown);
    }

	if(CHECK_STATUS(SID_Switch,I_SID_5)) 
	{
   		CLR_STATUS(Output_1,Q_SID_MoveUp);
	}

	if(CHECK_STATUS(SID_Switch,I_SID_1)) 
	{
   		CLR_STATUS(Output_1,Q_SID_MoveDown);
	}
	
	  //注:Q_向上 下降沿   ||   Q_向下 下降沿    
      //    --->>   停止 床体倾斜 断开延时 定时器  (使其开始计时1S)
	if(IS_POS_EDGE(Output_1,Q_SID_MoveUp) || IS_POS_EDGE(Output_1,Q_SID_MoveDown))
    {
        //向执行动作的通信程序发送 MovementRUN
    }
    
      //注:Q_向上 下降沿   ||   Q_向下 下降沿    
      //    --->>   停止 床体倾斜 断开延时 定时器  (使其开始计时1S)
    if(IS_NEG_EDGE(Output_1,Q_SID_MoveUp) || IS_NEG_EDGE(Output_1,Q_SID_MoveDown))
    {
        //向执行动作的通信程序发送 MovementSTOP
    }
}
//---------------------------------------------------------------------------------------------------------------




/****************************************************************************************************************
 FUNCTON NAME              : ZeroPosition_Status
 FUNCTION VERSION          :   
 CREATED ON                :   
 FUNCTION DESCRIPTION      : 
 INPUT PARAMETER           : 
 RETURN VALUE              : 
 MODIFY RECORD             :
******************************************************************************************************************/	
void ZeroPosition_Status(void)
{
    TubeLongitud_Status();
    Tabletop_LateralStatus();
    Longitud_Status();
}
//---------------------------------------------------------------------------------------------------------------


/****************************************************************************************************************
 FUNCTON NAME              : ZeroPosition_Execute
 FUNCTION VERSION          :   
 CREATED ON                :   
 FUNCTION DESCRIPTION      : 
 INPUT PARAMETER           : 
 RETURN VALUE              : 
 MODIFY RECORD             :
******************************************************************************************************************/	
void ZeroPosition_Execute(void)
{
    //影像复位_Execute
    if(!CHECK_STATUS(TubeLongitud_Switch ,V_TL_ZERO))
    {
        if(CHECK_STATUS(Control_2,C_MoveAllToZero))   
        {
            if(TL_SC_Error >= 0) 
            {
                 SET_STATUS(Output_1,Q_TL_AngulationFoot);
                 CLR_STATUS(Output_1,Q_TL_AngulationHead);
            }
            else
            {
                 SET_STATUS(Output_1,Q_TL_AngulationHead);
                 CLR_STATUS(Output_1,Q_TL_AngulationFoot);
            }
        }
    }
    else if(CHECK_STATUS(TubeLongitud_Switch ,V_TL_ZERO))
         {
             CLR_STATUS(Output_1,Q_TL_AngulationHead);
             CLR_STATUS(Output_1,Q_TL_AngulationFoot);
         }
         
    //床面板横向复位_Execute
    if(!CHECK_STATUS(Lateral_Switch,A_La_Middle))
    {
        if(CHECK_STATUS(Control_2,C_MoveAllToZero))   
        {
            if(CHECK_STATUS(Lateral_Switch,A_La_Outside)) 
            {
                 SET_STATUS(Output_1,Q_La_MoveInside);
                 CLR_STATUS(Output_1,Q_La_MoveOutside);
            }
            if(CHECK_STATUS(Lateral_Switch,A_La_Inside)) 
            {
                 SET_STATUS(Output_1,Q_La_MoveOutside);
                 CLR_STATUS(Output_1,Q_La_MoveInside);
            }
        }
    }
    else if(CHECK_STATUS(Lateral_Switch,A_La_Middle))
         {
             CLR_STATUS(Output_1,Q_La_MoveOutside);
             CLR_STATUS(Output_1,Q_La_MoveInside);
         } 
         
         
    //床面板纵向复位
    if(!CHECK_STATUS(Longitud_Switch,A_L_Middle))
    {
        if(CHECK_STATUS(Control_2,C_MoveAllToZero))   
        {
            if(!CHECK_STATUS(Longitud_Switch,I_L_Middle) || CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag)) 
            {
                 SET_STATUS(Output_1,Q_L_MoveHead);
                 CLR_STATUS(Output_1,Q_L_MoveFoot); 
            }
            else
            {
                if(CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag))
                {
                    SET_STATUS(Output_1,Q_L_MoveFoot); 
                }
                
            }
        }
    }
    else if(CHECK_STATUS(Longitud_Switch,A_L_Middle))
         {
             CLR_STATUS(Output_1,Q_L_MoveHead);
             CLR_STATUS(Output_1,Q_L_MoveFoot); 
         } 
         
    
   //防止误复位标志有效
   if(!CHECK_STATUS(Control_2,C_MoveAllToZero))
   {
       CLR_STATUS(Output_1,Q_TL_AngulationHead);
       CLR_STATUS(Output_1,Q_TL_AngulationFoot);
       CLR_STATUS(Output_1,Q_La_MoveOutside);
       CLR_STATUS(Output_1,Q_La_MoveInside);
       CLR_STATUS(Output_1,Q_L_MoveHead);
       CLR_STATUS(Output_1,Q_L_MoveFoot); 
   }
         
    
}


/****************************************************************************************************************

运动控制与PC通信处理程序

/****************************************************************************************************************

/****************************************************************************************************************
 FUNCTON NAME              : MovementPCcommunicateProcess
 FUNCTION VERSION          :   
 CREATED ON                :   
 FUNCTION DESCRIPTION      : 
 INPUT PARAMETER           : 
 RETURN VALUE              : 
 MODIFY RECORD             :
 REMARK                    : FLG_ProcessStat   0 -- 不需要发送;1 -- 需要发送。
******************************************************************************************************************/	 
void MovementPCcommunicateProcessSUB(void)
{
    switch(*(MemRXProcess + 2))
    {
        case 'F':
        {
            MovementPCFunction_F();
            break;
        }
        case 'A':
        {
            MovementPCFunction_A();
            break;
        }
        case 'L':
        {
            MovementPCFunction_L();
            break;
        }
        case 'T':
        {
            MovementPCFunction_T();
            break;
        }
        
        case 'S':
        {
            MovementPCFunction_S();
            break;
        }
        
        default:
        {
            FLG_ProcessStat = 0;
            break;
        }
        
    }
    
    if( FLG_ProcessStat == 1)
        {
            OSQPost(TxMsg,MemRXProcess);
        }
        else
            {
                OSMemPut(CommunicateBUF,MemRXProcess);
            }
}
//---------------------------------------------------------------------------------------------------------------




/****************************************************************************************************************
 FUNCTON NAME              : MovementPCFunction_F
 FUNCTION VERSION          :   
 CREATED ON                :   
 FUNCTION DESCRIPTION      : 
 INPUT PARAMETER           : 
 RETURN VALUE              : 
 MODIFY RECORD             :
 REMARK                    : FLG_ProcessStat   0 -- 不需要发送;1 -- 需要发送。
******************************************************************************************************************/	 
void MovementPCFunction_F(void)
{
    switch(*(MemRXProcess + 4))
    {
        case '0':
        {
            *MemRXProcess = 0x06; //正确应答
            *(MemRXProcess + 1) = 'R';
            *(MemRXProcess + 2) = 'F';
            *(MemRXProcess + 3) = '0';
            *(MemRXProcess + 4) = '0';
            
            *(MemRXProcess + 5) = ' ';
            *(MemRXProcess + 6) = '1';
            *(MemRXProcess + 7) = '0';
            *(MemRXProcess + 8) = '0';
            
            FLG_ProcessStat = 1;
            break;
        }  
                
        case '1':
        {
            *MemRXProcess = 0x06; //正确应答
            *(MemRXProcess + 1) = 'R';
            //*(MemRXProcess + 2) = 'F';
            //*(MemRXProcess + 3) = '0';
            //*(MemRXProcess + 4) = '1';
            
            *(MemRXProcess + 5) = ' ';
            *(MemRXProcess + 6) = ' ';
            *(MemRXProcess + 7) = 'O';
            *(MemRXProcess + 8) = 'K';
            
            FLG_ProcessStat = 1;
                      
            break;
        }
                
        case '2':
        {
            if(*(MemRXProcess + 1) == 'W')
            {
                if(*(MemRXProcess + 5) == 'E' &&
                   *(MemRXProcess + 6) == 'N' && 
                   *(MemRXProcess + 7) == 'T' &&
                   *(MemRXProcess + 8) == 'R')
                {
                    SpeedConfig_Flag = 1;
                }
                else
                    {
                        SpeedConfig_Flag = 0;
                    }
                //需要填写写RAM或FRAM代码
                
                *MemRXProcess = 0x06; //正确应答
                *(MemRXProcess + 1) = 'R';
                
                FLG_ProcessStat = 1;
                
                break;        
            }
            
        }       
        case '3':
        {
             if(*(MemRXProcess + 5) == 'W' &&
                *(MemRXProcess + 6) == 'R' && 
                *(MemRXProcess + 7) == 'A' &&
                *(MemRXProcess + 8) == 'M')
             {
                 //调用写RAM程序
             }
             
             if(*(MemRXProcess + 5) == 'W' &&
                *(MemRXProcess + 6) == 'F' && 
                *(MemRXProcess + 7) == 'L' &&
                *(MemRXProcess + 8) == 'S')
             {
                 //调用写FLASH程序
             } 
             
             *MemRXProcess = 0x06; //正确应答
             *(MemRXProcess + 1) = 'R';
             
             FLG_ProcessStat = 1;
             

⌨️ 快捷键说明

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