📄 uart.c
字号:
/*******************************************************************************
Uart.C
串行口收发程序
*******************************************************************************/
#include <Uart.h>
//定义发送中断辅助标志(仅用于发送)
bit _TI_;
//定义接收缓冲区和标志
unsigned char UartRecBuf;
bit UartRecFlag = 0;
//串行口初始化
void UartInit()
{
EA = 0;
TR1 = 0;
RXD = 1;
TXD = 1;
_TI_ = 1;
SCON = 0x50; //串口方式1,允许接收
PCON |= 0x80; //波特率加倍
TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = 256 - ( MCLK / 12 ) / ( 16 * BAUD_RATE );
TL1 = TH1; //设置波特率
TR1 = 1;
ES = 1; //允许串行口中断
EA = 1; //允许中断
}
//串行口中断服务程序
void UartINTSVC() interrupt 4
{
char c;
if ( RI ) //接收中断
{
c = SBUF;
RI = 0;
UartRecBuf = c;
UartRecFlag = 1;
}
if ( TI ) //发送中断
{
TI = 0;
_TI_ = 1;
}
}
/*******************************************************************************
函数:UartPutc()
功能:通过串行口发送单个字节
参数:c-被发送的字节数据,取值0x00~0xFF
*******************************************************************************/
void UartPutc(char c)
{
while ( !_TI_ );
_TI_ = 0;
SBUF = c;
}
/*******************************************************************************
函数:UartPuts()
功能:通过串行口发送字符串
参数:*s-被发送的字符串:字符串应当以'\0'结尾,而'\0'本身不会被发送出去
*******************************************************************************/
void UartPuts(char *s)
{
char c;
for (;;)
{
c = *s;
if ( c == '\0' ) break;
s++;
UartPutc(c);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -