下面是一个简单的STC15F2K60S2串口程序,实现了收发字符串的功能:

#include <STC15F2K60S2.H>

#define FOSC 11059200UL   // 系统时钟频率
#define BAUD 9600         // 串口波特率

void UART_Init()
{
    TMOD = 0x20;    // 设置定时器1为工作方式2
    TH1 = TL1 = -(FOSC/12/32/BAUD);    // 设置波特率重装值
    PCON = 0x00;    // SM0 = 0, SM1 = 1, 波特率不加倍
    SCON = 0x50;    // 设置串口工作方式1,允许接收
    TR1 = 1;    // 启动定时器1
    EA = ES = 1;    // 打开总中断和串口中断
}

void UART_SendByte(unsigned char dat)
{
    SBUF = dat;    // 将数据写入发送缓冲区
    while(!TI);    // 等待发送完成
    TI = 0;    // 清除发送完成标志位
}

void UART_SendString(unsigned char *str)
{
    while(*str)
    {
        UART_SendByte(*str++);    // 逐个发送字符串中的字符
    }
}

void UART_Receive() interrupt 4
{
    unsigned char dat;
    if(RI)
    {
        RI = 0;    // 清除接收中断标志位
        dat = SBUF;    // 读取接收到的数据
        // 这里可以对接收到的数据进行处理
    }
}

void main()
{
    UART_Init();    // 初始化串口
    while(1)
    {
        UART_SendString("Hello, world!");    // 发送字符串
        DelayMs(1000);    // 延时1秒
    }
}

这段代码中,首先定义了系统时钟频率和串口波特率的常量。然后,UART_Init()函数用于初始化串口,设置波特率重装值、串口工作方式等。UART_SendByte()函数用于发送一个字节的数据,将数据写入发送缓冲区,并等待发送完成。UART_SendString()函数用于发送字符串,通过调用UART_SendByte()函数逐个发送字符串中的字符。UART_Receive()函数是串口中断服务函数,当接收到数据时会触发串口中断,将接收到的数据读取出来并进行处理。main()函数中,通过调用UART_Init()函数初始化串口,并在一个无限循环中不断发送字符串

写一段STC15F2K60S2的串口程序要能收发字符串

原文地址: https://www.cveoy.top/t/topic/h9xI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录