打印

请问单片机怎么主动发串口数据?

[复制链接]
9777|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxh2010|  楼主 | 2011-4-12 11:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我准备,单片机重启的时候,程序通过串口像计算机发送8字节的数据,通知计算机单片机已经重启。

但是测试的时候,使用串口调试工具,总接收不到数据(串口是正常的)。

最后发现,当单片机启动后,计算机总要先发数据给单片机后,计算机才能接收到单片机的数据。

请问,有什么办法可以让计算机接收到单片机重启时主动发送的数据???

谢谢!

相关帖子

沙发
ayb_ice| | 2011-4-12 11:47 | 只看该作者
这个问题就好象
"你什么时候想吃饭"一样

使用特权

评论回复
板凳
lxh2010|  楼主 | 2011-4-12 11:55 | 只看该作者
有办法没有?能否说清楚一点!!

使用特权

评论回复
地板
lyjian| | 2011-4-12 13:10 | 只看该作者
已经很清楚了

使用特权

评论回复
5
sdpz| | 2011-4-12 14:53 | 只看该作者
我怀疑楼主是利用某些标志或者中断来发数据的,你可能没初始化好,而又在接收数据后将标志填好了,就出现了只有收到数据后才能正常发送的情况。

使用特权

评论回复
6
lxh2010|  楼主 | 2011-4-12 14:59 | 只看该作者
我就是在板子初始化完成后,就直接通过串口向计算机发数据,但是计算机收不到(这里用的串口调试工具),为什么?

使用特权

评论回复
7
原野之狼| | 2011-4-12 15:53 | 只看该作者
这个谈不上办法吧  只要你的程序正常工作即可
串口是双向通信 主动不主动完全在于你程序的行为 跟PC没有任何干系

使用特权

评论回复
8
Step1toStep5| | 2011-4-12 16:46 | 只看该作者
应该是计算机先对串口进行一个响应 然后串口才能和计算机通信吧
你试试再计算机对串口进行响应后,串口再反馈信息 - - 我随便说说的

使用特权

评论回复
9
Step1toStep5| | 2011-4-12 16:49 | 只看该作者
个人认为是这样的,计算机要告诉串口我准备好了 然后才能开始通信。。。所以你重启后要发送信息得等计算机告诉串口,它准备好了以后。。。- -

使用特权

评论回复
10
928315| | 2011-4-12 19:40 | 只看该作者
没有遇到这样的问题。可能是串口调试工具的问题。调试工具初始化的时候有问题。


以前我也实现过你要求的功能。但是上位机,单片机程序都是我自己写的。所以可以随意控制。

使用特权

评论回复
11
928315| | 2011-4-12 19:40 | 只看该作者
换串口调试工具一试

使用特权

评论回复
12
huangqi412| | 2011-4-12 20:15 | 只看该作者
这个。。。怎么可能

使用特权

评论回复
13
多啦123abc| | 2011-4-12 20:20 | 只看该作者
哎呀,最近做单片机毕业设计,头大了

使用特权

评论回复
14
batsong| | 2011-4-12 20:28 | 只看该作者
难道你是带硬流控的串口?

使用特权

评论回复
15
ljb_sunshine| | 2011-4-12 21:42 | 只看该作者
建议把与串口通信的程序贴出来吧……

使用特权

评论回复
16
mmax| | 2011-4-13 08:27 | 只看该作者
上电后加个适当的延时再发数据?
只是猜一下。

使用特权

评论回复
17
yuyetufu| | 2011-4-13 09:51 | 只看该作者
你的意思,单片机上电主动给计算机发,计算机收不到?而必须先让计算机给单片机发一个,单片机才能发信息上来??
理论上是不会的,你单片机想发就发,不需要先收才能发。除非你有其他通信协议

使用特权

评论回复
18
yan2005| | 2011-4-13 15:32 | 只看该作者
除非楼主在PC端用的是流控的方式。

建议做一个PC端的回环测试:
把PC上引出来的串口的RX和TX直接短接,然后在超级终端或者串口助手里面发送数据,看看能不能读回来。如果能读回来,说明PC端没有问题,可以再集中考虑单片机上的软硬件出错可能。

使用特权

评论回复
19
sysdriver| | 2011-4-17 21:08 | 只看该作者
LZ的中文语法真是了得,看得模模糊糊的

使用特权

评论回复
20
刘前辈| | 2011-4-18 09:04 | 只看该作者
我就是在板子初始化完成后,就直接通过串口向计算机发数据,但是计算机收不到(这里用的串口调试工具),为什么?


很简单。串口能发送数据的前提是TI=1;然后只要向SBUF送数据,这个数据就能自动发送出去。TI=1 就是允许发送的意思,上面计算机收不到单片机主动发送的数据,是因为TI=0,单片机数据根本没有发出。

所以,请先确认一下,你的串口初始化程序最后一条,有没有加上 TI=1; 允许发送位置位,打开发送器。



/

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
21lic(gao) + 1 很给力!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

188

帖子

3

粉丝