我用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
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也设置了,串口本身是不用,你可以干别的

一周热门 更多>