[牛人杂谈] 编写一段51单片机用IO口模拟UART发送数据的代码

[复制链接]
358|2
编写一段51单片机用IO口模拟UART发送数据的代码
小岛西岸来信 发表于 2025-10-2 11:27 | 显示全部楼层
以下是 51 单片机 IO 模拟 UART 发送代码说明:定义 TX 引脚,用定时器 0 产生波特率延时。发送函数先拉低起始位,再循环发送 8 位数据位(低位先送),最后拉高停止位。通过_nop_() 微调延时确保时序,主函数调用发送函数发送字节,实现标准 UART 异步通信。
野玫瑰 发表于 2025-10-2 12:24 | 显示全部楼层
#include <reg51.h>
sbit TX=P3^1; // 发送引脚

void delay104us() { // 9600波特率位宽延时
    TH0=0xFC; TL0=0x66; TR0=1;
    while(!TF0); TF0=0; TR0=0;
}

void sendByte(unsigned char dat) {
    unsigned char i;
    TX=0; delay104us(); // 起始位
    for(i=0;i<8;i++){ // 数据位
        TX=dat&1; dat>>=1; delay104us();
    }
    TX=1; delay104us(); // 停止位
}

void main() {
    TMOD=0x01; // 定时0方式1
    while(1){sendByte('H');}
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

138

帖子

0

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