当前位置: 首页 > news >正文

51单片机的五类指令(二)——算术运算类指令

目录

一、加法指令

(一)不带进位加法指令(ADD)

(二)带进位加法指令(ADDC)

(三)加 1 指令(INC)

(四)十进制调整指令(DA)

二、减法指令

(一)带借位减法指令(SUBB)

(二)减 1 指令(DEC)

三、乘法指令

四、除法指令


        单片中寻址是为了找到操作数,而各类指令则是为了对操作数进行操作。本篇文章将介绍51单片机中的第二类指令 —— 算术运算类指令。

        51 单片机的算术运算类指令是汇编语言编程里极为重要的一类指令,其主要功能是用于进行数据的算术运算,包括加法、减法、乘法、除法等运算操作。以下是对这些指令的详细介绍。

一、加法指令

        在 51 单片机的汇编语言里,算术运算类指令中的加法指令主要包含不带进位加法指令带进位加法指令加 1 指令以及十进制调整指令。

(一)不带进位加法指令(ADD)

        指令格式:ADD A, <源操作数>

        这类指令是把累加器 A 的内容与源操作数相加,结果存于累加器 A 中。忽略进位:A = A + 源操作数。以下是源操作数寻址方式及示例:

1、寄存器寻址

MOV A, #20H    ; 将立即数20H送入累加器A
MOV R0, #30H   ; 将立即数30H送入寄存器R0
ADD A, R0      ; A = A + R0,结果A = 50H

2、直接寻址

MOV A, #20H    ; 将立即数20H送入累加器A
MOV 30H, #30H  ; 将立即数30H送入直接地址30H单元
ADD A, 30H     ; A = A + (30H),结果A = 50H

3、寄存器间接寻址

MOV A, #20H    ; 将立即数20H送入累加器A
MOV R0, #30H   ; 将立即数30H送入寄存器R0
MOV @R0, #30H  ; 将立即数30H送入以R0内容为地址的单元(即30H单元)
ADD A, @R0     ; A = A + (@R0),结果A = 50H

4、立即寻址

MOV A, #20H    ; 将立即数20H送入累加器A
ADD A, #30H    ; A = A + 30H,结果A = 50H

5、解释不带进位

        “不带进位” 指的是在执行加法运算时,不考虑进位标志(CY)的值

        进位标志 CY 主要用于记录加法运算中是否产生了进位情况,在不带进位加法指令中,它不会影响当前的加法操作。

        例如,当你使用 ADD 指令做两个数相加时,不会把之前运算遗留下的进位值加进来

MOV A, #0FFH    ; 将立即数0FFH(十进制255)送入累加器A
ADD A, #01H     ; 执行A = A + 1,即255 + 1

        执行ADD A, #01H时,0FFH(二进制1111 1111)加上01H(二进制0000 0001),相加结果为1 0000 0000。

        由于累加器A是 8 位寄存器,只能存储低 8 位结果,所以A中的值变为00H。而最高位产生的进位(即第 9 位的1)会被记录到进位标志CY中,此时CY会被置为1。

(二)带进位加法指令(ADDC)

        指令格式:ADDC A, <源操作数>

        该指令将累加器 A 的内容、源操作数以及进位标志 CY 的值相加,结果存于累加器 A 中。不忽略进位:A = A + 源操作数 + CY

        其源操作数的寻址方式与不带进位的加法指令相同,就不多作阐述。在此以一个产生进位的情况,展示其与不带进位加法指令的不同。

MOV A, #0FFH    ; 将立即数 0FFH(十进制 255)送入累加器 A
SETB CY         ; 设置进位标志 CY 为 1
ADDC A, #01H    ; 执行 A = A + 1 + CY,即 255 + 1 + 1

        在此我们需要先设置进位标志,因为是相加之后才产生了CY值的变化,如果一开始值就CY就为0,那么相加时CY就是0,要相加之后,CY才会变为1。

(三)加 1 指令(INC)

        指令格式:INC <操作数>。这类指令把指定的操作数加 1,操作数可以是累加器寄存器直接地址寄存器间接寻址的单元

1、累加器 A 加 1

MOV A, #20H    ; 将立即数20H送入累加器A
INC A          ; A = A + 1,结果A = 21H

2、寄存器加 1

MOV R0, #20H   ; 将立即数20H送入寄存器R0
INC R0         ; R0 = R0 + 1,结果R0 = 21H

3、直接地址单元加 1

MOV 30H, #20H  ; 将立即数20H送入直接地址30H单元
INC 30H        ; (30H) = (30H) + 1,结果(30H) = 21H

4、寄存器间接寻址单元加 1

MOV R0, #30H   ; 将立即数30H送入寄存器R0
MOV @R0, #20H  ; 将立即数20H送入以R0内容为地址的单元(即30H单元)
INC @R0        ; (@R0) = (@R0) + 1,结果(30H) = 21H
(四)十进制调整指令(DA)

1、指令作用

        在进行 BCD 码加法运算时,由于计算机是按照二进制规则进行加法运算的,可能会出现结果不符合 BCD 码规则的情况

        DA 指令可以根据累加器 A 的运算结果以及进位标志 CY、辅助进位标志 AC 的状态,对累加器 A 中的内容进行调整,从而得到正确的 BCD 码结果

2、使用场景

        DA 指令通常在使用 ADD 或 ADDC 指令完成 BCD 码加法运算后使用

        例如,在处理与十进制数相关的显示、计算等场景中,如电子时钟的时间显示、财务数据的计算等,会采用 BCD 码来表示十进制数,这时就要使用 DA 指令来保证加法运算结果的正确性。

3、DA 指令的调整规则

        若累加器A的低4位大于9或者辅助进位标志AC为1,则累加器A的低4位加6进行调整。

        若累加器A的高4位大于9或者进位标志CY 为1,则累加器A的高4位加6进行调整。

4、示例代码

MOV A, #28H    ; 将 BCD 码 28 送入累加器 A
MOV R0, #39H   ; 将 BCD 码 39 送入寄存器 R0
ADD A, R0      ; 执行 BCD 码加法,A = A + R0,即 28 + 39
DA A           ; 对加法结果进行十进制调整

5、代码分析

(1)MOV A, #28H:把 BCD 码 28 存入累加器 A。

(2)MOV R0, #39H:将 BCD 码 39 存入寄存器 R0。

(3)ADD A, R0:进行二进制加法运算,28H + 39H = 61H,但在 BCD 码运算中,低 4 位 8 + 9 = 17,已经超过了 BCD 码一位所能表示的最大数 9,此时结果是错误的。

(4)DA A:执行十进制调整指令。因为低4位大于9,所以低4位加6即 61H + 06H = 67H,同时产生进位,CY 置为 1,最终得到正确的 BCD 码结果 67,进位 CY 表示十位上的进位 1。

        注意:DA 指令只能用于 ADD 或 ADDC 指令之后,对减法运算的结果不能进行调整。

二、减法指令

        在 51 单片机的汇编语言里,算术运算类指令中的减法指令主要包含带借位减法指令减 1 指令。

(一)带借位减法指令(SUBB)

        指令格式:SUBB A, <源操作数>

        该指令用于将累加器 A 的内容减去源操作数以及借位标志 CY 的值,结果存于累加器 A 中。此指令常用于多字节减法运算。运算结果:A = A - 源操作数 - CY。

        以下是源操作数寻址方式及示例:

1、寄存器寻址

MOV A, #30H    ; 将立即数 30H 送入累加器 A
MOV R0, #20H   ; 将立即数 20H 送入寄存器 R0
CLR CY         ; 清进位标志 CY,使 CY = 0
SUBB A, R0     ; A = A - R0 - CY,结果 A = 10H

2、直接寻址

MOV A, #30H    ; 将立即数 30H 送入累加器 A
MOV 30H, #20H  ; 将立即数 20H 送入直接地址 30H 单元
CLR CY         ; 清进位标志 CY,使 CY = 0
SUBB A, 30H    ; A = A - (30H) - CY,结果 A = 10H

3、寄存器间接寻址

MOV A, #30H    ; 将立即数 30H 送入累加器 A
MOV R0, #30H   ; 将立即数 30H 送入寄存器 R0
MOV @R0, #20H  ; 将立即数 20H 送入以 R0 内容为地址的单元(即 30H 单元)
CLR CY         ; 清进位标志 CY,使 CY = 0
SUBB A, @R0    ; A = A - (@R0) - CY,结果 A = 10H

4、立即寻址

MOV A, #30H    ; 将立即数 30H 送入累加器 A
CLR CY         ; 清进位标志 CY,使 CY = 0
SUBB A, #20H   ; A = A - 20H - CY,结果 A = 10H

5、对标志位的影响

(1)进位标志 CY:若减法运算产生借位,CY 会被置为 1;反之则置为 0。

(2)辅助进位标志 AC:当低四位相减产生借位时,AC 会被置为 1;否则置为 0。

(3)溢出标志 OV:若运算结果超出了有符号数的表示范围( - 128 到 + 127),OV 会被置为 1;反之则置为 0。

(4)奇偶标志 P:累加器 A 中 “1” 的个数为奇数时,P 置为 1;为偶数时,P 置为 0。

(二)减 1 指令(DEC)

        指令格式:DEC <操作数>

        这类指令把指定的操作数减 1,操作数可以是累加器A寄存器直接地址寄存器间接寻址的单元

1、累加器 A 减 1

MOV A, #20H    ; 将立即数 20H 送入累加器 A
DEC A          ; A = A - 1,结果 A = 1FH

2、寄存器减 1

MOV R0, #20H   ; 将立即数 20H 送入寄存器 R0
DEC R0         ; R0 = R0 - 1,结果 R0 = 1FH

3、直接地址单元减 1

MOV 30H, #20H  ; 将立即数 20H 送入直接地址 30H 单元
DEC 30H        ; (30H) = (30H) - 1,结果(30H) = 1FH

4、寄存器间接寻址单元减 1

MOV R0, #30H   ; 将立即数 30H 送入寄存器 R0
MOV @R0, #20H  ; 将立即数 20H 送入以 R0 内容为地址的单元(即 30H 单元)
DEC @R0        ; (@R0) = (@R0) - 1,结果(30H) = 1FH

三、乘法指令

        在 51 单片机的汇编语言里,乘法指令只有一条,即 MUL AB

1、指令功能

        该指令用于将累加器 A 和寄存器 B 中的两个 8 位无符号整数相乘得到一个 16 位的乘积结果。其中,乘积的低 8 位存放在累加器 A 中,高 8 位存放在寄存器 B 中。 

2、示例代码

MOV A, #05H    ; 将立即数 05H 送入累加器 A
MOV B, #03H    ; 将立即数 03H 送入寄存器 B
MUL AB         ; 执行乘法运算,A × B = 05H × 03H = 0FH

3、代码分析

(1)MOV A, #05H:把立即数 05H 传送到累加器 A 中。

(2)MOV B, #03H:将立即数 03H 传送到寄存器 B 中。

(3)MUL AB:执行乘法操作,05H乘以03H,结果为 0FH 。由于结果小于 256,所以高 8 位为 00H,存于寄存器 B 中;低 8 位 0FH 存于累加器 A 中。

4、对标志位的影响

(1)进位标志 CY:执行 MUL AB 指令后,进位标志 CY 总是被清 0,即 CY = 0。这是因为进位信息已经包含在寄存器 B 中,所以 CY 不再用于表示进位情况。

(2)溢出标志 OV:若乘积结果大于 255(即 B 中的值不为 0),则溢出标志 OV 被置为 1若乘积结果小于等于 255(即 B 中的值为 0),则 OV 被清 0。可以通过判断 OV 的值来确定乘积结果是否超出了 8 位的表示范围。

(3)奇偶标志 P:累加器 A 中 “1” 的个数为奇数时,P 置为 1;为偶数时,P 置为 0。

5、注意事项

(1)MUL AB 指令只能进行 8 位无符号整数的乘法运算。如果需要进行有符号数乘法或者多字节乘法,需要通过软件编程的方式来实现。

(2)在使用乘法指令时,要注意结果的存储和处理,特别是当 OV = 1 时,需要考虑如何处理高 8 位的结果。

四、除法指令

        在 51 单片机汇编语言里,除法指令仅有一条,即 DIV AB

1、指令功能

        此指令用于把累加器 A 中的 8 位无符号整数除以寄存器 B 中的 8 位无符号整数,得到的商存于累加器 A 中余数存于寄存器 B 中

2、示例代码

MOV A, #0AH    ; 将立即数 0AH(十进制 10)送入累加器 A
MOV B, #03H    ; 将立即数 03H(十进制 3)送入寄存器 B
DIV AB         ; 执行除法运算,A ÷ B = 0AH ÷ 03H 

3、代码分析

(1)MOV A, #0AH:把立即数 0AH 传送到累加器 A 中。

(2)MOV B, #03H:将立即数 03H 传送到寄存器 B 中。

(3)DIV AB:执行除法操作,10 ÷ 3 得到商为 3,余数为 1。所以执行完该指令后,累加器 A 中的值变为 03H寄存器 B 中的值变为 01H

4、对标志位的影响

(1)进位标志 CY:执行 DIV AB 指令后,进位标志 CY 总是被清 0,即 CY = 0。因为在除法运算里,两数相除不可能产生溢出,所以进位标志不用于表示特定的运算结果信息。

(2)溢出标志 OV:寄存器B中的值为0时,执行除法操作会产生错误(除数不能为 0),此时溢出标志 OV 会被置为 1;若 B 中的值不为 0OV 则被清 0。我们可以通过判断 OV 的值来确定除法运算是否合法

(3)奇偶标志 P:累加器 A 中 “1” 的个数为奇数时,P 置为 1;为偶数时,P 置为 0。

5、注意事项

(1)DIV AB 指令只能进行 8 位无符号整数的除法运算。要是需要进行有符号数除法或者多字节除法,就得通过软件编程的方式来实现。

(2)在使用除法指令之前,要保证寄存器 B 中的值不为 0,否则会使 OV 置 1,导致运算结果错误。你可以在执行除法指令前添加判断逻辑,避免除数为 0 的情况出现。

相关文章:

51单片机的五类指令(二)——算术运算类指令

目录 一、加法指令 &#xff08;一&#xff09;不带进位加法指令&#xff08;ADD&#xff09; &#xff08;二&#xff09;带进位加法指令&#xff08;ADDC&#xff09; &#xff08;三&#xff09;加 1 指令&#xff08;INC&#xff09; &#xff08;四&#xff09;十进制…...

uniapp选择文件使用formData格式提交数据

1. Vue实现 在vue项目中,我们有个文件,和一些其他字段数据需要提交的时候,我们都是使用axios 设置请求头中的Content-Type: multipart/form-data,然后new FormData的方式来进行提交。方式如下: const sendRequest = () => {const formData = new FormData()formData…...

mac Python多版本第三方库的安装路径

终端查看python版本是 3.12&#xff0c;但是pycharm使用的python版本是 3.9 终端正常安装包以后&#xff0c;pycharm都可以正常使用&#xff0c;但是将 pycharm的python换成 3.12 版本&#xff0c;之前安装的库都没有了 通过终端查看安装库的位置&#xff0c;确实是安装到py…...

第 26 场 蓝桥月赛 部分题解

第 26 场 蓝桥月赛 2.灯笼猜谜3.元宵分配4.摆放汤圆5.元宵交友&#xff08;运行超时 通过90%&#xff09; 2.灯笼猜谜 分析&#xff1a;以当前位置为视角&#xff0c;要想移动的距离尽可能的少&#xff0c;按顺序猜谜语&#xff0c;给你一个区间&#xff0c;有三种情况&#xf…...

【Vue3知识】Vue3集成富文本编辑器TinyMCE

Vue3集成富文本编辑器TinyMce 集成一、安装依赖二、基础集成示例1. 组件封装&#xff1a;RichEditor.vue 三、关键配置说明1. **API Key 配置**2. **图片上传处理**3. **多语言支持** 四、完整本地化部署步骤&#xff08;无 API Key&#xff09;五、在父组件中使用六、常见问题…...

pod生命周期

1.init容器&#xff1a;做主容器运行前需要做的准备条件 2.探针 通俗易懂就是检测容器是否正常运行工作 启动探针startupProbe&#xff1a;检测应用是否完成启动 &#xff0c;如果启动则禁用其他探测 直到成功为止&#xff0c;探测失败则杀死容器&#xff0c;容器服从重启策略…...

Oracle数据库数据编程SQL<3.3 PL/SQL 游标>

游标(Cursor)是Oracle数据库中用于处理查询结果集的重要机制&#xff0c;它允许开发者逐行处理SQL语句返回的数据。 目录 一、游标基本概念 1. 游标定义 2. 游标分类 二、静态游标 &#xff08;一&#xff09;显式游标 【一】不带参数&#xff0c;普通的显示游标 1. 显式…...

OLLAMA 未授权访问-漏洞挖掘

1.漏洞描述 Ollama存在未授权访问漏洞。由于Ollama默认未设置身份验证和访问控制功能&#xff0c;未经授权的攻击者可在远程条件下调用Ollama服务接口&#xff0c;执行包括但不限于敏感模型资产窃取、虚假信息投喂、模型计算资源滥用和拒绝服务、系统配置篡改和扩大利用等恶意…...

多线程—线程安全集合类与死锁

上篇文章&#xff1a; 多线程—JUChttps://blog.csdn.net/sniper_fandc/article/details/146713322?fromshareblogdetail&sharetypeblogdetail&sharerId146713322&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目录 1 线程安全的集合类 …...

【鸿蒙5.0】鸿蒙登录界面 web嵌入(隐私页面加载)

在鸿蒙应用中嵌入 Web 页面并加载隐私页面&#xff0c;可借助 WebView 组件来实现。以下是一个完整示例&#xff0c;展示如何在鸿蒙 ArkTS 里嵌入 Web 页面并加载隐私政策页面。 在 HarmonyOS 应用开发中&#xff0c;如果你希望嵌入一个网页&#xff0c;并且特别关注隐私页面加…...

C++轻量HeaderOnly的JSON库

文章目录 1 nlohmann/json库说明2 nlohmann/json特点3 nlohmann/json库的使用方法3.1 引入头文件3.2 解析JSON字符串3.3 访问JSON数据3.4 生成JSON对象3.5 修改JSON数据3.6 将JSON写入文件3.7 遍历JSON对象 4 代码示例4.1 定义JSON数值类型4.2 从STL容器转换到json4.3 string序…...

打包python文件生成exe

下载PyInstaller 官网 pip install pyinstaller验证是否安装成功 pyinstaller --version打包 pyinstaller "C:\Documents and Settings\project\myscript.py"会生成.spec,build,dist三项&#xff0c;其中build,dist为文件夹&#xff0c;dist是最后的可执行文件&a…...

Nginx — Nginx安装证书模块(配置HTTPS和TCPS)

一、安装和编译证书模块 [rootmaster nginx]# wget https://nginx.org/download/nginx-1.25.3.tar.gz [rootmaster nginx]# tar -zxvf nginx-1.25.3.tar.gz [rootmaster nginx]# cd nginx-1.25.3 [rootmaster nginx]# ./configure --prefix/usr/local/nginx --with-http_stub_…...

《Mycat核心技术》第21章:高可用负载均衡集群的实现(HAProxy + Keepalived + Mycat)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 星球项目地址&#xff1a;https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…...

Dynamic WallPaper-壁纸动态-Mac电脑-4K超高清

Dynamic WallPaper-壁纸动态-Mac电脑-4K超高清 文章目录 Dynamic WallPaper-壁纸动态-Mac电脑-4K超高清一、介绍二、效果三、下载 一、介绍 Dynamic Wallpaper for mac版&#xff0c;是一款4K超高清动态壁纸软件&#xff0c;告别单调的静态壁纸&#xff0c;拥抱活泼的动态壁纸…...

MySQL8.4 NDB Cluster 集群配置安装

文章目录 前置条件安装步骤环境准备下载 安装 RPM 包安装 NDB 组件与常见错误配置节点启用节点配置启动 MySQL 集群验证集群状态 关于 ndb_mgm集群管理备份与恢复集群配置管理日志相关 MySQL NDB Cluster 是一个分布式数据库解决方案&#xff0c;提供高可用性、数据分片和自动故…...

多线程开发中List的使用

由于ArrayList在多线程高并发情况下是不安全的&#xff0c;因此要慎用&#xff0c;那么此时如果涉及到集合操作&#xff0c;应该怎么选&#xff1a; 方案一&#xff1a;Vector: 特点&#xff1a;通过给所有方法都用 synchronized 修饰从而保证线程安全&#xff0c; 缺点&…...

Html 页面图标的展示列表

Html 页面中经常需要使用网页图标&#xff0c;这些图标的样式和名称都不容易记住。常用的网页图标展示页面链接记录如下&#xff1a; Material Design Icons 图标库 - FontAwesome 字体图标中文Icon...

Vue实现动态路由的后端控制

在传统开发后台管理系统时&#xff0c;都会涉及权限控制这一功能需求 即&#xff1a;根据不同登录的角色账号来使用该账号拥有的功能&#xff0c;也就是说系统左边的菜单栏不是固定不变的。 首先是基础路由配置带有component的。 const allRoutes [// 基础路由{path: /,name…...

​AI训练中的专有名词大白话版

​AI训练中的专有名词大白话版 ​1. 数据集&#xff08;Dataset&#xff09;​ &#x1f449; ​人话&#xff1a;AI的“练习题题库”&#xff0c;包含一堆带答案的题目&#xff08;比如猫狗照片标签&#xff09;。 &#x1f539; ​例子&#xff1a; 训练集&#xff08;练习…...

kafka 与 RocketMQ对比

问题 1: 为什么使用消息队列?服务搭建KafkaRocketMQ编写 docker-compose.yml运行docker compose修改配置文件(解决网络问题)创建一个 topic运行skd尝试发送与接收功能 压力测试:Kafkabatch-size(批量大小)分区数:发送数据(MB/s)消费-线程数(15 分区) RocketMQ生产生产者数量批…...

instnatid模型加载器放在哪里

一般根据节点名称来放&#xff0c;如果没有就新建 ComfyUI\models\instantid...

Spring Boot自动配置原理解析

文章目录 前言一、SpringBootConfiguration二、EnableAutoConfiguration2.1、AutoConfigurationPackage2.2、Import(AutoConfigurationImportSelector.class) 三、ComponentScan四、自动配置源码4.1、获取所有候选的自动配置类4.2、过滤不满足条件的自动配置 总结 前言 在常规的…...

LlamaIndex实现(基于PDF|CSV文件)RAG检索增强生成:NaiveRAG

什么是 RAG&#xff1f; RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09; 是一种结合 信息检索&#xff08;Retrieval&#xff09; 和 文本生成&#xff08;Generation&#xff09; 的AI技术&#xff0c;用于提升大语言模型&#xff08;L…...

分布式系统面试总结:3、分布式锁(和本地锁的区别、特点、常见实现方案)

仅供自学回顾使用&#xff0c;请支持javaGuide原版书籍。 本篇文章涉及到的分布式锁&#xff0c;在本人其他文章中也有涉及。 《JUC&#xff1a;三、两阶段终止模式、死锁的jconsole检测、乐观锁&#xff08;版本号机制CAS实现&#xff09;悲观锁》&#xff1a;https://blog.…...

vue3搭建实战项目笔记三

vue3搭建实战项目笔记三 3.1.行高偏移问题3.2.谷歌浏览器上不能定位3.2.2 移动端css隐藏滚动条 3.3.获取列表的数据3.3.1 服务器返回十万条数据3.3.2 分页展示数据3.3.2 防止展示数据为空报错 3.4.上拉加载数据3.4.1 加载更多数据3.4.2 监听页面滚动到底部3.4.3 监听滚动的时机…...

【商城实战(101)】电商未来已来:新技术引领商城发展新航向

【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102 章内容层层递进。无论是想…...

深入解析最大公约数(GCD)与最小公倍数(LCM)的C++实现

深入解析最大公约数&#xff08;GCD&#xff09;与最小公倍数&#xff08;LCM&#xff09;的C实现 一、GCD与LCM的数学定义 1. 最大公约数&#xff08;GCD&#xff09; 两个或多个整数共有约数中最大的一个。 例如&#xff1a; GCD(12, 18) 6GCD(21, 14) 7 2. 最小公倍数…...

低功耗LPWAN模块开发指南:远距离无线通信与边缘计算融合实战‌

在远程资产追踪、野外环境监测等场景中&#xff0c;稳定可靠的长距离通信与超低功耗是系统设计的核心挑战。eFish-SBC-RK3576通过 ‌原生双UART接口 USB OTG扩展能力‌ &#xff0c;可无缝集成主流LPWAN模组&#xff08;LoRa/NB-IoT&#xff09;&#xff0c;实现“数据采集-边…...

【质量管理】纠正、纠正措施和预防的区别与解决问题的四重境界

“质量的定义就是符合要求”&#xff0c;我们在文章【质量管理】人们对于质量的五个错误观念-CSDN博客中提到过&#xff0c;这也是质量大师克劳士比所说的。“质量的系统就是预防”&#xff0c;防止出现产品不良而造成的质量损失。 质量问题的解决可以从微观和宏观两个方面来考…...

STM32F103_LL库+寄存器学习笔记12 - 提高串口通讯程序的健壮性:异常监控 + 超时保护机制

导言 首先&#xff0c;进行USART和DMA状态监测、记录异常状态并主动处理&#xff0c;是高健壮性嵌入式系统开发的核心思想之一。 这种机制看似复杂&#xff0c;实则能有效保障系统长期、稳定地运行&#xff1a; 提升通讯可靠性。降低维护成本。增强系统自恢复能力。 因此&…...

搜索-BFS

马上蓝桥杯了&#xff0c;最近刷了广搜&#xff0c;感觉挺有意思的&#xff0c;广搜题类型都差不多&#xff0c;模板也一样&#xff0c;大家写的时候可以直接套模板 这里给大家讲一个比较经典的广搜题-迷宫 题目问问能否走到 (n,m) 位置&#xff0c;假设最后一个点是我们的&…...

Keil调试(RTT Debug 断点)

调试 打印操作 方式接口优缺点串口打印TXRX简单,但是占用串口,速度慢,重定向fputc简单RTT打印SWDIOSWCLK速度快,不占额外接口,直接移植RTT库断点打印SWDIOSWCLKDebug的时候断点操作SWOSWDIOSWCLKSWO需要连接SWO引脚,重定向fputc简单 这里我只介绍RTT打印和断点打印; 一. RT…...

【jQuery】插件

目录 一、 jQuery插件 1. 瀑布流插件&#xff1a; jQuery 之家 http://www.htmleaf.com/ 2. 图片懒加载&#xff1a; jQuery 插件库 http://www.jq22.com/ 3. 全屏滚动 总结不易~ 本章节对我有很大收获&#xff0c;希望对你也是~~~ 一、 jQuery插件 jQuery 功能…...

leetcode 28 Find the Index of the First Occurrence in a String

直接用kmp算法 class Solution { public:int strStr(string haystack, string needle) {return kmp(haystack,needle);}int kmp(std::string &text,std::string &pattern){int n text.size();int m pattern.size();if(m 0)return 0;std::vector<int> next;ne…...

nginx 动静分离

一.动静分离 1.动静分离的好处 Apache Tocmat 严格来说是一款java EE服务器&#xff0c;主要是用来处理 servlet请求。处理css、js、图片这些静态文件的IO性能不够好&#xff0c;因此&#xff0c;将静态文件交给nginx处理&#xff0c;可以提高系统的访问速度&#xff0c;减少…...

1.2 斐波那契数列模型:LeetCode 面试题 08.01. 三步问题

动态规划解三步问题&#xff1a;LeetCode 面试题 08.01. 三步问题 1. 题目链接 LeetCode 面试题 08.01. 三步问题 题目要求&#xff1a;小孩上楼梯&#xff0c;每次可以走1、2或3步&#xff0c;计算到达第 n 阶台阶的不同方式数&#xff0c;结果需对 1e9 7 取模。 2. 题目描述…...

关于AutoMapper

AutoMapper 概述 AutoMapper 是一个基于约定的对象 - 对象映射库&#xff0c;主要用于在不同对象类型之间自动映射属性值。它能根据配置的映射规则&#xff0c;将源对象的属性值填充到目标对象中&#xff0c;避免了手动编写大量繁琐的对象映射代码。 作用 提升开发效率&…...

是否每一层之间都要线性变换和激活函数?

1. 神经网络层的基本组成 一个典型的神经网络层通常包含两个步骤&#xff1a; 线性变换&#xff08;加权求和&#xff09;&#xff1a; z Wx} b 其中W 是权重矩阵&#xff0c;b是偏置向量&#xff0c;是输入&#xff0c;z 是线性输出。激活函数&#xff1a; 其中&#xff0c…...

golang 的reflect包的常用方法

目录 reflect 包方法总结 类型 (Type) 方法 值 (Value) 方法 代码示例&#xff1a; reflect 包方法总结 p : Person{Name: "小明", Age: 22}t : reflect.TypeOf(&p)v : reflect.ValueOf(p) 类型 (Type) 方法 方法名描述示例               Na…...

CentOS 7 安装 EMQX (MQTT)

CentOS 7 安装 EMQX 通过 Yum 源安装 EMQX 支持通过 Yum 源安装&#xff0c;您可通过以下 Yum 命令从中自动下载和安装 EMQX。 通过以下命令配置 EMQX Yum 源&#xff1a; curl -s https://assets.emqx.com/scripts/install-emqx-rpm.sh | sudo bash安装以下依赖项&#xff…...

Flask项目部署:Flask + uWSGI + Nginx

目录 1,网络架构 2,环境安装 2.1,安装yum:Shell软件包管理器 2.2 安装python 2.3 安装uWSGI 2.4 安装Flask 3,上传工程包到服务器,打包Flask项目 4,创建和配置 uwsgi 配置文件 uwsgi.ini 4.1配置文件 4.2配置文件注释详解 5,启动服务 6,安装nginx 7,nginx配置 8,…...

软件工程面试题(十五)

1、servlet 创建过程以及ruquest,response,session的生命周期? Servlet的创建过程: 第一步 public class AAA extends HttpServlet{ 实现对应的doxxx方法 } 第二步: 在web.xml中配置 <servlet> <servlet-name></servlet-name> <servlet-c…...

当Kafka化身抽水马桶:论组件并发提升与系统可用性的量子纠缠关系

《当Kafka化身抽水马桶&#xff1a;论组件并发提升与系统可用性的量子纠缠关系》 引言&#xff1a;一场OOM引发的血案 某个月黑风高的夜晚&#xff0c;监控系统突然发出刺耳的警报——我们的数据发现流水线集体扑街。事后复盘发现&#xff1a;Kafka集群、Gateway、Discovery服…...

python和Java的区别

Python和Java是两种流行的编程语言&#xff0c;它们之间有一些重要的区别&#xff1a; 语法&#xff1a;Python是一种动态类型的脚本语言&#xff0c;语法简洁明了&#xff0c;通常使用缩进来表示代码块。Java是一种静态类型的编程语言&#xff0c;语法更为严格&#xff0c;需要…...

QFlightInstruments飞行仪表控件库

QFlightInstruments 是一个开源的飞行仪表控件库&#xff0c;专为基于 Qt 的应用程序设计。它提供了一系列仿真实飞机仪表的组件&#xff0c;适用于飞行模拟软件、航空电子系统或任何需要高仿真飞行仪表显示的项目。 主要功能 高仿真飞行仪表&#xff1a;包括空速表、高度表、…...

可发1区的超级创新思路(python\matlab实现):MPTS+Lconv+注意力集成机制的Transformer时间序列模型

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 应用场景 该模型主要用于时间序列数据预测问题,包含功率预测、电池寿命预测、电机故障检测等等。 一、模型整体架构(本文以光伏功率预测为例) 本模型由多尺度特征提取模块(MPTS)…...

Nginx — Nginx版本升级

例如&#xff1a;将10.224.11.220、10.224.11.221、10.208.11.220 三台服务器上的Nginx从1.21.1版本升级到1.23.3版本。 一、Nginx升级步骤 步骤一&#xff1a;备份老版本的Nginx&#xff08;10.224.11.220、10.224.11.221、10.208.11.220&#xff09; #关闭Nginx cd /usr/l…...

CSS学习笔记6——网页布局

目录 一、元素的浮动属性、清除浮动 清除浮动的其他方法 1、使用空标签清除浮动影响 2、使用overflow属性清除浮动 3、使用伪元素清除浮动影响 原理 overflow属性 二、元素的定位 1、相对定位 2、绝对定位 ​编辑 3、固定定位 z-index层叠等级属性 一、元素的浮动…...

C语言【指针二】

引言 介绍&#xff1a;const修饰指针&#xff0c;野指针 应用&#xff1a;指针的使用&#xff08;strlen的模拟实现&#xff09;&#xff0c;传值调用和传指调用 一、const修饰指针 1.const修饰变量 简单回顾一下前面学过的const修饰变量&#xff1a;在变量前面加上const&…...