单独使用定时器0 或者串口中断都没事,放在一起编译就出错了
Error [1375] F:\zzjh-code\main.c; 73. multiple interrupt functions (_ISR_int and _tmr0_int) defined for device with only one interrupt vector
请问哪里还要设置?有高手2个中断一起用的吗?可否贴一个自己成功的代码给我学习下呢?谢谢。
/*==================================================
void tmr0int(void) //定时器0初始化.
{
T0CS=0; //TMR0工作在定时方式.
PSA=0; //将分频器分配给TMR0(为1则分配给看门狗).
PS2=1;PS1=1;PS0=1; //设置分频比1:256.11.0592M晶振,1ms中断一次.
T0IF=0; //清除TMR0的中断标志.
T0IE=1; //TMR0中断允许.
TMR0=0xF5; //初始约为1ms溢出
}
void interrupt tmr0_int(void) //11.0592M晶振,1ms中断一次.
{
if(T0IF==1) //检查是否是TMR0中断.T0IF==1
{
T0IF=0; //清除TMR0中断溢出标
TMR0=0xF5;
// key_time++;
// time_500ms++;
// scan_key=1;
}
}
==========================================================*/
void main()
{ uchar i;
init();
tmr0int();
while(1)
{ if (FLAG)
{ for (i=0;i<6;i++) //先发送“OK !!!”
{ SEND_ONE(DD1[i]);
}
SEND_ONE(0x0D); //发送一个回车
for (i=0;i<N;i++)
{ SEND_ONE(DD[i]);
}
FLAG=N=0; //重新清0,为下次接收做准备
}
};
}
void init()
{
TRISC=0xff; //这里要把高二位设置这输入,但在以下的串口使能后,系统自动将RC6变成通信输出
TXSTA=0x24;
RCSTA=0x90;
SPBRG=25; //9600波特率
GIE=1;
PEIE=1;
RCIE=1; //打开中断
}
void interrupt ISR(void)
{
if(RCIE && RCIF) //不必清RCIF,因为接收数据后RCIF自动清0
{ DD[N]=RCREG;
if (DD[N]==0x0D)
FLAG=1; //如果收到回车,标志位置1
N++;
if (N>=20)
N=0; //如果接收数据数超出,从0存放
}
}
|