汇编十三、串口

news2025/1/11 16:46:42

1、通信相关概念

(1)单工:只能接收或只能发送数据。

(2)半双工:既能发送数据,也能接收数据,但不能同时进行。

(3)全双工:可以同时进行发送和接收数据。

(4)单片机中常用的通信物理接口:I2C、SPI、USB、CAN、UART等。

2、串口

(1)串口:串行数据通信接口。

(2)51单片机串口为全双工模式。

(3)串口数据的一帧格式:UART frame = 起始位 + 数据位 +校验位 + 停止位。

3、寄存器

3.1、SBUF:串口数据缓冲器

(1)SBUF 物理上是有两个,逻辑地址只有一个。

(2)51单片机设有2个独立的接收、发送缓冲器,可以同时接收和发送数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,因而两个缓冲器可以共用一个地址码(99H)。两个缓冲器统称串行特殊功能寄存器SBUF。

(3)MOV  A,SBUF  ;接收

(4)MOV  SBUF,A  ;发送

3.2、SCON:串行口控制寄存器

(1)SMO位和SM1:串行口方式选择(常用的就是方式1)

(2)SM2位:多机通信位。

(3)REN:允许/禁止串行接收控制位。

(4)TB8,RB8,涉及到校验位,当下已经不用,奇偶校验误码率太高。校验可接收到数据后采用CRC校验。

(5) TI ,RI  中断标志位(硬件自动置位,必须软件清0),其他中断是中断服务程序执行完,中断标志位就自动清零了。

3.3、PCON:电源控制寄存器

(1)不可位寻址。

(2)SMOD为波特率选择位。

4、波特率计算

参照数据手册和STC-ISP软件。

5、示例程序

5.1、功能

(1)PC机通过串口发送数据到MCU,MCU将接收到的数据发回给PC机,通过串口助手查看。

(2)串口波特率为4800,串口工作方式为方式1。

5.2、代码

;PC机通过串口发送数据到MCU,MCU将接收到的数据发回给PC机,通过串口助手查看。
;---------------------------------------------------------------------------	
	ORG 0000H     ;ORG为程序段说明伪指令,它向汇编程序说明该程序段的起始地址,所以可以当中断向量地址用
	LJMP L_Main   ;跳转到L_Main标号处
	
	ORG 0023H     ;串口中断向量地址
	LJMP I_UART     ;跳转到I_UART标号处
	
L_Main:
	;your code
	;串口初始化,波特率4800
	ORL		PCON,#80H   ;使能波特率倍速位SMOD;PCON值与0x80H相或
	MOV TMOD,#0x20      ;定时器1为8位自动装载模式
	MOV TL1, #0F3H		;设置定时初始值,字母开头的16进制字母前面要加0
	MOV	TH1, #0F3H		;设置定时重载值

	MOV SCON,#0x50      ;8位数据,可变波特率
	SETB EA             ;总中断允许控制位设置为1
	SETB ES             ;串行口中断允许位
	
	CLR	 ET1			;关闭定时器1溢出中断
	SETB TR1            ;定时器1开始计时
	
;---------------------------------------
L_loop:
	SJMP L_Loop        ;相对转移
;---------------------------------------

F_UartSendByte:
   	MOV SBUF,A   ;中断中已把要发送的内容赋到A中
	JNB TI,$     ;发送完成;TI为0则跳转到当前位置$,等于1则往下执行;等于1则说明发送完成
	CLR TI       ;清发送中断请求标志位
	RET          ;子程序返回
	
;---------------------------------------
I_UART:	                  ;只处理接收程序
	PUSH ACC              ;ACC地址单元中的数据压栈
	PUSH PSW              ;程序状态字寄存器压栈
 	JBC TI,L_Exit         ;发送数据产生的中断直接退出中断;TI位为1则跳转到L_Exit处
	CLR RI                ;清中断接收标志位
	MOV A,SBUF            ;接收数据内容赋值给A
	LCALL F_UartSendByte  ;调用子程序   
L_Exit:
	POP	PSW	              ;程序状态字寄存器出栈
	POP ACC               ;ACC地址单元中的数据出栈
	RETI                  ;中断返回
;---------------------------------------
	END

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

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

相关文章

tushare单个股票过去五年的数据整理与预测

文章目录 前言:1. 导入相关包2. 数据预处理3. 构建模型3. 模型训练4. 检查数据6. 工作中其他常用包记录 前言: %md 在量化投资中,计算收益率是更常见的做法,而不是仅计算股价。计算收益率可以更好地反映投资的回报情况&#xff0c…

Pinctrl子系统_01_Pinctrl子系统介绍

本节介绍在Pinctrl子系统中,将会学习哪些内容。 Pinctrl作用 Pinctrl:Pin Controller,顾名思义,就是用来控制引脚的。 一个芯片有成百上千个引脚,这些引用要怎么配置,配置成什么功能,都是通P…

python+django网上书籍商城小说在线阅读分享下载系统k19is-vue

为了解决用户便捷地在网上购物以及下载文件,本文设计和开发了一个网页小说阅读系统。本系统是基于 B/S架构设计,Dango框架 ,Python技术的前台页面设计与实现,使用Mysql数据库管理来完成系统的相关功能。主要实现了管理员与用户的注…

ETSI TS-关于SCP80

描述 GPC_UICC Configuration_v2.0.pdf 中: 规范 ts_102.225v12.1.0 Secured packet structure for UICC based applications.pdf spi kic kid编码 7 TCP/IP 的实现 在发送安全数据包之前,发送实体应使用定义的推送机制打开 TCP/IP 连接 在 ETSI TS 102 226 [9] …

【MATLAB第34期】基于MATLAB的2023年棕熊优化算法BOA优化LSTM时间序列预测模型 优势明显,注释详细,绘图丰富

【MATLAB第34期】基于MATLAB的2023年棕熊优化算法BOA优化LSTM时间序列预测模型 优势明显,注释详细,绘图丰富,适合小白 一、代码优势 1.使用2023年棕熊算法BOA优化LSTM超参数(学习率,隐藏层节点,正则化系数…

chatgpt赋能Python-python_numpy倒序

Python Numpy倒序:简介、使用和优势 简介 Python是一门功能强大的编程语言,提供了众多开源库,其中Numpy是其中最流行的之一。Numpy是Python中的一个数值计算库,提供了一个高效的数组对象和相应的数学函数。它是数据科学家和机器…

Thonny-适合初学者小白的开箱即用的轻量级 Python IDE

如果你是一位Python初学者小白,那最适合Thonny它了,如果不是初学者,请选择PyDev和Pycharm。 Thonny是一款面向初学者小白的轻量级 IDE,可以让初学者更好更快的入门上手 Python,而不致于在环境上浪费过多的时间。 取之 Python&…

chatgpt赋能Python-python_purple

Python Purple: 一个高效的Python IDE Python Purple是Python程序员们最需要的工具之一。它是一款高效的Python IDE,允许用户轻松地创建,编辑和协作开发Python代码。本文将涉及Python Purple的一些重要特点以及它如何提高编码质量和提高生产力。 介绍P…

【利用AI让知识体系化】TypeScript目标:扩展JavaScript能力

I. TypeScript 简介 TypeScript 的起源 TypeScript 的起源是由微软公司开发,其首席架构师是 Anders Hejlsberg。Anders 是 Delphi 和 C# 语言的创始人,于2012年从微软发布了 TypeScript。 TypeScript 诞生的原因是为了解决 JavaScript 的一些缺点&…

Nginx(四)

部署LNMP架构动态网站WordPress LNMPLinuxNginxMySQLPhp 环境 192.168.29.141centos8Nginx1.24.0192.168.29.142centos8MySQL8.0.33192.168.29.143centos8Php7.2.24 关闭firewalld systemctl stop firewalld systemctl disable firewalld 关闭selinux setenforce 0 sed -ir…

网络原理(六):http 协议(上)

目录 HTTP 协议是什么 抓包工具 Fiddler 的下载 使用Fiddler HTTP 请求 (Request) HTTP 请求格式 首行 请求头(Header) Cookie HTTP 协议是什么 还是老样子,在讲解http 之前我们先来了解以下什么叫做 http 。 HTTP(Hyp…

使用百度 PaddleOCR对身份证识别的简单处理

一:引言 本文才用百度的PaddleOCR对身份证进行识别的处理,由于直接使用并未进行对跟多数据集进行训练,当前的效果是对非少数民族的身份证识别率可以达到85%以上,同时要求身份证图片是正面且相对清晰。否则效果不理想,本…

基于java的时间管理系统的设计与实现

背景 要设计一个时间管理系统,通过这个系统能够满足时间管理的管理功能。系统的主要功能包括首页,个人中心,系统公告管理,用户管理,时间分类管理,事件数据管理,目标数据管理,用户日…

【系统软件】源码编译安装ZLIB——Could NOT find ZLIB(missing:ZLIB_LIBRARY ZLIB_INCLUDE_DIR

【系统软件】源码编译安装ZLIB——Could NOT find ZLIB(missing:ZLIB_LIBRARY ZLIB_INCLUDE_DIR 前言一、简介二、源码下载三、解压、构建四、编译五、安装六、安装成功后如下图七、如何使用zlib中的include 前言 今天原本打算源码编译安装protobuf,但是在构建项目…

图神经网络GNN GCN AlphaFold2 虚拟药物筛选和新药设计

文章目录 图神经网络1. Geometric Deep LearningRepresentation learning 表征学习机器学习的数据类型:序列、网格、图引出GNN 2. Graph Neural NetworksMachine Learning Lifecyclelearning graph is hardFeature Learning in GraphsWays to Analyze NetworksA Nai…

chatgpt赋能Python-python_plot标题

Python Plot 标题:如何让你的数据可视化更加引人注目 Python是数据科学和可视化领域中最受欢迎的编程语言之一。Python的可视化库让数据可视化变得非常容易、灵活和美观。 在创建一个数据可视化时,最重要的是让图表或图形作品的标题尽可能引人注目。这…

chatgpt赋能Python-python_plt_标题

Python plt:用Python创建出色的可视化图表 Python是一种广泛使用的高级编程语言,它被用于各种不同的领域,包括Web开发、数据科学、人工智能和计算机视觉等。Python拥有一个强大的生态系统,其中包括了大量的第三方库和工具&#x…

chatgpt赋能Python-python_property描述符

Python Property描述符:什么是Property? 介绍 在Python中,属性是一种非常强大的方式,在代码中隐藏数据并将其保护起来。我们可以使用属性来让代码更可读,更易于维护,并降低代码中的错误风险。 Python中&a…

一、服务端渲染技术NUXT

文章目录 一、服务端渲染技术NUXT1.1 什么是服务端渲染1.2 什么是NUXT 2、NUXT环境初始化2.1 下载压缩包2.2解压2.3修改package.json2.4修改nuxt.config.js2.5终端中进入项目目录安装依赖2.6 引入element-ui2.7 测试运行2.8 NUXT目录结构 3、封装axios3.1 安装axios3.2 封装axi…

抖音矩阵系统开发分析(附代码部分)

简介 本文档旨在介绍抖音SEO源码开发相关内容,包括技术架构、关键模块、实现原理等方面的内容。 技术架构 抖音SEO源码采用的是分布式架构。整个系统可以分为以下几个模块: 数据抓取模块:负责从抖音服务器抓取数据,并进行去重和…