STC89C52 串口浅谈

文章目录

  • [1. 串口](#1. 串口)
    • [1.1 串口概述](#1.1 串口概述)
    • [1.2 串口相关概念](#1.2 串口相关概念)
    • [1.3 UART](#1.3 UART)
    • [1.4 STC89C52串口](#1.4 STC89C52串口)
      • [1.4.1 串口相关寄存器](#1.4.1 串口相关寄存器)
      • [1.4.2 串口模式图](#1.4.2 串口模式图)
    • [1.5 串口配置简单代码示例](#1.5 串口配置简单代码示例)
      • [1.5.1 UART串口初始化](#1.5.1 UART串口初始化)
      • [1.5.2 串口中断函数模板](#1.5.2 串口中断函数模板)

1. 串口

1.1 串口概述

串口(serial)是一种通讯接口,可以用于两个设备间的数据传输

串口有很多类型,51单片机中所使用的串口类型为UART,即通用异步收发器。当然,还有一些其它类型的串口,如下图所示:

1.2 串口相关概念

以下简单对串口通信中的某些概念进行解释:

TXD:transmit exchange data,用于UART中发送数据,即输出

RXD:receive exchange data,用于UART中接收数据,即输入

总线:连接各个设备的数据传输线路

全双工:双向、同时的数据传输,相对于两个设备而言,使用两根通讯线

半双工:双向但非同时的数据传输,相对于两个设备而言,复用一根通讯线

单工:单向的数据传输,如电视机与遥控器之间。

波特率:串口通信的速率,即数据位发送和接收的速率

同步:数据发送和接收必须共用同一波特率

异步:数据发送和接收可以各自设置波特率

1.3 UART

UART是一种常用的通讯串口,也是51单片机中所用串口。

UART作为一种简单的双向通讯串口,可实现两个设备间的数据传输,不过有以下三个注意点:

  1. TXD和RXD需要交叉连接,即TXD与RXD相接,因为一个设备发送数据,另一个设备必然接收数据
  2. 当数据只需单向传输时,可只使用一根数据线
  3. 当两个设备的电平标准不同时,必须使用电平转换芯片

电平标准:传输线缆中规定的电压与二进制数字0、1的对应关系。最常见的电平标准,如TTL电平,5V为1,0V为0

1.4 STC89C52串口

1.4.1 串口相关寄存器

SCON:串行控制寄存器,用于配置串口通信的模式和某些功能

  1. SMO和SM1 :这两位用于配置串口的工作模式。UART串口有四种工作模式,通常我们采用方式1

  2. SM2、TB8、RB8 :这三位此处不作太多介绍,在工作模式1下,正常情况置0即可,详情见下表:

  3. REN :REN可以理解为 receive enable,即"使接收",将此位赋值为1,则允许串口接收数据;将此位赋值为0,则禁止串口接收数据。REN均需软件置位,硬件无法自动置位。

  4. TI和RI :TI是发送中断请求标志位,RI则是接收中断请求标志位。TI在数据第8位发送结束时(停止位开始发送时),由硬件自动置1,并发送中断请求,在中断响应后,需通过软件复位为0;RI与TI类似,只不过是在数据第8位接收结束时(停止位接收的中间时刻)


PCON :电源控制寄存器

此处仅介绍SMOD,其它位置0即可。
SMOD:此位为波特率选择位。当置为1时,工作模式1、2、3的波特率均加倍;当置为0时,所有工作模式的波特率均不加倍。复位时,由硬件自动置为0。

1.4.2 串口模式图

以下是一幅简单的串口模式图:

其中SBUF串口数据缓存寄存器 ,物理上是两个独立的寄存器,实质上共用相同的地址。使用TXD传输数据时,将数据写入发送寄存器;使用RXD接收数据时,将数据写入接收寄存器。
SBUF8位数据缓存寄存器,最多能发送或接收8位二进制数据。

发送控制器TI接收控制器RI 分别对发送数据接收数据 的过程进行控制,控制波特率 ,即 通信速率的同时,又在合适时间进行中断

配置串口的同时,还需配置定时器1 ,因为单片机中的串口采用定时器1 为其波特率发生器 ,即通过定时器1来配置相应波特率。
注意 ,在串口中配置定时器1时,需采用工作模式2,即8位自动重载模式,且定时器1此时仅用作波特率发生器,故不需作相应中断的配置

定时器1的模式2如下图所示:

1.5 串口配置简单代码示例

1.5.1 UART串口初始化

1.5.2 串口中断函数模板


相关推荐
山木嵌入式11 小时前
【STM32实战】轻量级任务调度器实现
stm32·单片机·rtos·任务调度器·裸机开发
guygg8811 小时前
基于霍尔传感器的BLDC控制源码
单片机·嵌入式硬件
ytttr87311 小时前
DSP 28335 CAN总线通信程序
开发语言·stm32·单片机
一枝小雨13 小时前
RISC-V架构sp寄存器 & RISC-V架构下FreeRTOS任务上下文保存与恢复
单片机·架构·嵌入式·risc-v·rtos·内核原理
BW.SU15 小时前
PackagingTool 嵌入式资源打包合并工具
单片机·二进制·嵌入式开发·资源合并软件·图片打包
长安第一美人15 小时前
工业级实时监控系统开发:PHP+ZMQ+JS 前后端分离架构全解析
前端·嵌入式硬件·架构·交互·rk3588·zmq后端
田甲15 小时前
STM32开发环境迁移实践:从 CubeMX 生成 CMake 工程到 VS Code 编译与调试
stm32·单片机·嵌入式硬件
hoiii18715 小时前
在 STM32F1上读取 BMX055 三轴加速度
stm32·单片机·嵌入式硬件
嵌入式小站16 小时前
STM32 零基础可移植教程 04:按键输入,为什么按下去读到的是 0 或 1
chrome·stm32·嵌入式硬件
三佛科技-1873661339716 小时前
BP8522D贴片SOP7,5V150mA高集成度无VCC电容降压型恒压芯片解析
单片机·嵌入式硬件