3809|11

118

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

新手急,单片机串口通讯问题 [复制链接]

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑

问题在单片机版发帖了,因为很着急,故在这里再发一贴。版主见谅啊 MCU:MSP430F169 通讯方式:串口异步通讯 响应方式:中断 用串口调试工具发送ascii码字符 /********中断部分代码:*********/ #pragma vector=UART0RX_VECTOR __interrupt void usart0_rx (void) { while (!(IFG1 & UTXIFG0)); controldata=RXBUF0; TI=1; Flag_Communication=1; } /********主函数对中断的响应:*******/ if(Flag_Communication) { while(tr) { switch(controldata) { case 'a' : TXBUF0='r' ; break; //反馈一个r case 'b' : Receive_Data();break; } } } /***********Receive_Data()子函数*************/ void Receive_Data() {char i; unsigned char d[2]; unsigned char tempd[2]; while(TI==0); TI=0; for(i=0;i<2;i++) { tempd=RXBUF0; d=tempd-48; } } 问题: 上位机发送a,反馈r。 发送b12,数组d[0]=1,d[1]也=1.这是为什么?第二个数据“2”为什么接收不到? 应用目的:本来想发送20个数据给下位机的,现在连2个都不能实现 [ 本帖最后由 linjingui 于 2009-8-27 11:38 编辑 ]

 

此帖出自电子竞赛论坛

最新回复

方法已经告知,请修改下。 如何上传程序代码:https://bbs.eeworld.com.cn/thread-84011-1-1.html  详情 回复 发表于 2009-8-28 08:53
点赞 关注
 
 

回复
举报

13

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
本帖最后由 paulhyde 于 2014-9-15 09:07 编辑

学习!!

 

此帖出自电子竞赛论坛
 
 
 

回复

118

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
本帖最后由 paulhyde 于 2014-9-15 09:07 编辑

for(i=0;i<2;i++) { tempd=RXBUF0; d=tempd-48; } 修改原帖,怎么保存不了啊 再跟帖吧。如上

 

此帖出自电子竞赛论坛
 
 
 

回复

118

帖子

0

TA的资源

五彩晶圆(中级)

4
 
本帖最后由 paulhyde 于 2014-9-15 09:07 编辑

什么破论坛啊,为什么数组的中括号没法显示

 

此帖出自电子竞赛论坛
 
 
 

回复

34

帖子

0

TA的资源

纯净的硅(初级)

5
 

回复 4楼 linjingui 的帖子

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑

不会吧,试试 [a,b]

 

此帖出自电子竞赛论坛
 
 
 

回复

118

帖子

0

TA的资源

五彩晶圆(中级)

6
 
原帖由 阿cat 于 2009-8-27 11:48 发表
不会吧,试试 [a,b]


试什么都不行啊
此帖出自电子竞赛论坛
 
 
 

回复

285

帖子

3723

TA的资源

五彩晶圆(中级)

7
 

回复 6楼 linjingui 的帖子

你的第一个贴不是已经显示出来了么?你要显示什么啊?
此帖出自电子竞赛论坛
 
 
 

回复

277

帖子

0

TA的资源

五彩晶圆(中级)

8
 
接收程序似乎不对,这样改一下试试,好久不用51了,有些标志位什么都忘了,你再看一下你其它部分的程序。[code]void Receive_Data()
{char i;
unsigned char d[2];
unsigned char tempd[2];
for(i=0;i<2;i++)
{
while(TI==0);
TI=0;
tempd[2]=RXBUF0;
d[2]=tempd[2]-48;
}
}
[/code]

[[i] 本帖最后由 thtlj 于 2009-8-27 14:41 编辑 [/i]]
此帖出自电子竞赛论坛

赞赏

1

查看全部赞赏

 
 
 

回复

118

帖子

0

TA的资源

五彩晶圆(中级)

9
 
原帖由 thtlj 于 2009-8-27 14:22 发表
接收程序似乎不对,这样改一下试试,好久不用51了,有些标志位什么都忘了,你再看一下你其它部分的程序。void Receive_Data()
{char i;
unsigned char d[2];
unsigned char tempd[2];
for(i=0;i


这么改,我的for循环有什么用?
此帖出自电子竞赛论坛
 
 
 

回复

23

帖子

0

TA的资源

纯净的硅(中级)

10
 
接收部分怎么会是
while(TI==0);
    TI=0;
不是while(RI==0);
RI=0;
吗?顺便问一下for循环里的d=tempd-48;什么意思啊
此帖出自电子竞赛论坛
 
 
 

回复

118

帖子

0

TA的资源

五彩晶圆(中级)

11
 
原帖由 sheng49 于 2009-8-28 01:42 发表
接收部分怎么会是
while(TI==0);
    TI=0;
不是while(RI==0);
RI=0;
吗?顺便问一下for循环里的d=tempd-48;什么意思啊


这就是我抱怨论坛的原因
我的程序里,d和tempd后面都是有中括号的。
上位机发送的是ascii码,下位机要转化成0~9的数字。故要减去48。
此帖出自电子竞赛论坛
 
 
 

回复

184

帖子

130

TA的资源

管理员

12
 
原帖由 linjingui 于 2009-8-28 08:49 发表


这就是我抱怨论坛的原因
我的程序里,d和tempd后面都是有中括号的。
上位机发送的是ascii码,下位机要转化成0~9的数字。故要减去48。


方法已经告知,请修改下。

如何上传程序代码:https://bbs.eeworld.com.cn/thread-84011-1-1.html
此帖出自电子竞赛论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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