51单片机的特殊功能寄存器(SFR)

news2024/11/20 20:24:33

阅读前提醒: 文中提到的8051指的是8051微控制器,即51单片机

在上一篇文章51单片机的存储结构中,提到8051微控制器的RAM被划分为通用寄存器、按位寻址寄存器、寄存器组、以及特殊功能寄存器。
在这里插入图片描述

这里讲一下特殊功能寄存器(SFR)。

8051的特殊功能寄存器用于控制各种外围硬件设备,包括定时器、串行端口、I/O端口。也可以用于更改和获取微处理器的运行模式。

1 8051的特殊功能寄存器(SFR)

8051的特殊功能寄存器就像是一个控制台,通过它既可以监控8051微控制器的运行状态,课可以控制8051微处理器的功能。

如本文第一张图所示,在8051微控制器的内存结构中,从80H到FFH的128字节被分配给了SFR,但是只有21个位置是真正分配。每一个SFR都有一个一字节地址和一个独一无二的名字,这个名字同时也会指出该SFR的功能。

因为SFR是RAM的一部分,所以也可以像访问内部RAM一样访问SFR。两者仅仅是地址存在不同,00H到7FH是常规RAM,80H到FFH是SFR。
但是,由于128个SFR中仅有21个被分配,建议不要访问其他的SFR。

1.1 SFR的分类

这21个SFR分别是

  • A or ACC
  • B
  • DPL
  • DPH
  • IE
  • IP
  • P0
  • P1
  • P2
  • P3
  • PCON
  • PSW
  • SCON
  • SBUF
  • SP
  • TMOD
  • TCON
  • TL0
  • TH0
  • TL1
  • TH1

1.2 SFR的分类

下图列出了所有SFR的名字、功能、地址。
在这里插入图片描述

  • 数学运算寄存器: ACC和B
  • 状态字寄存器: PSW(Program Status Word)
  • 指针寄存器: 数据指针(DPL、DPH),和栈指针(SP)
  • I/O端口锁存器:P0,P1,P2,P3
  • 外设控制寄存器: PCON, SCON, TCON, TMOD, IE and IP
  • 外设数据寄存器:TL0, TH0, TL1, TH1 and SBUF

1.2.1 数学运算寄存器

AAC (累加器)

这个应该不需要多介绍,CPU的几乎每次操作都需要用到累加器。

B(乘商寄存器)

B寄存器用于乘除等运算,配合ACC使用。

1.2.2 PSW(程序状态字)

顾名思义,适用于保存当前程序运行状态的。程序员可以通过浏览其中的信息。
在这里插入图片描述
下图列出了每个标志位所对应的信息
在这里插入图片描述

1.2.3 指针寄存器

数据指针(DPTR: DPL和DPH)

DPL和DPH共同组成了一个16位的寄存器。它的主要作用是存储外接存储器的地址。
在这里插入图片描述

栈指针

栈指针指向堆栈的顶部,可以使用PUSH,POP,CALL,SET等指令来对其进行操作。
初始状态下栈指针内容为07H。
向栈指针中写数据后栈指针所存储的地址+1,读数据后地址-1。

在这里插入图片描述

1.2.4 I/O 端口寄存器

8051有4个用作I/O的端口,这四个端口分别是P0,P1,P2,P3。每一个端口都对应一个名字相同的寄存器。四个寄存器的地址分别是P0 – 80H, P1 – 90H, P2 – A0H 以及P2 – B0H。

SFR的每一个比特位都对应着8051微控制器的一个引脚,每一个端口寄存器都可以按字节寻址或者按位寻址。如果在端口寄存器上的某一个比特位上写入1或0,那么对应的引脚上电压也会产生相应的变化(5V或者0V)。
在这里插入图片描述

1.2.5 外设控制寄存器

PCON 电源控制(power control)

顾名思义,电源控制寄存器用于控制8051的电源模式。使用PCON寄存器中的两个比特,可以将8051设置为空闲模式和掉电模式。

注意:PCON寄存器不支持按位寻址

SCON 串行控制

SCON用于控制8051的串行端口。使用SCON,可以控制串口的操作模式、串口的波特率以及使用串口发送或接收数据。
在这里插入图片描述

TCON 定时器控制

TCON寄存器用于启动或停止8051单片机的定时器。它还包含指示定时器是否溢出的位。TCON SFR还包括与中断相关的位。

TMOD 定时器模式

定时器模式SFR用于设置定时器T0和T1的操作模式。较低的四位用于配置定时器0,较高的四位用于配置定时器1。

1.2.5 外设数据寄存器

SBUF 串行数据缓冲区

用于串行通信时存储串行数据。

TL0/TH0

定时器0由两个SFR组成:TL0和TH0。TL0是低位字节,TH0是高位字节,它们共同构成一个16位定时器0寄存器。

TL1/TH1同理

  • 参考文章:https://www.electronicshub.org/8051-microcontroller-special-function-registers/

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

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

相关文章

五金制造业ERP如何解决企业销售管理难题?

销售管理是五金制造企业管理中非常重要的一个环节,它决定着企业发展的提速和效益的提升。那么企业要如何才能做好销售管理呢?在这里五金制造业ERP系统就起到了重要作用。五金制造业常见的销售管理难题及解决方法:销售插单改单严重&#xff0c…

在不同环境下 Docker 的安装部署

本篇内容主要介绍了:Docker:不同环境下的安装部署,包括,Docker 在 Centos7 下的安装、Docker 在 MacOS 下的安装、Docker 在 Windows 下的安装、以及 Docker 服务相关基础命令! 文章目录一、Docker 在 Centos7 下的安装…

使用Redhat OpenStack发放云主机

云管理员操作创建项目登录到OpenStack主界面,使用admin账户登录,创建项目虚拟内核:表明此项目可以使用的vCPU的数量实例:表明该项目最多可以运行的虚拟机数量注入的文件:表明最多可以向此数据中心存多少文件已注入文件…

react基础Day03-生命周期render props模式高阶组件原理揭秘

组件生命周期(★★★) 目标 说出组件生命周期对应的钩子函数钩子函数调用的时机 概述 意义:组件的生命周期有助于理解组件的运行方式,完成更复杂的组件功能、分析组件错误原因等 组件的生命周期: 组件从被创建到挂…

JVM学习(二):JVM监控及诊断工具-命令行篇

一、概述性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java 作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成Java应用出现性能问题的因…

十二.自定义类型:结构体、联合、枚举

目录 一.结构体 1.结构体类型的基础知识 (1)结构的声明 (2)匿名结构体 (3)结构体变量的定义和初始化 (4)结构的自引用 (5)结构体传参 2.结构体内存对齐…

227. 基本计算器 II

227. 基本计算器 II题目算法设计:栈扩展:后缀表达式题目 传送门:https://leetcode.cn/problems/basic-calculator-ii/submissions/ 算法设计:栈 一个功能完备的计算器功能,有很多功能,我们需要从最简单的…

【CAD .NET】第一课 开发自己的CAD软件

开发自己的CAD软件(解析库私信我buy) 介绍 CAD .NET 为在 .NET 环境下开发解决方案的库。它支持 AutoCAD DWG、DXF、PLT 和其他 CAD 格式。它支持 AutoCAD DWG, DXF, PLT 和其他 CAD 格式。 该库可用于广泛领域: 处理所有项目阶段的工业图纸 监测和远程控制程序 数控(C…

ReactNative0.71正式版发布,Ts作为首要开发语言

时隔近4个月的时间,ReactNative带来了0.71版本的更新,这速度对比隔壁Flutter不得不说是真的有的慢。 这个版本的更新的内容还是比较重磅和突破性的,主要体现在如下几点: 编程语法默认改为TypeScript使用Flexbox Gap使布局更加简…

AlmaLinux 9部署JumpServer

JumpServer简介 JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。 JumpServer 使用 Python 开发,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。 JumpServer 采纳分布式架构,支持多…

【C++11】—— 类的新功能

目录 一、移动构造和移动赋值的特点 二、类成员变量初始化 三、强制生成默认函数的关键字default 四、禁止生成默认函数的关键字delete 五、继承和多态中的fifinal与override关键字 一、移动构造和移动赋值的特点 默认成员函数 原来C类中,有6个默认成员函数&a…

Yolov8实例分割Tensorrt部署实战

目录 0 引言 1 生成onnx模型 2 onnx转为tensorrt的engine模型 3 Tensorrt推理 3.1 yolov8n-seg分割结果 3.2 yolov8s-seg分割结果 3.3 yolov8m-seg分割结果 3.4 yolov8l-seg分割结果 3.5 yolov8x-seg分割结果 0 引言 ultralytics在github发布了yolov8模型,…

C语言 atoi 函数解析

文章目录前言atoi函数的介绍atoi函数的使用atoi函数的自我实现写在最后前言 对于atoi函数大家可能会有些陌生&#xff0c;不过当你选择并阅读到这里时&#xff0c;请往下阅读&#xff0c;我相信你能对atoi函数熟悉该函数的头文件为 <stdlib.h> 或 <cstdlib> atoi函…

Android Studio Electric Eel | 2022.1.1 发布,快来看看有什么大更新吧

原文链接&#xff1a;https://developer.android.com/studio/releases 本次 Android Studio 又发布了大量的内容更新&#xff0c;按照惯例推荐是等两个小版本后再更新会比较稳&#xff0c;当然也鼓励大家尝尝鲜&#xff0c;本次更新推出了大量实用的功能。 另外由于国内对更新…

大学生在校和校外可以开展的兼职,你肯定不知道

大学生的空闲时间比较多&#xff0c;适合大学生的兼职也有很多&#xff0c;因为大学生逻辑思维更强、大脑灵活、接受新事物能力强&#xff0c;而且大多都有电脑手机&#xff0c;可以做一点网上的兼职。如果你在学校有一定条件的话&#xff0c;还可以开展在学校里另类的兼职&…

1580_AURIX_TC275_SMU模块初步

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) SMU集中了所有软硬件的Alarm信息&#xff0c;这个在之前的很多模块的描述中看得出来的。默认情况下&#xff0c;其实只有看门狗的Alarm是开的&#xff0c;其他的都是关的。这个描述跟我之前…

[ 问题解决篇 ] 设置windows密码策略并且更改用户密码 -- 解决windwos密码无法设置为1的问题

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

P3654 First Step (ファーストステップ)

P3654 First Step (ファーストステップ) 题目背景 知らないことばかりなにもかもが&#xff08;どうしたらいいの&#xff1f;&#xff09; 一切的一切 尽是充满了未知数&#xff08;该如何是好&#xff09; それでも期待で足が軽いよ&#xff08;ジャンプだ&#xff01;&…

C语言 全排列(包含错误代码及分析,memset简单介绍及举例)

正确代码&#xff1a;#include <stdio.h> #include <math.h> #include <string.h>int n;//表示位数 int a[10]; int hash_tabel[10];void print() {for(int in;i>0;i--)printf("%d",a[i]);printf("\n"); } void core(int d) {if(d0)/…

Linux使用ACL控制对文件的访问

文章目录1. 查看文件ACL2. 解释文件ACL3. 更改ACL文件权限setfacl命令1) 以递归方式更新现有 cases 目录及其内容。2) 以递归方式更新现有cases 目录及其内容。3) 为contractors 组成员更新默认权限。默认权限为读取、写入和执行3.1.4) 为contractor3用户更新默认权限。默认权限…