新手提问:两个单片机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) 展开
//发送程序,通过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) 展开
4个回答
展开全部
1,
2,书上那样说使用在一次发送多个数据的情况,要确保上一个数据发送完成才发送下一个数据,你只发送一个一个数据可以不用这么做;
3,发送程序确实需要加上while(1);但原因不是你所的那样,是因为你不加while(1);程序可能从开始又执行起来,这也是导致问题1的可能原因;
4,程序上不需要太大改动,主要是硬件上面,需要加232电平转换电路,芯片是MAX232,连接串口DB9的时候用2.3.5脚,5脚是地,接单片机地;2.3脚是发送接收(具体顺序我忘了,你查一查吧),接单片机的发送接收(交叉连接);或者你看一看MAX232的芯片资料,上面有电路图,你就懂了
2,书上那样说使用在一次发送多个数据的情况,要确保上一个数据发送完成才发送下一个数据,你只发送一个一个数据可以不用这么做;
3,发送程序确实需要加上while(1);但原因不是你所的那样,是因为你不加while(1);程序可能从开始又执行起来,这也是导致问题1的可能原因;
4,程序上不需要太大改动,主要是硬件上面,需要加232电平转换电路,芯片是MAX232,连接串口DB9的时候用2.3.5脚,5脚是地,接单片机地;2.3脚是发送接收(具体顺序我忘了,你查一查吧),接单片机的发送接收(交叉连接);或者你看一看MAX232的芯片资料,上面有电路图,你就懂了
展开全部
单片机 P3.0/RXD与P3.1/TXD 直接 相连 的话
A机 RXD 连B机 TXD
A机 TXD 连B机 RXD
其他 都 差不多 吧
A机 RXD 连B机 TXD
A机 TXD 连B机 RXD
其他 都 差不多 吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先要分清是硬件问题还是软件的问题,两个单片机物理上相距多远,直接用TTL电平连接的两个串口,还是变成了RS232电平,哎,这类问题靠提问不好解决,看不见,最好在身边找一个懂一点的,高手都很忙,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-11-30
展开全部
1.你要想发送多个数据,就必须软件TI清零。具体原因可参考书。
问题四:不需要改进,只需要选好RS232芯片以及连接好引脚就行。(本人也是初学者)
问题四:不需要改进,只需要选好RS232芯片以及连接好引脚就行。(本人也是初学者)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询