51的定时器本来就很不够用,用串口时再使用定时器1来产生波特率,那系统使用定时器就更加捉襟见肘了,STC11/10xx系列单片机内部自带的串口独立波特率发生器,使用它就可以将定时器1释放出来当定时器来用了。此外,通过设置WAKE_CLKO[2]的BRTCLKO可将P1.0设置为可编程时钟输出引脚。以下是它的初始化程序,具体寄存器含义以及BRT重载值计算参见手册。
#include <reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sfr AUXR = 0x8E; //不可位寻址
sfr WAKE_CLKO = 0x8F; //不可位寻址
sfr BRT = 0x9C;
void SeriesInit(void)
{
SCON = 0x50; //工作于方式1,允许接收
BRT = 0xDC; //11.0592MHz晶振,1T模式下9600波特率
AUXR |= 0x10; //允许独立波特率发生器运行
AUXR |= 0x04; //独立波特率发生器工作在1T模式
AUXR |= 0x01; //选择独立波特率发生器做为串口
ES = 1;
EA = 1;
}
……
……
友情分享:
宏晶科技最近发布了一款STC单片机串行口通信程序自动生成器软件,功能实用,绿色方便,谁用谁知道~
http://www.mcu-memory.com/datasheet/stc/STC-USER-CODE/波特率计算器.exe
如果什么时候链接不上了,请自行关注宏晶科技的网站,http://www.mcu-memory.com/
非广告贴,只求设计更方便~