写一段STC15F2K60S2的串口程序要能收发字符串
下面是一个简单的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()函数初始化串口,并在一个无限循环中不断发送字符串
原文地址: https://www.cveoy.top/t/topic/h9xI 著作权归作者所有。请勿转载和采集!