STC15W串口通信的一些梳理

由于控制串口1进行通信移植到串口3出现了阻力,因此很有必要对串口通信进行更进一步的梳理》》》》

 

一 STC15W串口对应引脚:

 

 由此我们得到四个串口引脚分别为:串口1:P3 .0 P3.1:串口2:P1.0 P1.1:串口3:P0.0 P0.1:串口4:  P0.2 P0.3。

二 非中断法的串口通信:

在信息的传输过程中,一个完整的串行数据帧包括发送起始位,发送的字节,和发送停止位。 波特率就是指单位时间的码元传输速率。因此,一个完整的信息传输如图所示:

那么,如何配置这些寄存器呢?

寄存器主要包括四大寄存器:

 

1. SCON串行口控制寄存器我们主要使用SM0,SM1,REN。TI,RI。

 因此大多数配置SCON=0x50;同样,工作选择方式也多选择方式1.

 

2. PCON

这个寄存器我们主要使用他的最高位SMOD位:

 

 

 我们一般都使用SMOD=0;

3.辅助寄存器AUXR,决定串口位1T 还是12T。

 5. ES 和 EA寄存器

示例:

void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR |= 0x04; //定时器2时钟为Fosc,即1T
T2L = 0xE0; //设定定时初值
T2H = 0xFE; //设定定时初值
AUXR |= 0x10; //启动定时器2
}

 

posted @   会咬鸢的风  阅读(1569)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示