本帖最后由 魔兽电子 于 2014-8-8 23:04 编辑
程序是以前别人写好的程序,当时只用了串口2的中断服务程序,现在想加串口1的中断服务作为485总线地址判断。突然发现以前串口2的中断服务号竟然是interrupt 4,
这个不是串口1的服务号么? 串口2连的GM8125串口拓展芯片的母口原串口2服务程序如下:
void CommReceive(void) interrupt 4
{
IE2 = 0x00;
if((S2CON & S2RI)==1)
{
switch(P2&0x38)
{
case 0:
{
ReceiveBuff0=S2BUF; //读命令字存入 ReceiveBuff0
LED_DATA1=~LED_DATA1;
break;
}
case 0x08:
{
LED_DATA2=~LED_DATA2;
// Uart_SendByte(P2);
Uart1RecvData[Uart1RecvCount++]=S2BUF; //子通道 1 接收的数据存入
Uart1RecvOver=0;
bUart1RecvEn=1;
bUart1RecvFlag=1;
break;
}
case 0x10:
{
LED_DATA3=~LED_DATA3;
Uart2RecvData[Uart2RecvCount++]=S2BUF; //子通道 1 接收的数据存入
Uart2RecvOver=0;
bUart2RecvEn=1;
bUart2RecvFlag=1;
break;
}
case 0x18:
{
Uart3RecvData[Uart3RecvCount++]=S2BUF; //子通道 1 接收的数据存入
Uart3RecvOver=0;
bUart3RecvEn=1;
bUart3RecvFlag=1;
break;
}
case 0x20:
{
Uart4RecvData[Uart4RecvCount++]=S2BUF; //子通道 1 接收的数据存入
Uart4RecvOver=0;
bUart4RecvEn=1;
bUart4RecvFlag=1;
break;
}
case 0x28:
{
Uart5RecvData[Uart5RecvCount++]=S2BUF; //子通道 1 接收的数据存入
Uart5RecvOver=0;
bUart5RecvEn=1;
bUart5RecvFlag=1;
break;
}
default:
break;
}
S2CON &=0xFE;
}
IE2 = 0x01;
}
之前串口2的收发都正常,只是我现在要加串口1了,发现中断号给串口2占了,没法加。
有试过把串口2的中断号改为 interrupt 8,然后他的收发就各种不正常了。
调了快一个星期了,走过路过帮忙看看啊 |