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

📄 main.c

📁 汽车防盗器源程序
💻 C
📖 第 1 页 / 共 3 页
字号:
                             PressTimes++;
                             Status&=0XFC;
                             Status|=0x05;
                             if(PressTimes<0X04) {LLEMode(LockOn,0);}
  							 else {LLEMode(OneFlash,0);}
  							 goto CaseExit;

                             
  case(T_ALARM):     
                             Flag1.b.FlagSearchMyCar=1;
                             if(!(Status&0x04))
  							             AlarmMode=LongAlarm;                          
                             LLEMode(Toggle,30);
                             Flag1.b.FlagVoice=0;
                             break;
                             
                             
  case(T_BACKDOOR):   
                             Flag1.b.FlagVoice=0;
                             
 }
ReceiveCode=0; 
Flag3.b.FlagHelpMe=0;
}
/*#################################################################*/
void CenterCtrl(void)
{
 static char j=0;
 CheckOpenDoor();
 CheckLearn();
 if(ReceiveCode)   /*remote acknowledge*/
 RemoveCtrl();
 if(LLMode>1) DisSensorChek(12);

 if(LongTimer[1]>121)  PressTimes=0;  //over 30 s 
 
 //if(FlagOSO || FlagHelpMe || FlagSearchMyCar || VoiceSetting ) return;
 if(Flag1.byte&(BIT3+BIT4+BIT5) || Flag3.b.FlagHelpMe) return;

 if(Status&0x01 && !Flag1.b.VoiceSetting) /*Lock status*/
 {
  if(LongTimer[1]>2 && ((TrigType&(BACK_TRIG+SIDE_TRIG))==0x02)) 
   {
    if(Flag1.b.FlagPlsCloseDoor)  {Flag1.b.FlagPlsCloseDoor=0;DisSensorChek(12);}   
   }
  if(LongTimer[1]<20)
    {
     if(!(TrigType&SENSOR)) LongTimer[1]=2;
     if(LongTimer[1]<2)     /* before guard 500ms check if door is closed,(if open will be Notice master to close door)*/  
      {
        if(TrigType&BACK_TRIG || !(TrigType&SIDE_TRIG)) 
         Flag1.b.FlagPlsCloseDoor=1;    /* Door is Opening*/ 
        else {Flag1.b.FlagPlsCloseDoor=0;DisSensorChek(16);}
      }		
   }

  else    
  { 
   
   
   if(TrigType&EMERGENCY_KEY)  {Flag5.b.FlagPortTrig=1;}                          /* for fire guard Mode(press down emergy key over 3 times  */
   else   {if(Flag5.b.FlagPortTrig) j++;Flag5.b.FlagPortTrig=0;}      
   
   if(!(TrigType&0x92)&& !Flag1.b.FlagPlsCloseDoor)
    {  
 	   if(Flag5.b.FirstEnter)	{R[9]=0;Flag5.b.FirstEnter=0;j=0;}
 	   else if(R[9]<20 && j>2) {Status|=Fire;Flag5.b.FirstEnter=1;return;}
 	   else if(R[9]>20) Flag5.b.FirstEnter=1;
    }
    else Flag5.b.FirstEnter=1;
  
    
   if((TrigType&0xB2)!=0x92 && !Flag1.b.FlagPlsCloseDoor) /*  after 3s if any switch be triged  will be alarming*/
   	{
   	 if((TrigType&0xB2)==0xB2 && Flag1.b.FlagIgnoreBackDoor) return; 
   	 if(!LLMode || !Flag4.b.FlagAlarmInOpen)
   	  {
         LLEMode(Toggle,60);
         AlarmMode=LongAlarm;
         EngineOff();
         Status|=DoorTriged;
         Status|=Alarm;
         Flag4.b.FlagAlarmInOpen=1;
      }   
    }   
   else if(Flag1.b.FlagPlsCloseDoor && (TrigType&0x22)!=0x02 )   /* if Door don't closed , after 35 s will Alarming*/
    {   
 	      if(LongTimer[1]>160)
 	      {
 	        if(!LLMode)
 	         {Flag4.b.FlagAlarmInOpen=1;AlarmMode=LongAlarm;LLEMode(Toggle,60);}
 	      }

          else if(LongTimer[1]==20 && LLMode!=Toggle120ms)
          { 
              if(Status&0x01&&Status&0x20) Voice(CloseDoor);   
              LLEMode(Toggle120ms,6);

          }
      }    
          
   else if(!(TrigType&0x40) && !Flag1.b.FlagPlsCloseDoor)  /*check sensor,IN LOCK AND MUTE MODE*/ 
    {
       if(VibrateTimes<4)  VibrateTimes++;
       switch(VibrateTimes)
       {
          case(1): LLEMode(Toggle500ms,6);R[2]=72; break;
          case(2): LLEMode(Toggle500ms,10);R[2]=80;break;
          default: LLEMode(Toggle,60); R[2]=180;Status|=0x50;if(!(Status&0x04))AlarmMode=LongAlarm;EngineOff();
         
       }
    }
  }  
 }


 
 
 else if(Status&0x02)    /*Unlock status*/            
 {      
        if(Flag2.b.TestingWrongUnlock)    /* for Check the Unlock Command if is Wrong ? if wrong , then relock the car*/
         { 
           if(Flag3.b.FlagLocked)  {LongTimer[1]=0;return;} /* Locking waiting*/  
           if(LongTimer[1]<2) 
            {
                 if(!(TrigType&0x02) && !Flag2.b.FlagStep2) 
                  Flag2.b.FlagStep1=1;
                  return;
            }
           if(!Flag2.b.TestTimer) 
					  {
						Flag2.b.TestTimer=1;
					  if(Flag2.b.FlagStep1) {GDelay(180);} else {GDelay(100);}
						}  
           else if( Flag2.b.FlagGDelay&&Flag5.b.FlagRecovery)
             {
                if(Flag2.b.FlagStep1 && !(TrigType&0x02)) goto AAA;
                Flag2.b.TestTimer=0;
                if(R[3]&0x04)   ReceiveCode=T_MUTE;
                else            ReceiveCode=T_LOCK;
                return;
             }   /*wrong, recovery Defence mode */ 
           else if ((TrigType&0XF2)!=0XD2) 
            { 
              if(((TrigType&0XF2)==0XD0) && Flag2.b.FlagStep1 ) return;
AAA:              
              
              //Flag2.b.TestingWrongUnlock=0;
              //Flag2.b.TestTimer=0;
              Flag5.b.FlagRecovery=0;
              //Flag2.b.FlagStep1=0;
              //Flag2.b.FlagStep2=0;
              //Flag2.b.FlagStep3=0;
              Flag4.b.OpenDoorAction1=1;
              Flag2.byte&=~(BIT2+BIT3+BIT4+BIT6+BIT7);
            }  
         }
        else  
         { 
          

          if(!(TrigType&0x81)) /* ACC ON and Emergency Key be press down and holding upon 1 second the unit will sound for help */
           {
            if(!Flag5.b.FlagEmergency)  {R[9]=0;Flag5.b.FlagEmergency=1;}
            else if (R[9]==4)  {ReceiveCode=T_MUTE;R[1]=9;R[0]=0;}
           } 
          else {R[9]=0;Flag5.b.FlagEmergency=0;}  
                        

          if(!(TrigType&0x02)&&(Status&0x48) && Flag4.b.OpenDoorAction1 )  /*imform master the car has be opened or be vibrated */
           {
              if(Status&0x20)
				{              
                if(Status&0x08)   {Voice(Notice2);Flag4.b.FlagLED3s=1;}
                else              Voice(Notice1); 
                }
              else
                { 
                if(Status&0x08)    {AlarmMode=Switch;Flag4.b.FlagLED3s=1;}
                else               AlarmMode=Vibrate;
                }
              Status&=~0x48;
              LedClock=0;
           }       
//
//
//
              
               
          if(!(TrigType&0x80)) 
              {
              Status&=~0x48;
              if(!(TrigType&0x02) && !Flag5.b.FlagACC0 && LLMode!=Toggle ) {Flag4.b.OpenDoorAction1=1;}
              if(!Flag3.b.FlagACC) LongTimer[1]=0;Flag3.b.FlagACC=1;Flag2.b.FlagStep1=1;Flag2.b.FlagStep2=0;
              Flag5.b.FlagACC0=1;
             
              }  /* as ACC is on ,if brake is actived after 15 s, the lock will closed automatic */
        
          else
                      {
                       Flag3.b.FlagACC=0; 
                       if(Flag2.b.FlagStep1 && !(TrigType&0x02)) 
											 {
											  //FlagStep1=0; 
												//FlagStep2=1;
												//TestTimer=0;
												Flag2.byte&=~(BIT2+BIT7);
												Flag2.b.FlagStep2=1;
											 }
                      } 
                      
                      
          if(Flag3.b.FlagACC)                
           {               
          if(((TrigType&0x12)==0X02) && (LongTimer[1]>60) && !Flag3.b.FlagLocked )     
             {  
             if(LLMode!=LockOn) 
             LLEMode(LockOn,0);
             Flag4.b.OpenDoorAction1=0;
              }    
           }          
           
          else
          { 
          if(Flag3.b.FlagLocked  || Flag5.b.FlagACC0 ) 
            {
             if(LLMode!=DACCLockOff) 
             {LLMode=DACCLockOff;LightClock=0;}
             Flag5.b.FlagACC0=0;
            }
          }
           
           
           
          if(Flag4.b.OpenDoorAction1 && Flag3.b.FlagLocked) {Flag3.b.FlagLocked=0;LongTimer[1]=0;}
           
          if(TrigType&0X02 && Flag2.b.FlagStep2)  
           {
              if (!Flag2.b.TestTimer) {Flag2.b.TestTimer=1;GDelay(20);}
              else if(Flag2.b.FlagGDelay) 
              {
               if(Status&0x20) Voice(Defence);
               LLEMode(Toggle120ms,6);
               Flag5.b.FlagDuration=1;
               Flag2.b.FlagStep2=0;
               Flag2.b.FlagStep3=1;
               LongTimer[1]=0;
               Flag4.b.OpenDoorAction1=0; 
             }
           } 
          
           if(Flag2.b.FlagStep3)  
            {
               if(LongTimer[1]>240 && !Flag4.b.FlagSet1 )
                 {
                   if(Status&0x20)  Voice(0x19);
                   Status|=0X05;
                   Status&=~UNLOCK;
                   LLEMode(Toggle120ms,2);
                   
                }
               else if (Flag4.b.OpenDoorAction1) 
                 {
								  //FlagStep2=1;
									//FlagStep3=0;
									//TestTimer=0;
									Flag2.b.FlagStep2=1;
									Flag2.byte&=~(BIT4+BIT7);
								 }  
                 
               else if((TrigType&0xF0)!=0XD0) 
                 {
								   //FlagStep3=FlagStep2=0;
									 Flag2.byte&=~(BIT3+BIT4);
									 Flag2.b.FlagStep1=1;
								 } 
             
            }  /* after 1 minutes , if don't set in defence mode, default Mute defence mode*/
					if(TrigType&0X02)   {Flag5.b.FlagIndicate=0;if(LLMode==Toggle ) LLMode=0;}
          
          else
           {
            Flag2.b.TestTimer=0;
            if(Flag4.b.OpenDoorAction1 && !LLMode )                   /* whenever open sidedoor the light will being flash ,till reclose the door*/
             {LLEMode(Toggle,36); Flag4.b.OpenDoorAction1=0; Flag5.b.FlagIndicate=1;}     
           }    

        } 
 }
}  
/*#################################################################*/
void OpenBackDoor(void )
{
    PFDR|=BackDoor;
		RS232Imformation=44;
    R[5]=4;
    Flag1.b.FlagIgnoreBackDoor=1;
}  
/*#################################################################*/

void CheckOpenDoor(void)
 {
 if(TrigType&0x02) Flag4.b.OpenDoorAction0=1;
 if(!(TrigType&0x02) && Flag4.b.OpenDoorAction0) 
 {Flag4.b.OpenDoorAction1=1;Flag4.b.OpenDoorAction0=0;}
 }
/*#################################################################*/

void GDelay(char GDelayTime)
{
 Flag2.b.FlagGDelay=0;
 R[4]=GDelayTime;
}
/*#################################################################*/
void CheckLearn(void)
{
  char i;
  if(PDDR&Learn_Key) 
	  {
		 //FlagLearn=0;
		 //FlagLearn1=0;
		 //FlagLearn2=0;
		 Flag3.byte&=~(BIT4+BIT5+BIT6);
		 Flag3.b.FlagLearnEnable=1;
		 Flag3.b.FlagLearn=0;
		}
  else
   {
    //if(Flag3.b.FlagLearn2 || !LearnEnable) {PFDR&=~LED;return;}
		if(!Flag3.b.FlagLearnEnable) {PFDR&=~LED;return;}
		else
    { 		
     if(!Flag3.b.FlagLearn) 
		 {
		   PFDR|=LED;
			 RS232Imformation=Learn0;
			 TACR2=0;
			 LLEMode(WAIT,15);
		 }
	  }
    Flag3.b.FlagLearn=1;
    if(!ReceiveCode) return;
    else
    { 
		  DI();
      if(!Flag3.b.FlagLearn1) 
        {
           RS232Imformation=Learn1;
           Flag3.b.FlagLearn1=1;
           i=6;
          CodeID1=CodeID0=ReceiveBuff;
        } 
      else 
        {     
             RS232Imformation=Learn2;
             Flag3.b.FlagLearn1=0;
             Flag3.b.FlagLearn2=1;
             i=11;
             Flag3.b.FlagLearnEnable=0;
             CodeID1=ReceiveBuff;
        }  
     }   
     StoreCodeID();
     while(i--) 
      {
        PFDR^=LED;
        delay(10000);
      } 
     delay(10000);
     FlagRX&=~ReceivedCode;
     ReceiveCode=0;
     EI();
   } 
}
/*#################################################################*/
void StoreCodeID(void)
{
     char i;
         
    	*IntPointer=CodeID0;
    	*(IntPointer+1)=CodeID1;
    	RCBPointer=DataBuff;
     	DataBuff[8]=0;
    	i=8;
    	while(i--) 
          {
   	       DataBuff[8]+=*(RCBPointer++);  
  	      }
       RCBPointer=DataBuff; 
       RW24XX(RCBPointer,9,0x10,Write24c01);  /*CheckSum--DataBuff[7];  DataBuff[0-2]--CodeID0;DataBuff[3-5]--CodeID1; */
       RCBPointer=DataBuff; 
       RW24XX(RCBPointer,9,0x20,Write24c01);  /*CheckSum--DataBuff[7];  DataBuff[0-2]--CodeID0;DataBuff[3-5]--CodeID1; */
}
/*#################################################################*/

void StoreStatus(void)
{
  if(Status!=DataBuff[9] && !(TACR2) )
   {  

       DI(); 
       DataBuff[9]=Status;
       RCBPointer=&DataBuff[9]; 
       RW24XX(RCBPointer,1,0x19,Write24c01);  /*CheckSum--DataBuff[7];  DataBuff[0-2]--CodeID0;DataBuff[3-5]--CodeID1; */
       RW24XX(RCBPointer,1,0x29,Write24c01);  /*CheckSum--DataBuff[7];  DataBuff[0-2]--CodeID0;DataBuff[3-5]--CodeID1; */
       EI();
   } 
}   
/*#################################################################*/

void CodeIDMonitor(void)
{
   if(CodeIDMonitor_EN)
   { 
	  DI(); 
   	if((CodeID0-*IntPointer) || (CodeID1-*(IntPointer+1))) 
		while(1);
		CodeIDMonitor_EN=0;
		EI();
   } 
}
/*#################################################################*/

void FireMode(void)
{
  while(Status&0x80)
   {  
      WDGCR=0XFF;
      EI();
      if(!Flag3.b.FlagLearn)
      PFDR=LED;
      PEDR&=~LockClose;
			PFDR&=~LockOpen;
			PDDR=0;
			TACR2=0;
      ClearVoice();
      CodeIDMonitor();
      TimerGenerator();
      TrigCheck();
      CheckLearn();
      StoreStatus();
      if(ReceiveCode==T_UNLOCK) 
         {
          Status&=~0xC8;
          return;
         } 
    }      
}
/*#################################################################*/





⌨️ 快捷键说明

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