串口数据存入数组,做数据处理后再发送的问题

2019-03-24 13:54发布

先上代码
#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RX_ISR(void)
{
uint i; uint j=0;

data[ j++]=U1RXBUF;
  
//delay_ms(1000);
  data[5]=0x1a;  
  data[6]=' ';
  for(i=0;i<7;i++)
{  
   while(!(IFG1&UTXIFG0));
  U0TXBUF=data;
  

IFG2=0;
}                              
}

这是中断处理部分,我想把串口1收到的值存入数组,然后加上个后面两个字节,之后再从串口0发送出去,data[]是全局变量,别的地方没有任何引用
然后我用串口助手发十六进制的1234567890,收到的却是十六进制的12 00 00 00 00 1a 0a,说明存入数组的只有第一个字节,
为什么会这样呢,请各位指点迷津,先谢谢各位了。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
sint27
1楼-- · 2019-03-25 12:42
打扰了,我按照你说的方法,把j变成全局变量,但是还是有错误
串口发的是十六进制的1234567890
收到的:(发第一次)12 00 00 00 00 1A 0A 12 90 00 00 00 1A 0A
                (发第二次) 12 90 12 00 00 1A 0A 12 90 12 90 00 1A 0A
                (发第三次) 12 90 12 90 12 1A 0A 12 90 12 90 12 1A 0A
之后再发就跟第三次一样了,虽然数组后面的几个字节是有收到数据了,但是对应的不对,
而且只按了一次发送之后会受到2组数据。帮帮忙了,谢谢
Li_Lei
2楼-- · 2019-03-25 16:52
你得把这个拿到服务程序外边,while(!(IFG1&UTXIFG0));这个循环等待影响了接收

一周热门 更多>

相关问题

    相关文章