问题描述
- 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 的 波特率
解决方案
用 串口调试助手 看下你发送的数据对不对
如果对的话,可能是单片机内的程序的问题
解决方案二:
你发生的数据,串口中是如何处理的。以及对应数据单片机支持吗,几个地方分别对照一下分析。
时间: 2024-09-10 09:44:20