永发信息网

单片机通过串口发送0x00,为什么串口接收后显示为80呢

答案:7  悬赏:70  手机版
解决时间 2021-03-17 15:57
  • 提问者网友:鼻尖触碰
  • 2021-03-17 05:38
单片机通过串口发送0x00,为什么串口接收后显示为80呢
最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-03-17 06:27
这是晶振的误差造成的,校准波特率后才能正常通信。波特率9600所对应的应该是11.0592MHz的晶振,如果是12M就会出现这个问题,我在protues仿真中把晶振频率改为11.0592M后,正常通信,没有出现错误了!这应该能帮到你!
全部回答
  • 1楼网友:思契十里
  • 2021-03-17 11:55
你们最后怎么解决的 我只是简单的单片机向串口 发数据 代码和你的差不多 也存在这个问题
  • 2楼网友:长青诗
  • 2021-03-17 11:22
你的问题解决了没,我也遇到了同样的问题,希望能探讨下
  • 3楼网友:蕴藏春秋
  • 2021-03-17 09:59
你的程序收到PC的数后输出到P2,然后再读P2送到PC,P2是I/O口,不能保证你收到和发送的数据原样不动。
  • 4楼网友:爱难随人意
  • 2021-03-17 09:19
在中断服务程序中,PC发向单片机发出的数据,应该为P2=SBUF - 48,这里减去48是因为从电脑中发送过来的数据是ASCII码。。。需要转换一下,希望对你有所帮助
  • 5楼网友:杯酒困英雄
  • 2021-03-17 08:09
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SM0=0;
SM1=1;
TR1=1;
REN=1;
ES=1;
EA=1;
这几个的顺序调整下。
调整成
TMOD=0x20;//T1计数器工作在模式2
TH1=0xfd;//T1初始值装载,波特率为9600;
TL1=0xfd;
TR1=1;//启动T1
SM0=0;//编程SCON寄存器,使其工作在工作方式1中
SM1=1;
REN=1;//允许接收
ES=1;//串口中断开
EA=1;//总中断开
  • 6楼网友:詩光轨車
  • 2021-03-17 07:40
不要处理。你的波特率对吗?追问且发送80以上数据时显示就开始正确显示追答程序有问题?追问没有啊,就是接收存在一个变量就发送回去的追答是实物吗?上程序看看
没错呀,我试了proteus仿真,用串口助手发00,也可以收到00的
你的晶振是不是11.0592?追问是啊追答P2口上有没接其它的元件?追问能加个QQ聊不追答检查你的P2.7看看有没什么搭接上变高电平
或你的这芯片有问题?追问我的也是仿真,P2.7什么也接,就是怪了追答啊,是仿真的?
那可能是proteus或keil的问题了
你proteus版本多少?追问但是当发送高于80以上的数据时都是显示正确的追答我这是正常的。
你是发00吧,设为HEX收发。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯