单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3401|回复: 9
收起左侧

这个程序的波特率能帮我改到38400吗?

[复制链接]
dzbj 发表于 2017-6-4 23:19 | 显示全部楼层
这个是回4楼的

51单片机 12T 11.0592MHz晶振 定时器1 8位自动重装 115200波特率 实测无问题

void UartInit(void)                //115200bps@11.0592MHz
{
        PCON |= 0x80;                //使能波特率倍速位SMOD
        SCON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xBF;                //定时器1时钟为Fosc/12,即12T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //清除定时器1模式位
        TMOD |= 0x20;                //设定定时器1为8位自动重装方式
        TL1 = 0xFF;                //设定定时初值
        TH1 = 0xFF;                //设定定时器重装值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
}

下面是回楼主的 用STC的ISP工具生成的 但11.0592MHz晶振下误差居然有25% 倍速更高 误差达50% 请问楼主一定要用这么奇怪的波特率么

void UartInit(void)                //38400bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xBF;                //定时器1时钟为Fosc/12,即12T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //清除定时器1模式位
        TMOD |= 0x20;                //设定定时器1为8位自动重装方式
        TL1 = 0xFF;                //设定定时初值
        TH1 = 0xFF;                //设定定时器重装值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
}
回复

使用道具 举报

dzbj 发表于 2017-6-4 23:22 | 显示全部楼层
补充

我看你们说的意思是标准的89c52片子 可是stc的程序里并没有用到后增加的特殊寄存器啊 也是12T 有什么区别么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛5群 联系QQ:125739409;技术交流QQ群174280738

Powered by 单片机教程网

快速回复 返回顶部 返回列表