【MCS-51单片机汇编语言】期末复习总结⑥——串口通信(题型六)

news2024/11/18 2:58:00

文章目录

  • 知识准备
    • 发送/接收缓冲器 SBUF
    • 串口通信控制寄存器SCON
    • 电源控制寄存器 PCON
    • 各个工作方式波特率的设定
  • 常考题型
    • 例题1
        • 题目描述
        • 题目解析
        • 题解
    • 例题2
        • 题目描述
        • 题解

在这里插入图片描述

知识准备

发送/接收缓冲器 SBUF

  • 单片机在发送或接收数据的前先将数据存储在SBUF中;
  • 接收:MOV A, SUBF
  • 发送:MOV SUBF, A

串口通信控制寄存器SCON

D7D6D5D4D3D2D1D0
SM0SM1SM2RENTB8RB8TIRI
  • SM0、SM1决定串行口的工作方式共四种组合,如下表所示:
M1M0方式帧格式波特率
00方式08位移位寄存器晶振 / 12
01方式110位UART可变,由定时器控制
10方式210位UART晶振 / 64或∫晶振 / 32
11方式310位UART可变,由定时器控制
  • SM2:多机控制位;
  • REN:允许串行口接收控制位:
    • 0:禁止;
    • 1:允许;
  • TB8:发送第9位数据;
  • RB8:接收第9位数据;
  • TI:发送中断标志;
  • RI:接收中断标志;

电源控制寄存器 PCON

D7D6D5D4D3D2D1D0
SMODGF1GF0PDIDL
  • SMOD:串行口波特率系数控制位;

各个工作方式波特率的设定

  • 在串行通信中,收发双方的波特率必须一致。
  • 方式0的波特率:∫OSC / 12(∫OSC 是晶振频率);
  • 方式2的波特率:(2SMOD / 64) • ∫OSC
  • 方式1方式3的波特率:(2SMOD / 32) • T1的溢出率 = (2SMOD / 32) • ( ∫OSC / 12(256 - X);(注意一般使用T1的方式2作为波特率发生器);

常考题型

例题1

题目描述

  • MCS51单片机的时钟频率为u=11.0592MHZ,选用定时器T1工作在方式2作为波特率发生器,要求产生4800bit/s的波特率,求T1的计数初值。若串行口工作在方式1,允许接收,允许串行口中断,试写出该单片机串行口的初始化程序。

题目解析

本题可分为两个小问题看待。首先是求T1的初值:可根据方式1的波特率公式(2SMOD / 32) • ( ∫OSC / 12(256 - X)解出初值X的值。

  • 假设SMOD = 0(因为题目并未给出),则方式1的波特率 = (2SMOD / 32) • ( ∫OSC / 12(256 - X),代入数值得:
  • 4800 = (20 /32) • (11.0953 * 106 ) / 12(256 - X),解得 X = FAH;
  • 所以TH1 = TL1 = 0FAH

其次是写出初始化程序:

  • 根据题目要求串行口工作在方式1,允许接收,可以得出SCON = 0101 0000 = 50H
  • 由允许串行口中断可以得出 IE寄存器中的EA、ES必须置为1;
  • 由选用定时器1工作在方式2可得出 TCON = 0010 0000 = 20H

题解

MOV		TMOD,	#20H
MOV		TH1,	#0FAH
MOV		TL1,	#0FAH
SETB	TR1		;启用定时器1
MOV		PCON,	#00H
MOV		SCON,	#50H
SETB	EA
SETB	ES

例题2

题目描述

  • MCS51单片机进行通信。要求甲机将内部RAM地址30H开始存储的20个数据送入乙机器中内部RAM地址40H开始的存储空间中。要求双方的串口均采用方式1、中断方式进行数据传输。波特率为4800bit/s,晶振频率为11.0592MHZ。试分别写出甲乙机器的发送与接收程序。

题解

  • 方式1的波特率 = (2SMOD / 32) • ( ∫OSC / 12(256 - X),代入数值得:
  • 4800 = (20 /32) • (11.0953 * 106 ) / 12(256 - X),解得 X = FAH;
  • 所以TH1 = TL1 = 0FAH

甲机(发送数据)

	ORG		0000H
	AJMP	MAIN
	ORG		0023H		;串行口中断入口
	AJMP	SOUT		;跳转到中断服务程序
	ORG		0030H
MAIN:
	MOV		SCON,	#40H;采用方式1,且禁止接收
	MOV		TMOD,	#20H;定时器采用方式2
	MOV		TH1,	#0FAH;定时器初值
	MOV		TL1,	#0FAH
	SETB	TR1			;启用定时器1
	SETB	EA			;打开中断允许总开关
	SETB	ES			;允许串行口中断
	MOV		R0,		#30H;存储数据的地址
	MOV		R7,		#20H;控制循环次数
	MOV		A,		@R0
	MOV		SBUF,	A	;先将数据存储至SBUF
	DEC		R7			;R7-1
	SJMP	$			;死循环,等待中断
SOUT:
	CLR		TI			;发送中断标志位清零
	INC		R0		;R0+1
	MOV		A,		@R0
	MOV		SBUF,	A
	DJNZ	R7,		ENDSI;判断循环是否结束
	CLR		ES			;关闭串行口中断
ENDSI:
	RETI
	END

乙机(接收数据)

	ORG		0000H
	AJMP	MAIN
	ORG		0023H		;串行口中断入口
	AJMP	SOUT		;跳转到中断服务程序
	ORG		0030H
MAIN:
	MOV		SCON,	#50H;采用方式1,且允许接收
	MOV		TMOD,	#20H;定时器采用方式2
	MOV		TH1,	#0FAH;定时器初值
	MOV		TL1,	#0FAH
	SETB	TR1			;启用定时器1
	SETB	EA			;打开中断允许总开关
	SETB	ES			;允许串行口中断
	MOV		R0,		#40H;存储数据的地址
	MOV		A,		@R0
	SJMP	$			;死循环,等待中断
SIN:
	CLR		RI			;接收中断标志位清零
	MOV		A,		SBUF
	MOV 	@R0,	A
	INC		R0
ENDSI:
	RETI
	END

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32单片机蓝牙APP语音识别取暖器GSM短信超温报警

实践制作DIY- GC0141-蓝牙APP语音识别取暖器 基于STM32单片机设计---蓝牙APP语音识别取暖器 二、功能介绍: 电路:STM32F103C最小系统DS18B20温度传感器 多个按键 LCD1602显示器 1个串口语音识别模块1个5V 加热片 模拟加热蜂鸣器SIM800 GSM短信模块 HC0…

Type-C口统一在即,多节锂电池充放电管理难题何解?

在USB PD3.0时代,100W的充电功率已经能够满足绝大多数便携设备的充电需求,如智能手机、平板电脑、笔记本电脑等。最新的USB PD3.1快充标准,充电功率从原有的100W提升至240W,并支持最大48V的电压输出,将快充场景进一步延…

第四章 部署远程访问服务

♥️作者介绍:奇妙的大歪 ♥️个人名言:但行前路,不负韶华! ♥️个人简介:云计算网络运维专业人员 目录 一.什么是远程访问? 二.远程访问的组成 三.远程访问的方式有哪些? 一、远程访问软件…

2017 年一月联考逻辑真题

2017 年一月联考逻辑真题 真题(2017-26) 26. 倪教授认为,我国工程技术领域可以考虑与国外先进技术合作,但任何涉及核心技术的项目就不能受制于人,我国许多网络安全建设项目涉及信息核心技术。如果全盘引进国外先进技术…

深圳市有什么靠谱的PMP机构推荐吗?

PMP项目管理专业人士资格认证是由美国项目管理协会(Project Management Institute,简称PMI)发起的。PMP作为世界级的项目管理认证证书,拥有着最先进的项目管理知识体系,它严格评估项目管理人员知识技能是否具有高品质的…

Soundful:AI音乐生成器

【产品介绍】 Soundful是一个基于人工智能的AI音乐生成器,可以让你在点击按钮的瞬间,生成适合视频、直播、播客等内容的免版税背景音乐。不仅拥有多种风格和情绪的模板,还可以让你下载高质量的音轨和分轨,以及自定义音乐的参数。…

基于Django Admin+HttpRunner-1.5.6开发简易的接口测试平台

前言 这是一个使用HttpRunner开发接口平台的简单Demo。 新建Django项目 安装依赖包 pip install httprunner1.5.6 -i https://pypi.doubanio.com/simple/ 模型规划 项目Project:包含 名称、创建时间、修改时间测试套件TestSuite:对应HttpRunner的一个…

自学测试半年,终于收到了字节的offer,那一刻我哭出了声...

我是一名毕业于普通一本的化学专业学生,毕业的两年时间里,我一直奔波在化工厂里。每天工作三班倒,下了班就是一包烟一瓶酒,生活过得非常堕落。 原本想着虽然每天很累,但是至少稳定。然而没有想到的是,化工…

【复杂网络建模】——通过平均度和随机概率构建ER网络(Python)

🤵‍♂️ 个人主页:Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 &#x1f4a…

频谱仪设置积分功率

按键作用说明: 1,freq:设置频谱仪显示要采集的中心频率范围,先观察明白要测的是哪一段。 按下freq后,手动输入数字大小,然后从竖着的一列选择单位。 2,SPAN:以扫描频率为中心,信号…

大型企业数智化关键举措太难懂?这本数智平台白皮书带你秒理解

“IDC观点:未来企业都会成为数字原生企业,数智化业务将成为主流,因而企业需要积极探索适合自己的数智化转型方法,统筹结合外部业务商业创新、内部管理变革以及产业互联进程,并密切关注数智化升级和转型过程的安全性和可…

Python的缩进规则

目录 缩进规则 缩进异常 IDLE 开发环境对缩进量的设置 缩进规则 和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用代码缩进和冒号( : )来区分代码块之间的层次。 在 Python 中&…

Android 反编译工具 jadx-gui

jadx-gui 是一种基于 jadx 项目的图形界面工具,用于反编译 Android 应用程序的工具。通过使用jadx-gui,开发人员可以打开 APK(Android应用程序包)文件,并查看其反编译的源代码。这对于分析、理解和调试 Android 应用程…

组合预测模型 | ARIMA-LSTM时间序列预测(Python)

组合预测模型 | ARIMA-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-LSTM时间序列预测(Python)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 ARIMA-LSTM时间序列预测(Python完整源码和数据&#xff09…

设计模式——中介者

1.定义 用一个中介对象封装一系列对象交互,中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。 2.使用场景 1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而…

关于Nginx的那些事

关于Nginx的那些事 一、Nginx的基础nginx VS apache 二、 编译安装Nginx服务1.关闭防火墙,将安装nginx所需软件包传到/opt目录下2.安装依赖包3.创建运行用户、组4.编译安装Nginx5.检查、启动、重启、停止 nginx服务新版本升级: 6.添加 Nginx 系统服务方法…

【机器学习】正则化详解和过拟合的解决

https://blog.csdn.net/weixin_45434953/article/details/130970273 上一篇文章的例子中,如果使用一个四次多项式去拟合房价函数,会导致过拟合问题 而正则化是解决过拟合的一个方法。右图过拟合是因为其三次方项和四次方项的影响,我们再回顾…

ChatGPT们对今后社会生活的影响

探索ChatGPT,协助工作学习创作。加入「阿杰与AI」公众号,一同探讨,一同成长,比他人更进一步。 1.AI、OpenAI、MidJourney发展史2.ChatGPT们对今后社会生活的影响3.目前市面比较好的AI产品介绍4.注册方式汇总5.针对初学者的 ChatG…

C#,码海拾贝(28)——求解“对称正定方程组”的“平方根法”之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

淘宝618每日一猜答案(6月5日) 淘宝大赢家今日答案

淘宝6月5日每日一猜答案是什么&#xff1f;&#xff0c;接下来也会给大家来介绍一下6月5日淘宝大赢家每日一猜的答案。 淘宝每日一猜6月5日答案分享 活动问题&#xff1a;亚特兰蒂斯体型最大的员工 活动答案&#xff1a;【白鲸】 注意&#xff1a;打开手机淘宝&#xff0c;搜…