STC單片機11.0592晶振實現(xiàn)115200波特率串口通信
如果換了STC單片機,例如在STC12C5A60S2實現(xiàn)115200的高速通信就相當(dāng)簡單了。
因為,STC12單片機有獨立的波特率發(fā)生器。
#include "STC12C5A60S2.H"
#include "stdio.h"
void init_uart()
{
PCON &= 0x7f;//波特率不倍速
SCON = 0x50;//8位數(shù)據(jù),可變波特率
BRT = 0xFD; //設(shè)定獨立波特率發(fā)生器重裝值
AUXR |= 0x04;//獨立波特率發(fā)生器時鐘為Fosc,即1T
AUXR |= 0x01;//串口1選擇獨立波特率發(fā)生器為波特率發(fā)生器
AUXR |= 0x10;//啟動獨立波特率發(fā)生器
}
char putchar (unsigned char i)
{
ES = 0; //關(guān)串口中斷
TI = 0; //清零串口發(fā)送完成中斷請求標(biāo)志
SBUF = i;
while(TI ==0); //等待發(fā)送完成
TI = 0; //清零串口發(fā)送完成中斷請求標(biāo)志
ES = 1; //允許串口中斷
return SBUF;
}
記得頭文件加上 stdio.h,然后在代碼里實現(xiàn) putchar 函數(shù),這樣你就可以很方便的用 printf函數(shù)進行串口輸出了。
例如
int hh=0,mm=0,ss=0;
printf("現(xiàn)在的時間:%d:%d:%drn", hh,mm,ss);
是不是串口輸出變簡單多了。
評論