/*
大家好,现在有一个问题想弄明白:如果在中断函数中调用带有参数和和返回值的函数应该如何处理:
我是这样处理的:
*/
unsigned char Adr,Chan ADC_RES;//全局变量
//==============================================
unsigned char ADCFun(Chan) //ad采集函数
{
static unsigned char ClkNum;
for(ClkNum=0x05;ClkNum!=0x00;--ClkNum)
{
Clk_port=0;
if(Chan&0x80)
Data_port=1;
else
Data_port=0;
Clk_port=1;
Chan=Chan<<1;
}
......
return(ADC_RES);
}
//==============================================
void interrupt TMR0Server(void)//中断函数
{
static unsigned int Adc0=0x0000;
static unsigned int Adc1=0x0000;
......
static unsigned int Adc7=0x0000;
TMR0IF=0;
......
switch(Adr)
{
case 0x00:
Adc0+=ADCFun(0x88); //调用ad采集函数
break;
case 0x01:
Adc1+=ADCFun(0x98);
break;
......
case 0x07:
Adc7+=ADCFun(0xc8);
break;
}
if(++Adr>=0x08)
Adr=0x00;
......
}
/*以上只是举个例子,相似程序编译通过并且可以使用,但感觉上好像并不科学,请问大家有没有其他方法可以实现*/ |