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

📄 irq.c

📁 一个机器人控制的源代码
💻 C
字号:
//========================================================================
//	文件名称:	IRQ.c
//	功能描述:	IRQ中断服务程序
//	维护记录:	2006-07-11	V1.0
//========================================================================
#include "SPCE061A.h"
#include "ultrasonic_App.h"

unsigned int uiTim;						//4096Hz计数器

//void FIQ(void)__attribute__((ISR));
//void FIQ(void)
//{
//	if((*P_INT_Ctrl & 0x8000) != 0)
//	{									//	Fosc/1024 FIQ Interrupt
//		*P_INT_Clear = 0x8000;
//	}
//	else if((*P_INT_Ctrl & 0x2000) != 0)
//	{									//	TimerA FIQ Interrupt
//		*P_INT_Clear = 0x2000;
//	}
//	else if((*P_INT_Ctrl & 0x0800) != 0)
//	{									//	TimerB FIQ Interrupt
//		*P_INT_Clear = 0x0800;
//	}
//	else
//	{									//	Never be here
//		*P_INT_Clear = 0xffff;
//	}
//}

void IRQ0(void)__attribute__((ISR));	//	Fosc/1024 IRQ Interrupt
void IRQ0(void)
{
	*P_INT_Clear = 0x4000;
}

void IRQ1(void)__attribute__((ISR));	//	TimerA IRQ Interrupt
void IRQ1(void)
{
	*P_INT_Clear = 0x2000;
}

void IRQ2(void)__attribute__((ISR));	//	TimerB IRQ Interrupt
void IRQ2(void)
{
	*P_INT_Clear = 0x0800;
}

void IRQ3(void)__attribute__((ISR));
void IRQ3(void)
{
	if((*P_INT_Ctrl & 0x0200) != 0)
	{									//	EXT2 Interrupt
		*P_INT_Clear = 0x0200;
	}
	else if((*P_INT_Ctrl & 0x0100) != 0)
	{									//	EXT1 Interrupt
		*P_INT_Clear = 0x0100;
		EXT1_IRQ_ult();					//调用超声波测距的外部中断服务程序
	}
	else if((*P_INT_Ctrl & 0x0080) != 0)
	{									//	Key Interrupt
		*P_INT_Clear = 0x0080;
	}
	else
	{									//	Never be here
		*P_INT_Clear = 0xffff;
	}
}
extern void IRQ_PlayService();
void IRQ4(void)__attribute__((ISR));
void IRQ4(void)
{
	if((*P_INT_Ctrl & 0x0040) != 0)
	{									//	4096Hz Interrupt
		uiTim++;
		IRQ_PlayService();
		*P_INT_Clear = 0x0040;
	}
	else if((*P_INT_Ctrl & 0x0020) != 0)
	{									//	2048Hz Interrupt
		*P_INT_Clear = 0x0020;
	}
	else if((*P_INT_Ctrl & 0x0010) != 0)
	{									//	1024Hz Interrupt
		*P_INT_Clear = 0x0010;
	}
	else
	{									//	Never be here
		*P_INT_Clear = 0xffff;
	}
}
void IRQ5(void)__attribute__((ISR));
void IRQ5(void)
{
	if((*P_INT_Ctrl & 0x0008) != 0)
	{									//	4Hz Interrupt
		*P_INT_Clear = 0x0008;
	}
	else if((*P_INT_Ctrl & 0x0004) != 0)
	{									//	2Hz Interrupt
		*P_INT_Clear = 0x0004;
		*P_Watchdog_Clear = 0x0001;
	}
	else
	{									//	Never be here
		*P_INT_Clear = 0xffff;
	}
}

void IRQ6(void)__attribute__((ISR));
void IRQ6(void)
{
	if((*P_INT_Ctrl & 0x0002) != 0)
	{									//	TMB1 Interrupt
		*P_INT_Clear = 0x0002;
	}
	else if((*P_INT_Ctrl & 0x0001) != 0)
	{									//	TMB2 Interrupt
		*P_INT_Clear = 0x0001;
	}
	else
	{									//	Never be here
		*P_INT_Clear = 0xffff;
	}
}

void IRQ7(void)__attribute__((ISR));
void IRQ7()
{
	
}

void BREAK(void)__attribute__((ISR));
void BREAK(void)
{
	
}

⌨️ 快捷键说明

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