📄 outputctrl.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 + -