全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

关于51单片机处理串口所接收到的数据的判断

[复制链接]
1728 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 100202 于 2023-6-11 21:38 编辑

原本使想要判断多个字节的数据,但是在处理一个字节的数据时就发生了错误(串口助手和单片机波特率均为9600,且数据位停止位校验位均为81N)
(1)用8个led显示接收到的数据,刚开始什么也没发送,但是LED灯却显示接收到了7F(01111111)

(2)当我用串口助手发送数据时。若判断接收到的数据是否为0x51,则会失败,且显示为FF(如果添加延时函数,会显示小段时间的D1,然后自动变成FF)
205a343c83aebbac2906e9d34004db5.png 5c70fd13390186846a223bfc662ad6a.png 当用串口助手发送0xA5时,接受到的数据正确且正常显示A5,LED1也在正常亮起
365df9882932dafcca080856f54bbcd.png
在尝试过后发现似乎如A8,FA如此字母开头的字节都可以识别正确,但是数字很多都不行

以下是我的程序
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int

sbit led0 = P0^0; //两个LED灯判断接收到的数据
sbit led1 = P0^1;

uchar num1,flag;//读取SBUF
void UART_init()
{        //TR1=0;
        TMOD =0x20;          //T1工作模式2  8位自动重装
        TH1 = 0xFD;
        TL1 = 0xFD;         //0xfd波特率9600。
        ET1 = 0;
        IE=0x90;  //启动定时器1
        TR1 = 1;                //启动T1定时器
         
        PCON =0x00;         //若0x80 SMOD置1,波特率加倍;但此时的波特率为9600;
        REN=1;                 //看似无用实则不可缺失
        SCON = 0x50;                //串口允许接收
        //SM0 = 0;SM1 = 1;
        EA  = 1;                //开总中断
        ES  = 1;                //串口中断打开
}

void main()
{        flag = 0;
        UART_init();

        while(1)
        {          if(flag == 1)
                {  
                 switch (num1)
                   { case 0x51:       //若接收到的是0x51,则LED0亮,下同
                                led0=0;         break;
                        case 0xA5:
                                led1=0;         break;
                        }
                 }
        //        else led1=1;
        
        }        
}

void UART() interrupt 4       //串口中断函数
{        //EA=0;
        if(RI==1)        //检测是否接收完成
                {RI = 0;  
                  P1=~SBUF;        
                num1=SBUF;  //P1有8个共阳极LED灯,方便判断接收到的数据。SBUF给num1;
                 flag = 1;
                }
        //EA=1;

}

求告知问题出在哪里以及解决方式,感谢万分


e17280332a9e556941ac34760e22b6f.png

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表