单片机串口接收发送数据

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) {}
}

鲸之声为您拼命加载中...