51单片机,串口通信问题!

#include<reg51.h>#include<intrins.h>#include<stdio.h>#defineucharunsignedchar#defineu... #include<reg51.h>#include<intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit LED=P2^5;void init(){ TMOD=0X20; SCON=0X50; PCON=0X00; TH1=0XFD; TL1=0XFD; ES=1; EA=1; TR1=1;}void send(uchar x){ ES=0; SBUF=x; while(TI==0); TI=0; ES=1;}void main(){ init(); while(1);}void ser()interrupt 4{ uchar x; if(RI==1){ RI=0; x=SBUF; if(x=='A') LED=~LED; _nop_(); send(x);}}
这个程序实现的是:通过串口调试助手发一个数据,马上会在串口调试中显示该字符,当发送的是‘A’的时候,则LED置反,但是我仿真的时候,为什么得不到结果?请问大神,我这个程序哪里错了!!??
展开
 我来答
duyin2011
2013-07-09 · TA获得超过2400个赞
知道大有可为答主
回答量:1723
采纳率:100%
帮助的人:665万
展开全部
我测试了 这程序没有问题
1,如果你没测好,估计是你的仿真串口设置不对,比如你的P1设置为com1,9600,n,8,1
则上位机要设置为com2,9600,n,8,1,
2,要对称设置端口,首先下个串口虚拟软件Virtual Serial Port Driver 6.0就可以
,虚拟出2个对称的串口才可以通讯
更多追问追答
追问

为什么我这不行呢?大神,再帮看下!好不

追答

估计你没有进行串口虚拟,你下载个Virtual Serial Port Driver 6.0,然后用他添加虚拟串口,一般是com3,com4,我用笔记本是com1,com2,也可以是com5,com6等等,如图,然后下位机是com1,上位机设置com2, 如果下位机是com3,上位机则设置com4,看了你的图,应该没问题呀RX有东西呀,估计软件有问题,重启下看看

一万光年MEGn0
2013-07-09 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1075万
展开全部
send(x);这个函数可以不要

发送的时候直接
SBUF = x;
}
if(TI==1)
{
TI=0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2013-07-10 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38386
国家科技进步奖

向TA提问 私信TA
展开全部
肯定不行,和电脑接的话,需要加MAX232接口芯片才可以的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友11b753990
2013-07-10
知道答主
回答量:37
采纳率:0%
帮助的人:20万
展开全部
串口实验必须用11.0592M晶振,否则会出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式