打印
[应用方案]

使用赛元MCU实现简易串口通信

[复制链接]
31|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Bblythe|  楼主 | 2024-10-5 08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

最近在用赛元的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功能简单易用,非常适合入门级项目或小型嵌入式应用。如果有问题或者更好的优化建议,欢迎交流!


使用特权

评论回复
沙发
公羊子丹| | 2024-10-5 08:32 | 只看该作者
这个代码真不错,正好我最近也在搞串口通信,参考下!

使用特权

评论回复
板凳
周半梅| | 2024-10-5 08:32 | 只看该作者
赛元MCU确实挺适合小项目,之前没怎么用过,看了你这代码觉得还挺简单的。

使用特权

评论回复
地板
帛灿灿| | 2024-10-5 08:33 | 只看该作者
请教一下,波特率改成115200是不是只要调整TH1值就行了?

使用特权

评论回复
5
童雨竹| | 2024-10-5 08:33 | 只看该作者
串口回显功能很实用,尤其是调试的时候,能及时看到数据返回。

使用特权

评论回复
6
万图| | 2024-10-5 08:33 | 只看该作者
刚好有块赛元板子,拿来试试这段代码,谢谢分享!

使用特权

评论回复
7
Wordsworth| | 2024-10-5 08:33 | 只看该作者
代码很清晰,对新手很友好,赛元的UART配置比我想象中还简单。

使用特权

评论回复
8
Pulitzer| | 2024-10-5 08:34 | 只看该作者
这个中断处理得很干净,接收和发送都搞定了,直接用没问题!

使用特权

评论回复
9
Uriah| | 2024-10-5 08:34 | 只看该作者
我也在用赛元的MCU,不过我是做I2C的,回头再搞搞串口通信。

使用特权

评论回复
10
Clyde011| | 2024-10-5 08:34 | 只看该作者
赛元的芯片真的便宜,拿来做这种小项目性价比挺高的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

3528

帖子

0

粉丝