最近在用赛元的MCU做一个小项目,项目需求是通过串口实现PC与MCU之间的数据通信。赛元MCU自带UART模块,配置起来相对简单。我写了一个简易的代码,用来接收PC发来的数据,并原样返回。分享给大家参考一下!
配置步骤:- 初始化串口,设置波特率为9600。
- 在中断中接收数据,并将接收到的数据返回。
代码示例:- #include "SC51F32X.h"
- void UART_Init() {
- SCON = 0x50; // 设置串口模式1,8位数据,1位停止位
- TMOD |= 0x20; // 设置定时器1为模式2,用于产生波特率
- TH1 = 0xFD; // 设置波特率为9600
- TR1 = 1; // 启动定时器1
- ES = 1; // 使能串口中断
- EA = 1; // 使能全局中断
- }
- void UART_Interrupt() interrupt 4 {
- if (RI) {
- char received_data = SBUF; // 读取接收到的数据
- RI = 0; // 清除接收中断标志
- SBUF = received_data; // 将数据返回给发送方
- while (!TI); // 等待发送完成
- TI = 0; // 清除发送中断标志
- }
- }
- void main() {
- UART_Init(); // 初始化串口
- while (1) {
- // 主循环中无特殊操作,等待中断处理
- }
- }
代码说明:- UART_Init() 函数负责串口的初始化,设置波特率和中断。
- 在中断服务程序中,接收数据并通过串口返回给发送方,简单实现了回显功能。
这个例子适合一些简单的串口通信应用,比如传感器数据采集或调试信息反馈。赛元的MCU功能简单易用,非常适合入门级项目或小型嵌入式应用。如果有问题或者更好的优化建议,欢迎交流!
|