?? main.c
字號:
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 + -