📄 main.c
字号:
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 + -