AT89S51单片机串行口工作模式与通信细节

需积分: 0 6 下载量 141 浏览量 更新于2024-08-19 收藏 1.25MB PPT 举报
"AT89S51单片机的串行口使用和配置注意事项" AT89S51单片机的串行口是一个全双工的通用异步收发(UART)接口,允许数据同时双向传输。串行通信的特点在于收发双方使用各自独立的时钟,无需同步时钟线,简化了连接并易于实现。本节主要讨论串行口的结构、工作方式和控制寄存器SCON。 串行口由两个独立的接收和发送缓冲器SBUF组成,它们共享一个特殊功能寄存器地址(99H)。发送缓冲器只能写入数据,而接收缓冲器只能读取。串行口的控制寄存器SCON(字节地址98H)用于设置工作模式和管理通信参数。 SCON寄存器的各个位具有特定功能: 1. SM0和SM1:这两位决定了串行口的工作方式,共有4种工作模式,每种模式对应不同的波特率和通信特性,如方式0用于简单的波特率固定的波特率通信,方式1和方式2支持可变波特率,方式3则支持多机通信。 2. SM2:在方式2和方式3下,此位用于多机通信控制。若SM2置1,在接收时,只有当接收到的第9位数据为1时,才会引发中断并存储数据。如果SM2为0,不论第9位数据如何,都会存储前8位数据并触发中断。 3. REN:该位控制串行接收的允许。当REN为1时,串行口可以接收数据;为0时,接收被禁止。 4. TB8:在方式2和方式3中,TB8是待发送的第9位数据,通常用于奇偶校验或在多机通信中表示数据帧类型(TB8=1为地址帧,TB8=0为数据帧)。 5. RB8:在接收时,此位存储接收到的第9位数据,其含义取决于当前的工作模式。 关于波特率的设定,特别需要注意的是,在12MHz或6MHz的时钟频率下,计算出的波特率可能会有误差。为了获得更精确的波特率,可以选择11.0592MHz的时钟频率。此外,如果选择非常低的波特率,如55,可以设置定时器T1为方式1定时,但此时由于中断响应时间和指令执行时间的影响,波特率会有误差,可以通过调整初值来修正。 在实际应用中,还需要考虑中断服务程序的编写,特别是在低波特率和方式1下,当T1溢出时,需要在中断服务程序中重新加载初值以维持正确的波特率。 串行通信的标准和C51编程也是理解串行口操作的重要部分,涵盖了不同接口协议(如RS-232)的使用,以及如何用C51语言编写串行通信程序。熟悉这些知识可以帮助开发者有效地利用AT89S51单片机的串行口功能进行通信设计。