标题:
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