STC89C51 UART功能:寄存器解析与实例演示
引言
本文将解析STC89C51 UART功能,包括各个寄存器的含义、使用方法、以及一段C语言的实例代码,演示如何通过UART在9600波特率下进行打印输出。
寄存器解析
在STC89C51中,UART功能主要涉及到以下几个寄存器:
-
SCON - 串口控制寄存器
Bit 7 6 5 4 3 2 1 0 | | | | | | | | | | | | | | | └── SM0: 串口工作方式选择 | | | | | | └──── SM1: 串口工作方式选择 | | | | | └────── SM2: 多机通信时,波特率可变 | | | | └──────── REN: 串口接收使能 | | | └────────── TB8: 发送数据的第9位 | | └──────────── RB8: 接收数据的第9位 | └─────────────── TI: 发送中断标志位 └────────────────── RI: 接收中断标志位
-
TMOD - 定时器/计数器模式寄存器
Bit 7 6 5 4 3 2 1 0 | | | | | | | | | | | | | | | └── GATE: 外部中断0和1的触发方式 | | | | | | └────── C/T: 计数器/定时器选择 | | | | | └──────── M1: 工作方式1 | | | | └────────── M0: 工作方式0 | | | └──────────── GATE: 外部中断1触发方式 | | └────────────── C/T: 计数器/定时器选择 | └──────────────── M1: 工作方式1 └────────────────── M0: 工作方式0
-
TL1、TH1 - 定时器1低字节、高字节寄存器
这两个寄存器用于存储定时器1的计数值。
-
TCON - 定时器/计数器控制寄存器
Bit 7 6 5 4 3 2 1 0 | | | | | | | | | | | | | | | └── TF1: 定时器1溢出标志位 | | | | | | └────── TR1: 定时器1运行控制 | | | | | └──────── TF0: 定时器0溢出标志位 | | | | └────────── TR0: 定时器0运行控制 | | | └──────────── IE1: 外部中断1触发标志位 | | └────────────── IE0: 外部中断0触发标志位 | └──────────────── IT1: 外部中断1触发方式 └────────────────── IT0: 外部中断0触发方式
使用方法
初始化UART
首先,我们需要初始化UART的相关寄存器,设置波特率为9600,数据位8位,无校验位。
void initUART() {
TMOD &=