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

📄 main.c

📁 汽车防盗器源程序
💻 C
📖 第 1 页 / 共 3 页
字号:
                 LedClock=0;
                 if(++LedTimes>=6) 
                 {
                    LedTimes=0;
                    Flag4.b.FlagLed0=0;
                    PFDR&=~LED;
                 }
             } 
          } 
         else
          { 
            if(LedClock>=16) 
             {
                Flag4.b.FlagLed0=1;
                LedClock=0;
             }            
          } 
      }

   
  else    //in guarding
    { 
     if(Flag4.b.FlagLed0)
      {
        if(LedClock)
          {
           PFDR^=LED;
           LedClock=0;
           if(++LedTimes>=4) 
            {
                LedTimes=0;
                Flag4.b.FlagLed0=0;
                PFDR&=~LED;
            }
          } 
      } 
     else
      {
       if(LedClock>=16) 
          {
             Flag4.b.FlagLed0=1;
             LedClock=0;
          }            
      } 
    }
  }

   else if(Flag4.b.FlagLED3s)
     {
      PFDR|=LED;
      if(LedClock>25) {PFDR&=~LED;Flag4.b.FlagLED3s=0;}
     }

   else if(Status&0x02)  {PFDR&=~LED;}
}

void FlashLed(void)
{
 if((LLMode==Toggle) && (LedClock>=1))
 {PFDR^=LED;LedClock=0;}
}
/*#################################################################*/
void  AlarmCtrl (void)                    
{
static unsigned char TimeAlarm=0,TimeAlarm0=0,AlarmTimes=0;
if(AlarmMode>1)  
  { 
  AlarmClock=0;
  StandarClock2=0;
  switch (AlarmMode)
    {
    case(LongAlarm):   TimeAlarm=160; AlarmMode=1;break;
    case(ShortAlarm):  TimeAlarm=3; goto AlarmExit;  
    case(DoubleAlarm): TimeAlarm=2;TimeAlarm0=10;AlarmTimes=1; goto AlarmExit;
    case(LShortAlarm): TimeAlarm=5; goto AlarmExit;
    case(Vibrate): TimeAlarm=5;TimeAlarm0=10;AlarmTimes=1; goto AlarmExit;
    case(Switch): TimeAlarm=5;TimeAlarm0=12;AlarmTimes=3; goto AlarmExit;
    AlarmExit: AlarmMode=0;break;
    }
	ISPR0=BIT2;
	TAOC1HR=0X00;
	TAOC1LR=104;
	
	TAOC2HR=0X00;
	TAOC2LR=TAOC2LBuff=208;
	
	//TAOC2LR=208;
	TAACLR=0;
	Flag4.b.Direct=0;
  TACR1=(BIT2+BIT3);
	TACR2=(BIT4+BIT3+BIT7);
  } 
	if((AlarmClock<TimeAlarm ) || AlarmMode)
   		{ 
			/*
			  if(TAOC1LR>=124) 
			   Flag4.b.Direct=1;
   		  else if (TAOC1LR<=42)  
				 Flag4.b.Direct=0;  
			*/	 
   		}
		
	else if ((TimeAlarm0)&&(AlarmClock>TimeAlarm0))  
   		{
   		      if(AlarmTimes) 
   		       {
   		          AlarmTimes--;
   		          AlarmClock=0;
   		          TAOC1LR=104;
               	TAOC2LR=TAOC2LBuff=208;
   		          Flag4.b.Direct=0;
								TACR2=(BIT3+BIT4+BIT7);
   		        }  
   		      else  TimeAlarm0=0;  
   		}
	else{TACR2&=~BIT7;PFDR&=~BIT4;}

}
/*#################################################################*/
void LockLightEngine(void)
{
  if(LLMode==LockOn)   /*Lock on handle*/
    {
     PFDR|=LockOpen;PEDR&=~LockClose;PFDR&=~Light; 
     if(LightClock>=LockTime) 
      {
       PFDR&=~LockOpen;
			 PDDR&=~Engine;
			 Flag3.b.FlagLocked=1;
			 LightClock=0; 
			 if(Flag3.b.FlagACC) 
			 LLMode=0; 
			 else LLMode=OneFlash;
      }
    }
     
  else if(LLMode==LockOff)
    {
      PEDR|=LockClose;PFDR&=~LockOpen;PFDR&=~Light; 
      if(LightClock>=(LockTime))
       { 
        PEDR&=~LockClose;
				Flag3.b.FlagLocked=0;
				LightClock=0; 
				if(Flag3.b.FlagACC) 
				LLMode=0; 
				else LLEMode(TwoFlash,4);
       }
    }
  else if(LLMode==OneFlash)
    {PFDR|=Light;
		if(LightClock>=2)  
		{
		 PFDR&=~Light;
		 LightClock=0;
		 EngineOff();
		 LLMode=0;}
		}
  else if(LLMode==TwoFlash)
    {if(LightClock>=1) 
		 { PFDR^=Light; LightClock=0;
		 if(!(--FlashTimes))
		 {LLMode=0;}}
		}     
  else if(LLMode==Toggle)
    {if(LightClock>=2) 
    {
		PFDR^=Light; LightClock=0;
		if(Flag5.b.FlagIndicate && (FlashTimes==5)&&!(TrigType&0x80))     {
		   Voice(CloseDoor);
		   Flag5.b.FlagIndicate=0;
		 }
		if(!--FlashTimes) 
			 {
			 Status&=~0x10;
			 PFDR&=~Light;
			 LLEMode(WAIT,1);
			 }
		}
	}   
  else if(LLMode==DACCLockOff)
	{
    if(LightClock<2) return;
      PEDR|=LockClose;PFDR&=~LockOpen;PFDR&=~Light; 
    if(LightClock>=4) 
		{
		 PEDR&=~LockClose;
		 Flag3.b.FlagLocked=0;
		 if(Flag5.b.FlagIndicate) 
		 LLMode=Toggle; 
		 else LLMode=0;
		}
	}
    
  else if(LLMode==VoiceSelect)
    {if(LightClock>=1) 
    {
	    PFDR^=Light;
    	if((!(FlashTimes&1))&&(Status&0x20)) 
    		AlarmMode=LShortAlarm;
    	if(!--FlashTimes) 
    		{LLEMode(WAIT,15);PFDR|=Light;}
    		LightClock=0;
    		return; }
    }   

  else if(LLMode==Toggle250ms)
   {
    if(LightClock>=1)
     {
      PFDR^=Light;
      LightClock=0;
      if(!--FlashTimes) LLMode=0; 
     }
   }

  else if(LLMode==Toggle500ms)
    {
     if(LightClock>=2)
      {
       PFDR^=Light;
       LightClock=0;
       if(!(FlashTimes&1))
        { 
         if(!(Status&0x04))
          {
          if(VibrateTimes==1)  AlarmMode=DoubleAlarm;
          else if(VibrateTimes==2)
            {
             if(!(Status&0x20)) AlarmMode=LShortAlarm;
             else {if(FlashTimes>=6) Voice(Warning);}
            }
          }  
         else /* Mute Mode*/
            if((VibrateTimes==2)&&(Status&0x20)&&(FlashTimes==10))              Voice(Warning);
        }
        if(!(--FlashTimes)) LLMode=0;
      }
    }
  else if (LLMode==Toggle120ms)
    {
      if(!FlashTimes) {LLMode=0;Flag5.b.FlagDuration=0;return;}
      if (Flag2.b.Flag120ms600msToggle && LedClock>=2) 
      {
			  FlashTimes--;
				LedClock=0;
				PFDR&=~Light;         
			  Flag2.b.Flag120ms600msToggle=0;
			}
      if (!Flag2.b.Flag120ms600msToggle)
       {
         if(!Flag5.b.FlagDuration && LedClock>5) goto ToggleNext; 
         else if (Flag5.b.FlagDuration && LedClock>10) 
				 goto ToggleNext;
         return;
ToggleNext:  
         FlashTimes--;
         LedClock=0;
         PFDR|=Light;
         Flag2.b.Flag120ms600msToggle=01;
         if(!(Status&0x20)&&!Flag3.b.FlagHelpMe) 
				 AlarmMode=ShortAlarm;     
       }  
    }
  else if(LLMode==WAIT)
    {
     TACR2=0; //disable alarm 
     if(LightClock>=4) 
     {
     LightClock=0;
     if(!(--FlashTimes)) LLMode=0;
     }
    }
  else if(LLMode==0) 
  {
	 TACR2=0; //disable alarm 
	 Status&=~0x10;
   Flag2.b.FlagOver=1;
   Flag5.b.FlagDuration=0;
	 Flag2.b.Flag120ms600msToggle=0;
	 PFDR&=~Light; 
	 if(Flag3.b.FlagLearn)
		Flag3.b.FlagLearnEnable=0;
   if(LightClock>1) 
	   PFDR&=~Light;
   if(Flag1.b.VoiceSetting) 
	 {
		Flag1.b.VoiceSetting=0;
	  LongTimer[1]=0;
	 }
   Flag1.b.FlagSearchMyCar=0;
   Flag1.b.FlagOSO=0;
   PEDR&=~LockClose;
	 PFDR&=~LockOpen;
  } 
  }
/*#################################################################*/

void LLEMode(char Mode,char Times)
{
 if((Mode==LockOff) || (Mode==LockOn) || (Mode==DACCLockOff))	
 StandarClock1=8;
 else
 StandarClock1=0;
 LightClock=0;
 LLMode=Mode;
 FlashTimes=Times;
}
/*#################################################################*/
void EngineOff(void)
{
 if(Flag5.b.FlagDisEngineOff) return; 
 PDDR|=Engine;
 R[6]=140;
}
/*#################################################################*/

void RemoveCtrl(void)
{
 unsigned char i;
 
 if(Flag3.b.FlagLearn) return;  /* don't care below if in Learn mode */ 
 if(R[0]<10)
   {
    if(LastReceive==ReceiveCode)
     {
     if(ReceiveCode==T_LOCK) 
      {
       if(R[1]>1)  Flag5.b.FlagDisEngineOff=1;
       if(R[1]<20 && !Flag4.b.FlagAlarmInOpen)  {LongTimer[1]=0;}
       else if(R[1]>20) {Flag1.b.VoiceSetting=1;PFDR|=Light;LLEMode(WAIT,10);}
      } 
      
     else if ((R[1]==4)&&(ReceiveCode==T_BACKDOOR)&&!Flag1.b.FlagOpenBackDoor)
       {
       OpenBackDoor();
       DisSensorChek(20);
       Flag1.b.FlagOpenBackDoor=1;
       R[1]=5;
       } 
    else if ((R[1]>8)&&(ReceiveCode==T_MUTE)&&!Flag3.b.FlagHelpMe && Flag3.b.FlagACC)
       {
       LLEMode(Toggle120ms,2);
       Flag3.b.FlagHelpMe=1;
       Flag3.b.FlagHelpMe0=0;
       R[7]=40;
       }   
    else if ((R[1]>6)&&(ReceiveCode==T_ALARM)&&!Flag1.b.FlagOSO && Flag3.b.FlagACC)
       { 
        AlarmMode=LongAlarm;
        LLEMode(Toggle250ms,120);
        Flag1.b.FlagOSO=1;
       }
      } 
      R[0]=0;
      LastReceive=ReceiveCode;
RemoveExit:     
      ReceiveCode=0;
      return;
    }

  LastReceive=ReceiveCode;
  Flag2.b.FlagOver=1;
  Flag5.b.FlagDisEngineOff=0;
  PFDR&=~LED;
  R[0]=0;
  R[1]=0;

 if(Flag3.b.FlagHelpMe) 
  {   
     if(!Flag3.b.FlagHelpMe0)  Flag3.b.FlagHelpMe=0;
     if(ReceiveCode==T_UNLOCK)  {Flag3.b.FlagHelpMe=0; LLMode=0;R[6]=2;TACR2=0; //disable alarm 
}
     goto RemoveExit;
  }
  
   if(Flag1.byte&(BIT3+BIT5))//if(Flag1.b.FlagOSO || Flag1.b.FlagSearchMyCar) 
 {
    LLMode=0;
    goto RemoveExit;
 }
 

 if(!(TrigType&ACC)&& Status&0x02)
 {
   if(ReceiveCode==T_UNLOCK ) {LLEMode(LockOff,0);LongTimer[1]=0;} 
   else if(ReceiveCode==T_LOCK) LLEMode(LockOn,0);
   goto RemoveExit;
 }
               
                                                                   
 if(ReceiveCode!=T_UNLOCK&&Flag4.b.FlagAlarmInOpen&&(TrigType&~(BIT2+BIT3+SENSOR))!=0x92 )   //??????SENSOR 
 {
   LLMode=0;
   if(Flag1.b.FlagPlsCloseDoor)
    LongTimer[1]=157;
   else 
    LongTimer[1]=17;
    goto RemoveExit;
 }
    
 if((Flag1.b.VoiceSetting)&&(ReceiveCode!=T_MUTE))
  {LLMode=0;goto RemoveExit;}
 if(LLMode==Toggle && Status&0x48 && ReceiveCode!=T_UNLOCK)  {LLMode=0;R[2]=60;goto RemoveExit;} 

 TACR2=0;
 LongTimer[1]=0;
 Flag4.b.FlagAlarmInOpen=0;
 Flag1.b.FlagPlsCloseDoor=0;
 RS232Imformation=0;
 switch(ReceiveCode)
 {
  
    
  case(T_LOCK): 			 
   							  
  				             if((Status&0x05)!=0x01)  PressTimes=0;
  				             Status&=0XF8;
  				             Status|=LOCK;
  				             PressTimes++;
                             if(PressTimes<0X04) 
                               {
                               AlarmMode=ShortAlarm;
                               LLEMode(LockOn,0);
                               }
  						      	 else 
  							       LLEMode(OneFlash,0);
  CaseExit:							   

							         VibrateTimes=0;
							         Flag3.b.FlagACC=0;
											 Flag2.byte&=~(BIT2+BIT3+BIT4); //FlagStep1=FlagStep2=FlagStep3=0;  
											break;
  						   
  case(T_UNLOCK):            
                             if(!(Status&0x02)) {PressTimes=0;R[3]=Status;Flag5.b.FlagRecovery=1;}  /* restore the status information for recovery(if the command only a accident )*/
                             PressTimes++;
  							 Status&=0XFC;
  							 Status|=UNLOCK;
                             if(PressTimes<2)
														 {if(!(Status&0X04))AlarmMode=DoubleAlarm;LLEMode(LockOff,0);}
														 else if(PressTimes<3) LLEMode(LockOff,0);
                             else {LLEMode(TwoFlash,4); }
                             PDDR&=~Engine;
                             Flag1.b.FlagVoice=0;
        				             Flag2.b.TestingWrongUnlock=1; 
        				             Flag2.b.TestTimer=0;
        				             Flag1.b.FlagTemp0=0;
							               VibrateTimes=0;
  							             DisSensorChek(12);
  							             if(!(TrigType&SIDE_TRIG)) Flag2.b.FlagStep2=1;
                             break;
                             
  case(T_MUTE):             
                             if(Flag1.b.VoiceSetting) 
  							 {Status^=VOICE;LLEMode(VoiceSelect,5);return;}
                             if(!(Status&0X04)) PressTimes=0;

⌨️ 快捷键说明

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