📄 isr_user.c
字号:
#include "INCLUDE_TOP.h"
#include "C_HAL/UART.h"
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
UINT8 INT_EXT0 = 0;
void EXT0_ISR(void) interrupt 0
{
INT_EXT0 = 1;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
UINT8 INT_EXT1 = 0;
void EXT1_ISR(void) interrupt 2
{
INT_EXT1 = 1;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
UINT16 UserTimer16;
UINT8 Timer1_Reload_TH1;
UINT8 Timer1_Reload_TL1;
void TIMER1_ISR(void) interrupt 3
{
TH1 = Timer1_Reload_TH1;
TL1 = Timer1_Reload_TL1;
if(UserTimer16) UserTimer16--;
}
void ZSYS_UserTimer16_SET(UINT16 TickCount)
{
UINT8 _ET1;
_ET1 = ET1;
ET1 = 0;
UserTimer16 = TickCount;
ET1 = _ET1;
}
UINT16 ZSYS_UserTimer16_GET()
{
UINT16 TickCount;
UINT8 _ET1;
_ET1 = ET1;
ET1 = 0;
TickCount = UserTimer16;
ET1 = _ET1;
return TickCount;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
UINT8 Timer2_Reload_TH2;
UINT8 Timer2_Reload_TL2;
void TIMER2_ISR(void) interrupt 9
{
EXIF &= 0xDF;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
void UART0_ISR (void) interrupt 4
{
UINT8 INT_ID;
UINT8 PendLen;
UINT8 i;
UINT8 NextNum;
INT_ID = (xU0_IIR >> 1) & 0x07;
if(INT_ID == 0x02) // Received Data Available
{
for(i=0 ; i<8 ; i++)
{
NextNum = (r0_in+1) & (UART0_RXBUF_SIZE-1);
if(NextNum != r0_out)
{
r0buf[r0_in] = xU0_RBR;
r0_in = NextNum;
}
else PendLen = xU0_RBR;
}
}
else if(INT_ID == 0x06) // Character Timeout
{
// Timeout Interrupt
NextNum = (r0_in+1) & (UART0_RXBUF_SIZE-1);
if(NextNum != r0_out)
{
r0buf[r0_in] = xU0_RBR;
r0_in = NextNum;
}
else PendLen = xU0_RBR;
}
else if(INT_ID == 0x01) // Tx Holding Empty
{
t0_fifo_empty = 1;
if(t0_in != t0_out)
{
xU0_THR = t0buf[t0_out];
t0_out++;
t0_out &= (UART0_TXBUF_SIZE-1);
t0_fifo_empty = 0;
}
}
else if(INT_ID == 0x03) // Receiver Line Status
{
NextNum = xU0_LSR;
}
else if(INT_ID == 0x00) // Modem Status
{
}
else // Unknown ???
{
}
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
void UART1_ISR (void) interrupt 7
{
UINT8 INT_ID;
UINT8 PendLen;
UINT8 i;
UINT8 NextNum;
INT_ID = (xU1_IIR >> 1) & 0x07;
if(INT_ID == 0x02) // Received Data Available
{
for(i=0 ; i<8 ; i++)
{
NextNum = (r1_in+1) & (UART1_RXBUF_SIZE-1);
if(NextNum != r1_out)
{
r1buf[r1_in] = xU1_RBR;
r1_in = NextNum;
}
else PendLen = xU1_RBR;
}
}
else if(INT_ID == 0x06) // Character Timeout
{
// Timeout Interrupt
NextNum = (r1_in+1) & (UART1_RXBUF_SIZE-1);
if(NextNum != r1_out)
{
r1buf[r1_in] = xU1_RBR;
r1_in = NextNum;
}
else PendLen = xU1_RBR;
}
else if(INT_ID == 0x01) // Tx Holding Empty
{
t1_fifo_empty = 1;
if(t1_in != t1_out)
{
xU1_THR = t1buf[t1_out];
t1_out++;
t1_out &= (UART1_TXBUF_SIZE-1);
t1_fifo_empty = 0;
}
}
else if(INT_ID == 0x03) // Receiver Line Status
{
NextNum = xU1_LSR;
}
else if(INT_ID == 0x00) // Modem Status
{
}
else // Unknown ???
{
}
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
UINT8 INT_AES = 0;
void AES_ISR(void) interrupt 10
{
EXIF &= 0xBF;
INT_AES = 1;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
UINT8 INT_RTC = 0;
void RTC_ISR(void) interrupt 12
{
xPDM |= 0x02; // Prevent Continuos Interrupt
RTCIF = 0;
INT_RTC = 1;
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
UINT8 INT_SPI = 0;
UINT8 SPI_RD_DATA;
void SPI_ISR(void) interrupt 13
{
SPI_RD_DATA = xSPDR;
INT_SPI = 1;
xSPSR &= 0x7F; // Int Clear, bit[7]=0
if(xSPSR & 0x40)
{
xSPSR &= 0xBF; // Write-Collision Clear, bit[6]=0
}
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
void VOICE_ISR(void) interrupt 14
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -