📄 port.c
字号:
//-----------------------------------------------------------------------------
// port.c
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
#include "cpu/cpu.h"
#include "main/main.h"
#include "misc/general.h"
#include "config/config.h"
//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
void Delay ( long t );
void Relay_On ( void );
void Relay_Off ( void );
void Speaker_Beep ( void );
void Check_Sensor_Fault ( void );
bit Check_Sensor_Level ( void );
//-----------------------------------------------------------------------------
// Delay Routine
//-----------------------------------------------------------------------------
void Delay( long t )
{
while ( t-- ) if (( t & 0x0ff ) == 0x00 ) Clear_Dog;
}
//-----------------------------------------------------------------------------
// Relay On Routine
//-----------------------------------------------------------------------------
void Relay_On (void)
{
Relay_CTRL = 1;
_nop_ (); _nop_ ();
Relay_CLK = 1;
_nop_ (); _nop_ ();
Relay_CLK = 0;
_nop_ (); _nop_ ();
Relay_CLK = 1;
}
//-----------------------------------------------------------------------------
// Relay Off Routine
//-----------------------------------------------------------------------------
void Relay_Off (void)
{
Relay_CTRL = 0;
_nop_ (); _nop_ ();
Relay_CLK = 1;
_nop_ (); _nop_ ();
Relay_CLK = 0;
_nop_ (); _nop_ ();
Relay_CLK = 1;
}
//-----------------------------------------------------------------------------
// Speaker Shout Routine
//-----------------------------------------------------------------------------
void Speaker_Beep (void)
{
Speaker_OUT = SHOUT;
Delay ( BUZZER_TIME );
Speaker_OUT = QUIET;
}
//-----------------------------------------------------------------------------
// Check Sensor Status Routine
//-----------------------------------------------------------------------------
void Check_Sensor_Fault (void)
{
char i;
#ifdef FEE_TIME
#define Sensor_Fault V380
#endif
if ( Sensor_Fault )
{
for ( i = nSENSOR_CHECK; i > 0; i-- )
{
Delay ( SENSOR_CHECK_DELAY );
if ( !Sensor_Fault ) break;
}
}
if ( Sensor_Fault )
{
bWire = ERROR;
f.tFee = TFAULT_DEALY;
Speaker_OUT = SHOUT;
#if SENSOR_FAULT_SEQU
Delay ( FAULT_BEEP_TIME );
Speaker_OUT = QUIET;
#endif
}
else
{
bWire = OK;
Speaker_OUT = QUIET;
}
}
//-----------------------------------------------------------------------------
// Check Sensor Level Routine
//-----------------------------------------------------------------------------
#ifdef FEE_PULSE
bit Check_Sensor_Level (void)
{
if ( Sensor_Level == HIGH )
{
Delay ( TLEVEL );
if ( Sensor_Level == HIGH ) return HIGH;
}
else
{
Delay ( TLEVEL );
if ( Sensor_Level == LOW ) return LOW;
}
}
#endif
//-----------------------------------------------------------------------------
// Check Door Open Warning Routine
//-----------------------------------------------------------------------------
#if DOOR_CHECK
void Check_Door ( void )
{
if ( Door_Switch == ON )
{
bDoor = OPEN;
Speaker_OUT = SHOUT;
return;
}
Door_Check = ON;
Delay( 1 );
if ( Door_Switch == ON )
{
if ( bCheck == ON && ( bDoor == OPEN || ( bDoor == CLOSE && ++f.tCheck == TCHECK )))
{
bCheck = OFF;
f.tCheck = CLEAR;
}
bDoor = CLOSE;
Speaker_OUT = QUIET;
}
else
{
bDoor = OPEN;
if ( bCheck != ON ) Speaker_OUT = SHOUT;
}
Door_Check = OFF;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -