Hatton_0 2015-04-04 19:43 采纳率: 0%
浏览 4518

51单片机中的串口通信发送10(16进制)以上显示不正确

串口通信中,向单片机发送数据控制LED灯亮实验中
发01,02、04、08 依次是 第1 2 3 4 个灯亮

而发送 10 就成第5 6 个一起亮了,然后发20 、40 是第7 和 第 8 个;
发 80 就全灭了 , 这是啥情况啊。

#include

unsigned char a,flag;
void init();
void main()
{
init();
while(1)
{
if(flag == 1)
{
ES = 0;
P0 = a;
ES = 1;
flag = 0;
}
}
}

void init()
{
TMOD = 0x20;
TH1 = 0xfa;
TL1 = 0xfa;
TR1 = 1; // T1开始工作
REN = 1; //允许串口接收
SM0 = 0;
SM1 = 1; //选择串口的工作方式
EA = 1; //中断总开关
ES = 1; // 开串口中断
}

void ext() interrupt 4
{
RI = 0;
a = SBUF;
flag = 1;
}

今天下午调了一下程序:

发现是波特率的问题:

4800 的 波特率

这样设置就有问题
图片说明

这样设置就没事。
图片说明
不过为啥是这个情况....

  • 写回答

3条回答 默认 最新

  • threenewbee 2015-04-05 00:35
    关注

    用 串口调试助手 看下你发送的数据对不对

    如果对的话,可能是单片机内的程序的问题

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码