?? uart.c
字號(hào):
// 引用外部頭文件
#include "c8051F020.h"
#include "uart.h"
/***********************************************************************************
* 函數(shù)名稱:Uart0_Init;
*
* 函數(shù)功能描述:Uart0初始化;
*
* 輸入?yún)?shù):unsigned char類型,發(fā)送數(shù)據(jù)波特率;
*
* 返回?cái)?shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void Uart0_Init(unsigned char BaudRate) //Uart0初始化
{
TR1=0; // 關(guān)閉定時(shí)器Timer1
ET1=0; // 關(guān)閉定時(shí)器Timer1中斷
PT1=0; // 關(guān)閉定時(shí)器Timer1中斷優(yōu)先權(quán)
TMOD&= 0x0f; // TMOD: 定時(shí)器1, 模式2, 8位重載
TMOD|= 0x20; // TMOD: 定時(shí)器1, 模式2, 8位重載
SCON0 = 0x50; // SCON0: 模式1, 8位UART, 使能RX
PCON |= 0x80; // SMOD00 = 1
if (BaudRate>=BaudRate_4800)
{
CKCON |= 0x10; // 定時(shí)器Timer1使用系統(tǒng)時(shí)鐘作為時(shí)間基準(zhǔn)
TH1 = -(SYSCLK/1200/(BaudRate*16)); // 設(shè)置定時(shí)器Timer1重載值
}
else
{
CKCON &= ~0x10; // 定時(shí)器Timer1使用系統(tǒng)時(shí)鐘作為時(shí)間基準(zhǔn)
TH1 = -(SYSCLK/1200/(BaudRate*16*12)); // 設(shè)置定時(shí)器Timer1重載值
}
ES0=0; // 關(guān)閉串口Uart0中斷
PS=0; // 關(guān)閉串口Uart0中斷優(yōu)先權(quán)
TI0 = 1; // Indicate TX0 ready
RI0 = 0; // Indicate RX0 ready
TR1=1; // 打開(kāi)串口Uart0
}
/***********************************************************************************
* 函數(shù)名稱:Uart0_Enable;
*
* 函數(shù)功能描述:Uart0初始化;
*
* 輸入?yún)?shù):bool類型,打開(kāi)輸入1;關(guān)閉輸入0;
*
* 返回?cái)?shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void Uart0_Enable(bool Flag)
{
if (Flag)
TR1=1; // 打開(kāi)串口Uart0
else
TR1=0; // 關(guān)閉串口Uart0
}
/***********************************************************************************
* 函數(shù)名稱:Uart0_SendString;
*
* 函數(shù)功能描述:Uart0初始化;
*
* 輸入?yún)?shù): unsigned char類型指針,發(fā)送數(shù)據(jù);
*
* 返回?cái)?shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void Uart0_SendString(unsigned char *pt)
{
while(*pt)
{
Uart0_SendByte(*pt++);
}
}
/***********************************************************************************
* 函數(shù)名稱:Uart0_SendByte;
*
* 函數(shù)功能描述:Uart0初始化;
*
* 輸入?yún)?shù):unsigned char類型指針,發(fā)送數(shù)據(jù);
*
* 返回?cái)?shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void Uart0_SendByte(unsigned char value)
{
while(!TI0); // 等待發(fā)送1個(gè)字節(jié)數(shù)據(jù)完成
SBUF0=value; // 發(fā)送數(shù)據(jù)到uart0
TI0=0; // 清除中斷標(biāo)志
}
/***********************************************************************************
* 函數(shù)名稱:Uart0_ReceiveData;
*
* 函數(shù)功能描述:Uart0初始化;
*
* 輸入?yún)?shù):none;
*
* 返回?cái)?shù)據(jù):unsigned char類型,接收數(shù)據(jù);
*
* 注意: none;
************************************************************************************/
unsigned char Uart0_ReceiveData(void)
{
if(RI0)
{
SCON0&=~0x01; // 清除RI1標(biāo)志位
return SBUF0;
}
return 0xff;
}
/***********************************************************************************/
// 文件結(jié)束
/***********************************************************************************/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -