STC89C516RD+ 串口接收发送数据
#include <REGX52.H>
#include <Time.H>
/**
* @brief 初始化串口通信
*
*/
void UART_Init(unsigned char baud)
{
TMOD |= 0x20; // 计时器工作模式2
SCON = 0x50; // 串口工作模式1
PCON = 0x80; // 波特率加倍
TH1 = baud;
TL1 = baud;
ES = 1; // 打开串口中断
EA = 1; // 打开总中断
TR1 = 1; // 打开计数器
}
/**
* @brief
*
*/
void UART_Interrupt(void) interrupt 4
{
if (RI) // 如果接收到
{
RI = 0; // 手动清零接收中断标志位
SBUF = SBUF; // 接收到后发出
}
}
/**
* @brief
*
* @param str
*/
void UART_SendString(unsigned char *str)
{
int i = 0;
while (str[i] != '\0') {
SBUF = str[i];
while (TI == 0) {}
TI = 0;
i++;
}
}
void main()
{
UART_Init(0xFA); // 9600波特率
DelayMs(5000);
UART_SendString("hello world");
while (1) {}
}