irq.c

来自「著名的嵌入式操作系统Nucleus的源代码」· C语言 代码 · 共 34 行

C
34
字号
#include "nucleus.h"
#include "io.h"
extern VOID TCC_Dispatch_LISR( INT vector );
unsigned int inttimes=0;

void irq_entry( void )
{
	unsigned long vect;
	unsigned long a,mask;
	unsigned char n=0;
	vect=(unsigned long) *(volatile unsigned long*)(INTPND);
	 
	vect&=0x1ff7ff;
	mask=0x100000;
	if(vect!=0)
	{
		do{
			a=mask>>n;
			a=vect&a;
			if(a){
				*(volatile unsigned long*)(INTPND)|=vect; //clear Pending
				vect=20-n;
				break;
				}
			else 
			{
				n++;
			}	
		}while(1);
		 
		TCC_Dispatch_LISR(vect);
		//inttimes++;
	}
}

⌨️ 快捷键说明

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