用過stc12C5A60S2單片機的朋友都知道,該單片機有兩個串口可用,看到官網的程序注釋的也是比較多,所以自己寫了個串口2使用的程序,由于代碼相對簡單,所以這里只羅列出了串口2的的初始化、發送和接收函數供大家參考。
程序包含了STC12C5A60S2.H的頭文件,這個網上都有,大家懂的。
這個是初始化的函數,可以添加到程序中調用就可以了。這里是用了獨立波特率發生器產生4800的波特率,晶振是24M,這個是用STC波特率計算機生成后添加了后面紅字部分,大家如果用其他晶振或者波特率可以下個重新生成然后修改即可。
/*描述:
電腦串口顯示程序
用Windows系統中的“超級終端”軟件,將串口端設置 [ 4800,8,無,1,無 ]
*/
#include《STC12C5A60S2.H》 //單片機頭文件
#include 《intrins.H》
/******自定義函數**************/
void UART_init (void); /**UART串口初始化函數**********/
void UART_T (unsigned char UART_data);/****************UART串口發送函數**************************/
void UART_TC (unsigned char *str);/*****UART串口發送字符串函數 */
/***********************************************************
函數名:主函數
調 用:無
參 數:無
返回值:無
結 果:程序開始處,無限循環
備 注:
/**********************************************************************************************/
void main (void)
{
UART_init();
UART_T(0x30);
UART_TC(“操媽逼”);
while(1);
}
/*********************************************************************************************
函數名:UART串口初始化函數
調 用:UART_init();
參 數:無
返回值:無
結 果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產生波特率(占用)
備 注:振蕩晶體為12MHz,PC串口端設置 [ 4800,8,無,1,無 ]
/**********************************************************************************************/
void UART_init (void)
{
EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
ES = 1; //允許UART串口的中斷
TMOD = 0x20; //定時器T/C1工作方式2
SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
TH1 = 0xF3; //定時器初值高8位設置
TL1 = 0xF3; //定時器初值低8位設置
PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
TR1 = 1; //定時器啟動
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送函數
調 用:UART_T (?);
參 數:需要UART串口發送的數據(8位/1字節)
返回值:無
結 果:將參數中的數據發送給UART串口,確認發送完成后退出
備 注:
/**********************************************************************************************/
void UART_T (unsigned char UART_data){ //定義串口發送數據變量
SBUF = UART_data; //將接收的數據發送回去
while(TI == 0); //檢查發送中斷標志位
TI = 0; //令發送中斷標志位為0(軟件清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送字符串函數
調 用:UART_TC (?);
參 數:需要UART串口發送的數據(8位/1字節)
返回值:無
結
果:向串口發送一個字符串,長度不限。
備 注:例:UART_TC(“d9887321$”); 此函數需要#include 《string.h》頭文件支持。
/**********************************************************************************************/
void UART_TC (unsigned char *str)
{
while(*str != ‘\0’)
{
UART_T(*str);
*str=*str++; //無聊警告。。。
}
*str = 0;
}
評論
查看更多