9082|8

1800

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

串口数据存入数组,做数据处理后再发送的问题 [复制链接]

先上代码
#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]='\n';
  for(i=0;i<7;i++)
{  
   while(!(IFG1&UTXIFG0));
  U0TXBUF=data;
  

IFG2=0;
}                              
}

这是中断处理部分,我想把串口1收到的值存入数组,然后加上个后面两个字节,之后再从串口0发送出去,data[]是全局变量,别的地方没有任何引用
然后我用串口助手发十六进制的1234567890,收到的却是十六进制的12 00 00 00 00 1a 0a,说明存入数组的只有第一个字节,
为什么会这样呢,请各位指点迷津,先谢谢各位了。

最新回复

你得把这个拿到服务程序外边,while(!(IFG1&UTXIFG0));这个循环等待影响了接收  详情 回复 发表于 2012-7-25 15:25
 
点赞 关注

回复
举报

1800

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
顶一下,打错了,其中有一句是U0TXBUF=data,坐等高手现身

点评

是U0TXBUF=data[ i ];才对,竟然连续打错2次。。。  详情 回复 发表于 2012-7-24 14:16
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

回复 沙发 sint27 的帖子

是U0TXBUF=data[ i ];才对,竟然连续打错2次。。。
 
 
 

回复

2856

帖子

260

TA的资源

五彩晶圆(高级)

4
 
uint j=0;  是局部变量。每次进中断自然而然的将j清零。
你把uint j=0放函数外边

点评

感谢你的回答,我是初学者,所以才会犯这种低级错误, 那这么说的话是每发送一个字节进入一次中断,而不是每发送一次数据进入一次?  详情 回复 发表于 2012-7-25 12:01
 
 
 

回复

36

帖子

0

TA的资源

一粒金砂(中级)

5
 
顶楼上。
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

6
 
也可以设置为 静态局部变量 static   就像楼上说的  只接受一个字符 就产生中断 经一次中断 i  j 就清零了

点评

打扰了,我按照你说的方法,把j变成全局变量,但是还是有错误 串口发的是十六进制的1234567890 收到的:(发第一次)12 00 00 00 00 1A 0A 12 90 00 00 00 1A 0A (发第二次) 12 90 12 00 00 1  详情 回复 发表于 2012-7-25 13:50
 
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

7
 

回复 4楼 ltbytyn 的帖子

感谢你的回答,我是初学者,所以才会犯这种低级错误,
那这么说的话是每发送一个字节进入一次中断,而不是每发送一次数据进入一次?
 
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

8
 

回复 6楼 shaung909092 的帖子

打扰了,我按照你说的方法,把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组数据。帮帮忙了,谢谢
 
 
 

回复

4008

帖子

0

TA的资源

版主

9
 
你得把这个拿到服务程序外边,while(!(IFG1&UTXIFG0));这个循环等待影响了接收
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表