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

📄 interrupt.c

📁 基于S3C2410和SM501的彩屏控制器程序
💻 C
字号:
#define __INTERRUPT
#include "interrupt.h"
#undef __INTERRUPT


//********************** Global Variable **********************

LWORD dwTickCount;		// 系统运行滴答计时(间隔1ms)

//*************************************************************



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 函数: 中断分发程序.
// 描述: 根据中断偏移寄存器, 进入中断处理.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void __irq HandlerpISR_IRQ(void)
{
//---------- 相关寄存器 ----------
//
//	INTOFFSET: 中断偏移寄存器
//--------------------------------

	switch (rINTOFFSET)		// 根据中断偏移寄存器判断中断源
   {
  		case IRQ_UART0:	// 串口0中断
 			HandleUart(UART0);
 			break;

 		case IRQ_UART1:	// 串口1中断
			HandleUart(UART1);
  			break;

   		case IRQ_UART2:	// 串口2中断
			HandleUart(UART2);
  			break;

 		case IRQ_TIMER4:	// 定时器4中断
  			HandlerTIMER4();
  			break;

  		default:	break;  	
   	}	
}//HandlerpISR_IRQ



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 函数: 定时器4中断处理.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void  HandlerTIMER4(void)
{
	static short	Cnt1ms;		// 1ms计数

	rSRCPND	|= BIT_TIMER4;		// 清中断源挂起标记
	rINTPND |= BIT_TIMER4;		// 清中断挂起标记

	cStatus |= BT1MS;	// 标记1ms
	dwTickCount++;	// 实时计数累加

	if( Cnt1ms++>10 )
	{
		Cnt1ms = 0;
		cStatus |= BT10MS;	// 标记10ms
	}
}//HandlerTIMER5



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 函数: 检查Timer4.
// 描述: 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void CheckTimer4(void)
{
	cStatus &= ~B10MS;
	if((cStatus&BT10MS)==BT10MS)
	{
		cStatus &= ~BT10MS;
		cStatus |= B10MS;				
	}
}//CheckTimer4()



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 函数: 开总中断.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void enable_interrupts (void)
{
	int tmp;
	__asm 
	{
		MRS tmp, CPSR
		BIC tmp, tmp, #0x80
		MSR CPSR_c, tmp
	}
}//enable_interrupts()



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 函数: 关总中断.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void disable_interrupts (void)
{
	int tmp;
	__asm 
	{
		MRS tmp, CPSR
		ORR tmp, tmp, #0x80
		MSR CPSR_c, tmp
	}
}//disable_interrupts()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -