各位大神,小弟用proteus仿真单片机的串口通信单片机接收不了信号,请解救。
下面是proteus部分电路:本程序是用串口小助手发送“1”,仿真的虚拟终端SCMR接收不了信号“1”,发光二极管不亮。虚拟串口软件如下显示,com1是发送,com2是接...
下面是proteus部分电路:
本程序是用串口小助手发送“1”,仿真的虚拟终端SCMR接收不了信号“1”,发光二极管不亮。虚拟串口软件如下显示,com1是发送,com2是接收,好像是有接收到(下图左边)
程序如下:
#include<reg52.h>
void init();
void main()
{
init();
while(1)
{
while(!RI); //RI=1,判定为串口接收到了数据,RI要清零,
RI=0; //否则就会进入中断,如果没接收数据就一直在while循环
P1=SBUF; //如果介绍到数据就点亮发光二极管
}
}
void init()
{
TMOD=0x20; //设置T1工作方式为方式2
TH1=0xfd; //给定时器高位装初值
TL1=0xfd; //给定时器低位装初值
TR1=1; //开定时器
//以上是设置波特率
SM0=0; //设置串口通讯方式为方式1
SM1=1;
REN=1; //串口是否接收数据的开关
}
这个问题一直困扰着我,求解救 展开
本程序是用串口小助手发送“1”,仿真的虚拟终端SCMR接收不了信号“1”,发光二极管不亮。虚拟串口软件如下显示,com1是发送,com2是接收,好像是有接收到(下图左边)
程序如下:
#include<reg52.h>
void init();
void main()
{
init();
while(1)
{
while(!RI); //RI=1,判定为串口接收到了数据,RI要清零,
RI=0; //否则就会进入中断,如果没接收数据就一直在while循环
P1=SBUF; //如果介绍到数据就点亮发光二极管
}
}
void init()
{
TMOD=0x20; //设置T1工作方式为方式2
TH1=0xfd; //给定时器高位装初值
TL1=0xfd; //给定时器低位装初值
TR1=1; //开定时器
//以上是设置波特率
SM0=0; //设置串口通讯方式为方式1
SM1=1;
REN=1; //串口是否接收数据的开关
}
这个问题一直困扰着我,求解救 展开
4个回答
展开全部
你光有虚拟串口还不够,还要用一个串口助手呀!
虚拟串口只提供一个串口,串口助手才能把相关的数据通过虚拟串口来发送或者接收!
虚拟串口只提供一个串口,串口助手才能把相关的数据通过虚拟串口来发送或者接收!
更多追问追答
追问
谢谢你的回答,不过上面有说用虚拟助手
追答
那叫串口助手,不叫虚拟助手!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果单片机的晶振12,请改为11.0592
更多追问追答
追问
谢谢你的回答,是11.0592
追答
发送的2字节才接收了1字节啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的DSR和DCD都勾着呢,那样肯定通不了的。取消了。
更多追问追答
追问
谢谢你的回答,为什么DSR和DCD都勾着通不了?
追答
串口基本通信只需要TXD/RXD/GND三根线。其他的CTS/RTS, DSR/DCD, RING都是Modem通信协议时要用的,一般通信是不用的。如果加上了,要有相应的通信协议才能通信。
你去看看串口协议吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询