isr.c

来自「2005年全国大学生电子设计竞赛论文集」· C语言 代码 · 共 84 行

C
84
字号
//*******************************************************************//
//Interrupt Service Routine For C language
//*******************************************************************//
#include	"SPCE061V004.H"
extern float ADconver(void);
unsigned long int max;
extern unsigned data[500],maxdata[16];
unsigned int ii=0,jj=0,qq=0,isrflag=0,i,j;
void BREAK(void) __attribute__ ((ISR));
void BREAK(void)
{
}
void FIQ(void) __attribute__ ((ISR));
void FIQ(void)
{
}
void IRQ0(void) __attribute__ ((ISR));
void IRQ0(void)
{
}
void IRQ1(void) __attribute__ ((ISR));
void IRQ1(void)
{
}
void IRQ2(void) __attribute__ ((ISR));
void IRQ2(void)
{
}
void IRQ3(void) __attribute__ ((ISR));
void IRQ3(void)
{
}
void IRQ4(void) __attribute__ ((ISR));
void IRQ4(void)
{
	if(*P_INT_Ctrl&C_IRQ4_1KHz)
	{
   	 data[ii]=ADconver();
   	 ii++;
   	 if(ii==500)
   	 {
   	   maxdata[jj]=data[0];
       for(i=1;i<500;i++)
       {
       if(data[i]>max)
       maxdata[jj]=data[i];
       } 
   	   ii=0;jj++;
   	 }
   	 if(jj==16)
   	 {
   	     isrflag=1;jj=0;
   	     for(qq=0;qq<16;qq++)
   	     {
   	      max+=maxdata[qq];
   	      *P_Watchdog_Clear=1;
   	     }
   	      max>>=4;
   	 } 
	 *P_INT_Clear=C_IRQ4_1KHz;
	}
    if(*P_INT_Ctrl&C_IRQ4_2KHz)
	{
		*P_INT_Clear=C_IRQ4_2KHz;
	}
	if(*P_INT_Ctrl&C_IRQ4_4KHz)
	{
		*P_INT_Clear=C_IRQ4_4KHz;
	}
}
void IRQ5(void) __attribute__ ((ISR));
void IRQ5(void)
{
}
void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
}
void IRQ7(void) __attribute__ ((ISR));
void IRQ7(void)
{
}

⌨️ 快捷键说明

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