STC10F 串口通信 中断接收数组 出错拉

[复制链接]
3268|7
 楼主| lk0623 发表于 2010-12-12 20:32 | 显示全部楼层 |阅读模式
发送函数和接收中断
void send_UART(unsigned char i)

{
ES=0;
TI=0;
SBUF=i;
while(TI==0);
TI=0;
ES=1;
}

void UART_one_Interrupt_Receive(void) interrupt 4
{
    if(RI==1)
    {
      for(i=0;i<3;i++)
   {   
    RXDBUFF1[i] = SBUF;
    send_UART(RXDBUFF1[i]);         
   }
    RI  =   0;
    flag=1;      
    }
    else
    {
        TI  =  0;
    }
}

不知道那里错了, 发送01 02 03 返回为00 00 00
NE5532 发表于 2010-12-12 21:04 | 显示全部楼层
在发送那里给RXDBUFF1[i]赋固定值看看出来的结果对不对。
 楼主| lk0623 发表于 2010-12-12 21:07 | 显示全部楼层
尝试过程序中定义RXDBUFF1[i]为固定值, 发送没有问题
NE5532 发表于 2010-12-12 21:24 | 显示全部楼层
首先得研究下你的这个单片机串口是全双工的不?SBUF边发边收行么?另外接收缓冲是双缓冲么?接收缓冲在什么时候声明可以清空的?会不会在发送查询标志位期间,接收的下一个字节已经发生溢出了?
 楼主| lk0623 发表于 2010-12-12 22:16 | 显示全部楼层
型号是STC10F04XE,它是全双工异步通信,支持SBUF边发边收, 之前我不用数组,单字符可以接收发送,
shell.albert 发表于 2010-12-13 13:07 | 显示全部楼层
中断时间占用太长了吧。
coody 发表于 2010-12-13 13:23 | 显示全部楼层
程序结构不好,你可以用队列做缓冲,中断收发,同时双工。。。。
topfei123 发表于 2010-12-13 13:56 | 显示全部楼层
对中断理解不够,一次中断只接收一个数据,你却收发了3次
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

109

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部