cpfdianzi 发表于 2011-9-9 22:35:53

求助,STC12LE5608AD 串口通信波特率设置问题

下面我用STC12LE5608AD这款单片机写的串口通信程序,串口应该是一直接受0xaa才对,但是接收到的却是其他的数,因此我怀疑是波特率设置错误,但是我又找不出哪里设置出了错,不知道各位高手能否指点一下,谢谢!
void UartInit(void)                //9600bps@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 = 0xFD;                //设定定时初值
        TH1 = 0xFD;                //设定定时器重装值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
}
void R_S_Byte(uchar dat)
{       
       SBUF = dat;
   while( !TI );                                //查询法
       TI = 0;   
}
void main()
{       
         UartInit();
        while(1)
        {
                R_S_Byte(0xaa);//将接收数据buf中的数据通过串口发送
                Delay(10000);
        }
}

BXAK 发表于 2011-9-9 22:47:58

下载时勾选“使用外部晶体或时钟”这一项没?

bigeblis 发表于 2011-9-9 23:22:05

看设置好像没错
1楼的问题你应该注意下,虽然5608这个片子,STC的下载软件默认是用外置时钟的,但也难免你无意中设置为用内部RC时钟

cpfdianzi 发表于 2011-9-10 08:19:03

回复【1楼】BXAK
-----------------------------------------------------------------------

确实是不小心勾了使用内部RC时钟,谢谢1楼和2楼!
页: [1]
查看完整版本: 求助,STC12LE5608AD 串口通信波特率设置问题