微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助大神!51单片机接收一字节数据出现问题

求助大神!51单片机接收一字节数据出现问题

时间:10-02 整理:3721RD 点击:
    大神们你们好!我想做一个51单片机从f28335上位机上通过SCI通讯的实验,上位机每次发给51一字节的数据,以十六进制的形式发送,比如FFH,51H等,但是我的51上接收的数据只有01H-0FH和F1H-FFH是正确的,但是当我发送10H时,单片机会接收到34H,而且完全找不到规律。请大神们抽出一点宝贵的时间给小弟解答下吧!谢了!

void display(uchar num)
{
        uchar ge,shi,bai;
        ge=num%10;
        bai=num/100;
        shi=num%100/10;
        wb=0;wa=1;
        dx=1;
        P2=table[bai];
        delayms(5);
        dx=0;
        wb=1;wa=0;
        dx=1;
        P2=table[shi];
        delayms(5);
        dx=0;
        wb=1;wa=1;
        dx=1;
        P2=table[ge];
        delayms(5);
        dx=0;
}
void main()
{
        TMOD=0x20; //定时器工作在第二种方式 具有自动重装初值的八位定时器/计数器
        PCON=0x80;
        TH1=0xff;  //波特率设为14400
        TL1=0xff;
        TR1=1;           //启动定时器T1
        REN=1;           //串行接收允许位
        SM0=0;           //工作方式1 八位通用异步接收器、发送器
        SM1=1;           //同上
        EA=1;           //总中断允许控制位
        ES=1;           //串口中断允许位
        Speed=0;
        while(1)
        {
                display(Speed);
        }
}

void ser() interrupt 4
{
        ES=0;          //串口终端允许位
        RI=0;          //接收中断标志位
        Speed=SBUF;
        ES=1;
}

你用的晶振是多少的呀?看看波特率初始化赋值有没有问题,

PCON=0x80;这个东西把波特率加倍了

用的11.0952Mhz的晶振,感觉初始化都没得问题的样子

嗯 我用的57600的波特率 串口助手也用的57600的 但是还是不行。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top