使用stc90c516rd+单片机产生115200的串口波特率。
时间:10-02
整理:3721RD
点击:
本人最近一直在调试stc90c516rd+单片机的串口,想要115200的串口波特率,但是晶振是11.0592M。苦于一直没法实现,后来发现了一个方法可以实现,单片机运行在6T情况下,使用11.0592M晶振下面程序就可实现115200的波特率。或者是单片机运行在12T情况下,使用22.1184M晶振也可以实现115200的波特率。
#include "STC90.h"
void UartInit(void)
{
SCON=0X50; //串口工作在方式1 ,8位uart,波特率可变
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XFF; //计数器初始值设置
TL1=0XFF;
ES=1; //打开串口中断
TR1=1; //打开计数器
EA=1; //开启总中断
}
unsigned char temp;
void main(void)
{
UartInit();
while(1){
}
}
void Uart() interrupt 4
{
temp=SBUF; //出去接收到的数据
while(!RI);
RI=0;
SBUF=temp;
while(!TI);
TI=0;
}
#include "STC90.h"
void UartInit(void)
{
SCON=0X50; //串口工作在方式1 ,8位uart,波特率可变
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XFF; //计数器初始值设置
TL1=0XFF;
ES=1; //打开串口中断
TR1=1; //打开计数器
EA=1; //开启总中断
}
unsigned char temp;
void main(void)
{
UartInit();
while(1){
}
}
void Uart() interrupt 4
{
temp=SBUF; //出去接收到的数据
while(!RI);
RI=0;
SBUF=temp;
while(!TI);
TI=0;
}
查找datasheet发现stc90c516rd+竟然可以运行在6T情况下,根据datasheet找到了可以实现的方法。
不错的资料分享 简单了解一下 感谢分享