单片机/MCUwilliam hill官网
直播中

于克凡

10年用户 26经验值
擅长:电源/新能源 处理器/DSP
私信 关注
[文章]

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

    大神们你们好!我想做一个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;

}

回帖(4)

阿信509

2014-8-5 16:31:41
你用的晶振是多少的呀?看看波特率初始化赋值有没有问题,
举报

嵌入式linux工程

2014-8-5 17:27:15
PCON=0x80;这个东西把波特率加倍了
举报

于克凡

2014-8-5 18:11:00
引用: 阿信509 发表于 2014-8-5 16:31
你用的晶振是多少的呀?看看波特率初始化赋值有没有问题,

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

于克凡

2014-8-5 18:11:30
引用: 嵌入式linux工程 发表于 2014-8-5 17:27
PCON=0x80;这个东西把波特率加倍了

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

更多回帖

发帖
×
20
完善资料,
赚取积分