⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isr_user.c

📁 ZIGBEE 2006协议栈 BAT测试代码 RADIO PULSE MG2455
💻 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 + -