新手提问:两个单片机RS232通讯问题,谢谢各位学长啊!

小弟初学PROTUES,做了个两个单片机通讯的模拟,有些问题,请大帮帮忙,谢谢啊!//发送程序,通过SBUF口发送0X56#include<reg51.h>main(){... 小弟初学PROTUES,做了个两个单片机通讯的模拟,有些问题,请大帮帮忙,谢谢啊!

//发送程序,通过SBUF口发送 0X56
#include <reg51.h>
main()
{
TMOD= 0x20;
SM0=0;
SM1=1;
REN=1;
PCON=0;
TH1 =0XFD;
TL1 =0XFD;
TR1=1;
SBUF=0X56;
}

//接受程序,P1口接受SBUF数据
#include <reg51.h>
main()
{
TMOD= 0x20;
SM0=0;
SM1=1;
REN=1;
PCON=0;
TH1 =0XFD;
TL1 =0XFD;
TR1=1;
while(1)
{
P1=SBUF;while(!RI);RI=0;
}
}

问题1: 这个程序有没有什么错误啊?为什么接受单片机P1口的值一直在晃动。
问题2: 我看书上写发送还要加一条程序,就在SBUF赋值后面, P1=SBUF;while(!TI);TI=0;
但如果加上这条程序就无法显示了。
问题3:SBUF的数据加上,是不是就一直存在了?需要while(1)循环码?
问题4:如果做一个电脑与单片机通讯,应该如何改进呢?(就是将图中发送机换成串口通讯助手)
(饿。。才一级,没法传图,图其实很简单,就是两个单片机P3.0/RXD与P3.1/TXD相互连接,波特率为9600.晶振11.0592)
展开
 我来答
20061002838
2010-11-29 · TA获得超过811个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:96.1万
展开全部
1,
2,书上那样说使用在一次发送多个数据的情况,要确保上一个数据发送完成才发送下一个数据,你只发送一个一个数据可以不用这么做;
3,发送程序确实需要加上while(1);但原因不是你所的那样,是因为你不加while(1);程序可能从开始又执行起来,这也是导致问题1的可能原因;
4,程序上不需要太大改动,主要是硬件上面,需要加232电平转换电路,芯片是MAX232,连接串口DB9的时候用2.3.5脚,5脚是地,接单片机地;2.3脚是发送接收(具体顺序我忘了,你查一查吧),接单片机的发送接收(交叉连接);或者你看一看MAX232的芯片资料,上面有电路图,你就懂了
萍水e相逢
2010-11-28 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.4亿
展开全部
单片机 P3.0/RXD与P3.1/TXD 直接 相连 的话
A机 RXD 连B机 TXD
A机 TXD 连B机 RXD

其他 都 差不多 吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1ad98ff
2010-11-28 · TA获得超过105个赞
知道答主
回答量:97
采纳率:0%
帮助的人:0
展开全部
首先要分清是硬件问题还是软件的问题,两个单片机物理上相距多远,直接用TTL电平连接的两个串口,还是变成了RS232电平,哎,这类问题靠提问不好解决,看不见,最好在身边找一个懂一点的,高手都很忙,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-11-30
展开全部
1.你要想发送多个数据,就必须软件TI清零。具体原因可参考书。
问题四:不需要改进,只需要选好RS232芯片以及连接好引脚就行。(本人也是初学者)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式