AT89S51单片机串行口通信详解
需积分: 0 99 浏览量
更新于2024-08-19
收藏 1.25MB PPT 举报
"AT89S51单片机的串行口使用及配置"
本文将深入探讨AT89S51单片机的串行口,包括其基本工作原理、四种工作模式,以及如何进行多机通信。串行口作为一种全双工通用异步收发(UART)接口,允许数据在两个方向上同时传输,简化了通信过程并降低了硬件需求。
1. **串行口结构**
AT89S51的串行口由两个独立的接收和发送缓冲器SBUF组成,它们可以同时进行数据的发送与接收。发送缓冲器只能写入,接收缓冲器只能读取,两者共享同一个特殊功能寄存器字节地址99H。控制串行口的寄存器有两个,即SCON和PCON。
2. **串行口控制寄存器SCON**
SCON位于字节地址98H,可位寻址,其位地址范围为98H~9FH。SCON寄存器中的各个位都有特定的功能:
- **SM0和SM1**:选择串行口的工作方式,共有四种模式,分别为方式0、1、2和3,这些模式决定了波特率的生成方式以及是否支持多机通信。
- **SM2**:用于多机通信控制,当设置为1时,在方式2和3下,只有接收到的第9位(RB8)为“1”时,才会引发中断请求并将前8位数据放入SBUF。若SM2=0,则不论第9位如何,都会将数据放入SBUF并请求中断。
- **REN**:允许串行接收,通过软件设置,REN=1启用接收,REN=0则禁止。
- **TB8**:在方式2和3中,TB8作为发送的第9位数据,通常用于奇偶校验或在多机通信中区分地址帧和数据帧,TB8=1表示地址帧,TB8=0表示数据帧。
- **RB8**:在接收时,RB8保存了接收到的第9位数据,其作用在不同工作模式下有所不同。
3. **串行通信的C51编程**
在给出的甲机发送程序中,可以看到如何使用C51语言来操作串行口。`#include <reg51.h>`包含了与单片机相关的寄存器定义。`sbit p=PSW^0;`定义了PSW寄存器的第0位p,用于奇偶校验。`unsigned char code Tab[ ];`定义了一个全局数组,存储流水灯显示数据。`Send(unsigned char dat)`函数负责发送一个字节数据,它将ACC寄存器的值赋给要发送的数据,设置TB8位,然后将数据写入SBUF,等待发送完成。
通过以上分析,我们可以了解到AT89S51单片机串行口的工作机制和编程方法,这对于理解和应用单片机的串行通信至关重要。无论是简单的点对点通信还是复杂的多机通信网络,理解这些基础知识都能帮助我们有效地设计和实现通信方案。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-02-03 上传
2020-08-15 上传
点击了解资源详情
2022-06-19 上传
678 浏览量
2021-04-22 上传
魔屋
- 粉丝: 26
- 资源: 2万+
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍