標題: 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; //接收到的數(shù)據(jù)+1后,發(fā)送回去
        while (!TI);     //等待發(fā)送完成
        TI = 0;          //清零發(fā)送中斷標志位
    }
}
/* 串口配置函數(shù),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
關(guān)于此芯片的重要說明:有定時器0和定時器2 (注意:無定時器1)

要用定時器2作波特率發(fā)生器
void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR |= 0x01;                //串口1選擇定時器2為波特率發(fā)生器
        AUXR |= 0x04;                //定時器2時鐘為Fosc,即1T
        T2L = 0xE0;                //設(shè)定定時初值
        T2H = 0xFE;                //設(shè)定定時初值
        AUXR |= 0x10;                //啟動定時器2
}

作者: stdwmap    時間: 2021-7-5 16:42
1樓完美解答,謝謝。
作者: 人人學(xué)會單片機    時間: 2021-7-6 20:26
串口1打印程序 可以打印3個十六位的變量 波特率9600 http://www.torrancerestoration.com/bbs/dpj-201660-1.html

串口發(fā)送 不需要while死等 串口接收執(zhí)行軟件復(fù)位 http://www.torrancerestoration.com/bbs/dpj-200927-1.html
作者: 人人學(xué)會單片機    時間: 2021-7-6 20:27

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

串口發(fā)送 不需要while死等 串口接收執(zhí)行軟件復(fù)位 http://www.torrancerestoration.com/bbs/dpj-200927-1.html




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1