矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2805|回复: 4

串口通讯的单片机程序,为什么电脑发送1,返回的却是82

[复制链接]
     
发表于 2019-7-25 18:36:28 | 显示全部楼层 |阅读模式
正常应该是,电脑发送1,返回的是2

程序如下,请大家帮忙找一下原因:

#include<reg52.h>

void configuart(unsigned int baud);

void main()
{
configuart(9600);
while(1)
{
  while(!RI);
  RI=0;
  SBUF=SBUF+1;
  while(!TI);
  TI=0;
}
}

void configuart(unsigned int baud)
{
SCON=0x50;
TMOD &=0x0f;
TMOD |=0x20;
TH1=256-(12000000/12/32)/baud;
TL1=TH1;
ET1=0;
TR1=1;
}
     
发表于 2019-7-25 20:14:43 | 显示全部楼层
先用示波器看看 UART 发送的数据对 不对得上.
再检查代码.


回复 支持 反对

使用道具 举报

     
发表于 2019-7-28 11:19:49 | 显示全部楼层
1.   双方的波特率一样。
2.   多加一个变量 unsigned char tmp;    SBUF=SBUF+1; 改成  tmp = SBUF;  tmp = tmp+1;   SBUF = tmp;
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-8-1 11:11:48 | 显示全部楼层
谢谢回复,我仔细检查并验证一下
回复 支持 反对

使用道具 举报

     
发表于 2019-8-1 11:27:58 | 显示全部楼层
原因很可能是你设定的波特率与标准波特率误差太大了,12M晶振按你设定误差是8.5%。换晶振或者换芯片(不知道芯片是什么?)如果是STC12C5A系列还有第三条路。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 05:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表