标题: STC15W204S单片机串口通信问题 [打印本页]

作者: stdwmap    时间: 2021-7-5 15:49
标题: STC15W204S单片机串口通信问题
请各位大佬帮忙看下下面这段程序,在STC89C52RC上可以正常运行,移植到STC15W204S上无法运行,我自己想过修改AUXR寄存器改成1T或者12T模式都没成功,这里贴出51单片机源程序,指点一下要修改些什么,谢谢。

#include <reg52.h>

void ConfigUART(unsigned int baud);

void main()
{
    ConfigUART(9600);  //配置波特率为9600

    while (1)
    {
        while (!RI);     //等待接收完成
        RI = 0;          //清零接收中断标志位
        SBUF = SBUF + 1; //接收到的数据+1后,发送回去
        while (!TI);     //等待发送完成
        TI = 0;          //清零发送中断标志位
    }
}
/* 串口配置函数,baud-通信波特率 */
void ConfigUART(unsigned int baud)
{
    SCON  = 0x50;  //配置串口为模式1
    TMOD &= 0x0F;  //清零T1的控制位
    TMOD |= 0x20;  //配置T1为模式2
    TH1 = 256 - (11059200/12/32)/baud;  //计算T1重载值
    TL1 = TH1;     //初值等于重载值
    ET1 = 0;       //禁止T1中断
    TR1 = 1;       //启动T1
}



作者: wulin    时间: 2021-7-5 16:38
芯片型号 : STC15W204S
关于此芯片的重要说明:有定时器0和定时器2 (注意:无定时器1)

要用定时器2作波特率发生器
void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x01;                //串口1选择定时器2为波特率发生器
        AUXR |= 0x04;                //定时器2时钟为Fosc,即1T
        T2L = 0xE0;                //设定定时初值
        T2H = 0xFE;                //设定定时初值
        AUXR |= 0x10;                //启动定时器2
}

作者: stdwmap    时间: 2021-7-5 16:42
1楼完美解答,谢谢。
作者: 人人学会单片机    时间: 2021-7-6 20:26
串口1打印程序 可以打印3个十六位的变量 波特率9600 http://www.51hei.com/bbs/dpj-201660-1.html

串口发送 不需要while死等 串口接收执行软件复位 http://www.51hei.com/bbs/dpj-200927-1.html
作者: 人人学会单片机    时间: 2021-7-6 20:27

串口1打印程序 可以打印3个十六位的变量 波特率9600 http://www.51hei.com/bbs/dpj-201660-1.html

串口发送 不需要while死等 串口接收执行软件复位 http://www.51hei.com/bbs/dpj-200927-1.html




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1