📄 main.c
字号:
* *
****************************************************************************/
void delay_50us (uchar _50us)
{
RCAP2LH = RCAP2_50us;
T2LH = RCAP2_50us;
ET2 = 0; // Disable timer2 interrupt
T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
while (_50us--)
{
while (!TF2);
TF2 = FALSE;
}
TR2 = FALSE;
}
/****************************************************************************
* *
* Function: delay_1ms *
* *
* Input: _1ms *
* Output: - *
* *
* Description: *
* *
* Time delay with a resolution of 1 ms. *
* *
****************************************************************************/
void delay_1ms (uchar _1ms)
{
RCAP2LH = RCAP2_1ms;
T2LH = RCAP2_1ms;
ET2 = 0; // Disable timer2 interrupt
T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
while (_1ms--)
{
while (!TF2);
TF2 = FALSE;
}
TR2 = FALSE;
}
/****************************************************************************
* *
* Function: delay_10ms *
* *
* Input: _10ms *
* Output: - *
* *
* Description: *
* *
* Time delay with a resolution of 10 ms. *
* *
****************************************************************************/
void delay_10ms (uint _10ms)
{
RCAP2LH = RCAP2_10ms;
T2LH = RCAP2_10ms;
ET2 = 0; // Disable timer2 interrupt
T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
while (_10ms--)
{
while (!TF2)
{
if (CmdValid || CmdReceived)
{
TR2 = FALSE;
TF2 = FALSE;
return;
}
}
TF2 = FALSE;
}
TR2 = FALSE;
}
#ifdef NOP_DELAY
/****************************************************************************
* *
* Function: delay_50us_NOP *
* *
* Input: - *
* Output: - *
* *
* Description: *
* *
* Zeitverz攇erung von 50 鎠. *
* *
****************************************************************************/
void delay_50us_NOP (void)
{
uchar i;
for(i=0; i<81; i++) _nop_();
}
#endif
/****************************************************************************
* *
* Function: delay_8us_NOP *
* *
* Input: - *
* Output: - *
* *
* Description: *
* *
* *
****************************************************************************/
void delay_8us_NOP (void)
{
uchar i;
for(i=0; i<14; i++) _nop_();
}
#pragma aregs
/****************************************************************************
* *
* Function: xtoa_h *
* *
* Input: _byte *
* Output: ASCII High-Nibble *
* *
* Description: *
* *
* Wandelt das High-Nibble des 乥ergebenen Bytes in ein ASCII-Zeichen um. *
* *
****************************************************************************/
uchar xtoa_h (uchar _byte)
{
uchar nibble = _byte >> 4;
return ((nibble > 9)? nibble + 'A' - 10 : nibble + '0');
}
/****************************************************************************
* *
* Function: xtoa_l *
* *
* Input: _byte *
* Output: ASCII Low-Nibble *
* *
* Description: *
* *
* Wandelt das Low-Nibble des 乥ergebenen Bytes in ein ASCII-Zeichen um. *
* *
****************************************************************************/
uchar xtoa_l (uchar _byte)
{
uchar nibble = _byte & 0x0F;
return ((nibble > 9)? nibble + 'A' - 10 : nibble + '0');
}
/****************************************************************************
* *
* Function: isr_timer0 *
* *
* Input: - *
* Output: - *
* *
* Description: *
* *
* *
****************************************************************************/
void isr_timer0 (void) interrupt 1 using 3
{
if (Timer0Cnt)
{
--Timer0Cnt;
}
else
{
STOP_T0();
#ifdef AUTODELAY
if (DelayRate < MAXDELAYRATE && CmdCnt > 0)
{
DelayRate++;
DelayRateLocked = FALSE;
}
#endif
RecvState = RECV_STX;
if (!SendReady && LLfReady)
{
if (RepCnt < MAXREPCNT)
{
RepCnt++;
CALL_isr_UART();
}
else
{
RepCnt = 0;
Quit = FALSE;
SendReady = TRUE;
}
}
}
}
/***************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -