打印
[STC单片机]

跪求看看stc12c5a60s2 串口2使用interrupt 4可进入中断

[复制链接]
2894|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
魔兽电子|  楼主 | 2014-8-8 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 魔兽电子 于 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,然后他的收发就各种不正常了。
调了快一个星期了,走过路过帮忙看看啊

相关帖子

沙发
justsuperone| | 2014-8-9 10:03 | 只看该作者
串口1的服务号是4  串口2的服务号是8

使用特权

评论回复
板凳
hwcqcc| | 2014-8-22 17:40 | 只看该作者
你确定别人给的源代码没有做过手脚?

使用特权

评论回复
地板
lee9888| | 2014-10-23 18:01 | 只看该作者
好象要改用S2RB8那个位才可以中断

使用特权

评论回复
5
coody| | 2014-10-24 08:07 | 只看该作者
你确定能正常?你把原文件编译下载运行看看是否正常。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝