我用STC89C52单片机和12MHZ晶振怎么产生9600的波特率

2019-07-15 19:56发布

求哪位大神可以在这个基础上帮我改一下吗?
        PCON = 0x80;                     
        SCON = 0x50;            
        TMOD = 0x21;                     
        TH1 = 0xfa;
        TL1 = 0xfa;
        TR1 = 1;
        TH0 = 0x00;
        TL0 = 0x01;
        ET0 = 1;        
        TR0 = 1;        
        EA = 1;
        SerDTvalid = FALSE;                         
    REN = 1;
         ES = 1;

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
chenhaixin
1楼-- · 2019-07-16 19:26
void UartInit(void)                //9600bps@12.000MHz
{
        PCON |= 0x80;                //使能波特率倍速位SMOD
        SCON = 0x50;                //8位数据,可变波特率
        TMOD &= 0x0F;                //清除定时器1模式位
        TMOD |= 0x20;                //设定定时器1为8位自动重装方式
        TL1 = 0xF9;                //设定定时初值
        TH1 = 0xF9;                //设定定时器重装值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
}

误差百分之六点多,没办法,无不太懂你为什么定时器0也设置了,串口本身是不用,你可以干别的
小小平淡
2楼-- · 2019-07-17 00:21
chenhaixin 发表于 2014-5-1 12:21
void UartInit(void)                //9600bps@12.000MHz
{
        PCON |= 0x80;                //使能波特率倍速位SMOD

这个是1T模式还是12T模式啊
dastone
3楼-- · 2019-07-17 01:24
这个波特率的误差我也曾被折腾过,最后还是换晶振。
如你一般__
4楼-- · 2019-07-17 05:44
 精彩回答 2  元偷偷看……
勇哥-lzu
5楼-- · 2019-07-17 11:15
chenhaixin 发表于 2014-5-1 12:21
void UartInit(void)                //9600bps@12.000MHz
{
        PCON |= 0x80;                //使能波特率倍速位SMOD

能将一下为什么误码率是6%,从来都没有传正确吗?

一周热门 更多>