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

📄 outputctrl.c

📁 基于ST72324设计的汽车无钥匙开门源程序
💻 C
字号:
#define __DEFINE_REGISTERS_STVD7_INCLUDE__
#include "ST72324BLK2.h"
#include "Head.h" 
#include "Variables.h"
#include "Subroutine.h"
#undef  __DEFINE_REGISTERS_STVD7_INCLUDE__
#define asm_nop() _asm ("nop\n")
#define DI() _asm ("sim\n")
#define EI() _asm ("rim\n")
/*-----------------------------------------------------------------------------------
//  System and periphrieal clock generator
------------------------------------------------------------------------------------*/
enum outputmode OutputMode;

void  OutputCtrl(enum  outputmode TempOutputMode,unsigned char looptimes)
{
	 OutputMode=TempOutputMode;
	 LoopTimes=looptimes;
	 LampClk=0;
	 AlarmClk=0;
	 ShortAlarmClk=0;
	 BaseClk_125ms=0;
	 
	 Port_Lock_0;
	 Port_Unlock_0;
	 if(OutputMode!=Alarm)
		 Port_Horn_0;
	 if(!Flag_DisablePKESetting)
	   Port_Lamp_0;
	 if(Flag_Key_Battery_Low)
      Flag_BatteryLow_Alarm=1;	 
	 else
      Flag_BatteryLow_Alarm=0;	 
} 

void  ScanOutputCtrl (void)
{
	static unsigned char WindowStepUpTimer;
/*======================================================*/	
// Auto Rollup window 

  if(EnableRollUpWindow)
    {
			if(WindowClk<1)
			 { 
         Port_Window_B_0;			
         Port_Window_A_0;			
		   }
      else if(WindowClk<6)
			 {
         Port_Window_A_1;			
         Port_Window_B_0;			
				 WindowStepUpTimer=6;
		   }	 
			else if(WindowClk>=41)
       {
			   Port_Window_A_0;
			   Port_Window_B_0;
				 EnableRollUpWindow=0;
       }			 
      else if(WindowClk>=WindowStepUpTimer)			
			{
         Port_Window_A_Toggle;			
         Port_Window_B_Toggle;			
				 WindowStepUpTimer+=5;
			}
	  }	
	else
    {
			WindowClk=0;
			Port_Window_A_0;
			Port_Window_B_0;
    }		
/*======================================================*/	
  switch(OutputMode)
	  {
		 case(SearchCar):
        if(LampClk>=40)
				  {
					 LampClk=0;	
					 if(LoopTimes--)	 
					   {
				       Port_Lamp_Toggle;
							 if(LoopTimes&BIT0)
							   {
									 Port_Horn_1;
							   }	 
						 }
					 else
              OutputMode=IDLE;	
				  }
					if(LampClk>=20)
					{
						Port_Horn_0;
					}
					
					 break;
/*=========================================================*/					 
     case(LockOn):
         {
           if(LampClk<=16)
					  {
                Port_Lock_1;
					  }
					 else if(LampClk==17)
            {
							  Port_Horn_1;
            }						
					 else if(LampClk<=37)
					  {
							if(LampClk>18)
							   Port_Horn_0;
              Port_Lock_0;
              Port_Unlock_0;							
							Port_Lamp_1;
					  }	
						else if(LampClk>37)
						{
							Port_Lamp_0;
							OutputMode=IDLE;
						}
           break;	
				 }
/*=========================================================*/					 
				 
     case(FlashLamp):
         {
					 if(LampClk>=20)
            {
							 LampClk=0;
							 if(LoopTimes--)
							  {
							   Port_Lamp_Toggle;
							  }
               else
                 OutputMode=IDLE;							 
					
            } 						
					  break;
			   }
/*=========================================================*/					 

     case(LockOff):
		     {
					 if(LampClk<16)
						 {
							   Port_Unlock_1;
						 }
					 else 
					   {
							 Port_Unlock_0;
							 if(LampClk>=24)
							     Port_Horn_0;
							 if(LampClk>=32)
							  {
									 LampClk=16;
									 if(LoopTimes--)
									  {
                      if(Flag_BatteryLow_Alarm)
                         Port_Horn_1;											
									    Port_Lamp_Toggle;
									  }	
									 else
                      OutputMode=IDLE;									 
							  }								
					   }	 
					 break;
			   }	 
/*=========================================================*/					 

      case(Alarm):
		     {
					RecoveryFuelTimer=0; 					
					if(AlarmClk<=30)       //Less than 30 seconds will flash lamp ,alarm, cut off fuel 
						 {
							 if(AlarmTimes<4)  //前三次报警有声音报警
							 Port_Horn_1;
					   }
						else if(AlarmClk<=180)  //  3  minutes 
						 {
					     Port_Horn_0;
						 }
						 
						else
             {
							 Flag_Door_Alarmed=0;
							 Flag_ACC_Alarmed=0;
							 OutputMode=IDLE;
						 }
      
						if(LampClk>=10)
						 {
							 LampClk=0;
               Port_Lamp_Toggle;							 
						 }
						break;   
				 }
/*=========================================================*/					 
    case(DACCLockOff):
		     {
					  if(LampClk<20)
						  return;
						else if(LampClk<28)
							{						
						    Port_Unlock_1;	
					  	}		
					  else 
              {
								 Port_Unlock_0;
								 OutputMode=IDLE;
						  }	 
					  break;		
				  }

/*=========================================================*/					 

      case(NoteCloseDoor):
			   {
          if(LampClk>=20)
            {
							LampClk=0;
              if(LoopTimes--)
                {
									Port_Lamp_Toggle;
									if(LoopTimes&BIT0)
									 {
									    Port_Horn_1;
											ShortAlarmClk=0;
								   }	
								}	
							else
								{
									OutputMode=IDLE;
								}
								
						}
           if(ShortAlarmClk>=1)
            {
							  Port_Horn_0;
            }						

          break;
				 }
/*=========================================================*/					 
   
    case(ACCLockOn):
		     {
          Port_Lock_1;
          if(LampClk>=8)
					 {
						  Port_Lock_0; 
              OutputCtrl(WAIT,2);					
				   } 	
					break;
				 }

/*=========================================================*/					 
    case(ACCLockOff):
		     {
          Port_Unlock_1;
          if(LampClk>=8)
					 {
						 Port_Unlock_0; 
             OutputCtrl(WAIT,2);					
				   } 	
					break;
				 }


/*=========================================================*/
    case(SwitchPKE):
		    {
					if(LampClk>=20)
            {
							 LampClk=0;
							 if(LoopTimes--)
							  {
									Port_Horn_Toggle;
								}
							 else
                { 
                 Port_Horn_0;								
					       OutputMode=IDLE;							 
							  } 
            } 						
					  break;
		    }
/*=========================================================*/

    case(WAIT):
				 {
					 if(LampClk>=10)
					  {
								LampClk=0;
                if(LoopTimes--)
                {
						       Port_Lock_0;
						       Port_Unlock_0;
						       Port_Lamp_0;
								}
                else
								{
                   OutputMode=IDLE;								
							  }	 
					  }	
					 break;
			   } 


    case(IDLE):
				 {
					  if(!Flag_DisablePKESetting)
	               Port_Lamp_0;
						Port_Lock_0;
						Port_Unlock_0;
						Port_Horn_0;
						Flag_Door_Alarming=0;
						Flag_ACC_Alarming=0;
						Flag_Key_Battery_Low=0;
						if(Flag_Learn1)
						  Flag_Learn0=1;

					  break;
				 }
      default:
			   LoopTimes=0;
				 OutputMode=IDLE;

		}
}

⌨️ 快捷键说明

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