[应用方案] 使用赛元MCU实现简易串口通信

[复制链接]
1256|9
 楼主| Bblythe 发表于 2024-10-5 08:32 | 显示全部楼层 |阅读模式

最近在用赛元的MCU做一个小项目,项目需求是通过串口实现PC与MCU之间的数据通信。赛元MCU自带UART模块,配置起来相对简单。我写了一个简易的代码,用来接收PC发来的数据,并原样返回。分享给大家参考一下!

配置步骤:
  • 初始化串口,设置波特率为9600。
  • 在中断中接收数据,并将接收到的数据返回。

代码示例:
  1. #include "SC51F32X.h"

  2. void UART_Init() {
  3.     SCON = 0x50;         // 设置串口模式1,8位数据,1位停止位
  4.     TMOD |= 0x20;        // 设置定时器1为模式2,用于产生波特率
  5.     TH1 = 0xFD;          // 设置波特率为9600
  6.     TR1 = 1;             // 启动定时器1
  7.     ES = 1;              // 使能串口中断
  8.     EA = 1;              // 使能全局中断
  9. }

  10. void UART_Interrupt() interrupt 4 {
  11.     if (RI) {
  12.         char received_data = SBUF; // 读取接收到的数据
  13.         RI = 0;                    // 清除接收中断标志
  14.         SBUF = received_data;      // 将数据返回给发送方
  15.         while (!TI);               // 等待发送完成
  16.         TI = 0;                    // 清除发送中断标志
  17.     }
  18. }

  19. void main() {
  20.     UART_Init();       // 初始化串口
  21.     while (1) {
  22.         // 主循环中无特殊操作,等待中断处理
  23.     }
  24. }

代码说明:
  • UART_Init() 函数负责串口的初始化,设置波特率和中断。
  • 在中断服务程序中,接收数据并通过串口返回给发送方,简单实现了回显功能。

这个例子适合一些简单的串口通信应用,比如传感器数据采集或调试信息反馈。赛元的MCU功能简单易用,非常适合入门级项目或小型嵌入式应用。如果有问题或者更好的优化建议,欢迎交流!


公羊子丹 发表于 2024-10-5 08:32 | 显示全部楼层
这个代码真不错,正好我最近也在搞串口通信,参考下!
周半梅 发表于 2024-10-5 08:32 | 显示全部楼层
赛元MCU确实挺适合小项目,之前没怎么用过,看了你这代码觉得还挺简单的。
帛灿灿 发表于 2024-10-5 08:33 | 显示全部楼层
请教一下,波特率改成115200是不是只要调整TH1值就行了?
童雨竹 发表于 2024-10-5 08:33 | 显示全部楼层
串口回显功能很实用,尤其是调试的时候,能及时看到数据返回。
万图 发表于 2024-10-5 08:33 | 显示全部楼层
刚好有块赛元板子,拿来试试这段代码,谢谢分享!
Wordsworth 发表于 2024-10-5 08:33 | 显示全部楼层
代码很清晰,对新手很友好,赛元的UART配置比我想象中还简单。
Pulitzer 发表于 2024-10-5 08:34 | 显示全部楼层
这个中断处理得很干净,接收和发送都搞定了,直接用没问题!
Uriah 发表于 2024-10-5 08:34 | 显示全部楼层
我也在用赛元的MCU,不过我是做I2C的,回头再搞搞串口通信。
Clyde011 发表于 2024-10-5 08:34 | 显示全部楼层
赛元的芯片真的便宜,拿来做这种小项目性价比挺高的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

162

主题

6081

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部