单片机基础:MCS-51单片机的硬件结构(附硬件结构框图)

2023-05-16

单片机硬件结构知识点非常琐碎,通过一次两次的学习是不太可能记住的。想要熟练掌握硬件结构,最好的方法是在实验中练习,通过编程多见多用才能牢固的掌握。

MCS-51单片机硬件结构

      • 1.硬件系统框图
      • 2.单片机功能图
      • 3.单片机的主要部件
      • 4.CPU内部结构
        • 4.1.运算器
        • 4.2.控制器
      • 5.存储器
        • 5.1.存储器结构图
        • 5.2.程序存储器ROM
        • 5.3.数据存储器RAM
          • 5.3.1.通用数据存储器
            • 5.3.1.1.工作寄存器区(00H ~ 1FH)
            • 5.3.1.2.可位寻址区(20H ~ 2FH)
            • 5.3.1.3.用户数据缓冲区(30H ~ 7FH)
          • 5.3.2.特殊功能寄存器
          • 5.3.3.三大逻辑存储部分指令
      • 6.I/O接口
        • 6.1.引脚图
        • 6.2.引脚功能
          • 6.2.1.P0 ~ P3
          • 6.2.2.电源引脚
          • 6.2.3.时钟震荡电路引脚
          • 6.2.4.控制信号引脚
      • 时钟电路
      • 复位电路
        • 上电自动复位
        • 上电加按键手动复位

1.硬件系统框图

在这里插入图片描述

2.单片机功能图

在这里插入图片描述
单片机就是一个芯片集成了计算机的三大部分,中央处理器、存储器、I/O接口,这三大部分又通过三总线(数据总线、地址总线、控制总线)相互连接。

3.单片机的主要部件

CPU

  • 1个8位CPU

存储器

  • 4KB程序存储器ROM(Read Only Memory),片外最多可扩展64KB,ROM是只读存储器,用于存储数据,相当于硬盘。
  • 128B数据存储器RAM(Random Access Memory),片外最多可扩展64KB,RAM是随机存取存储器,用于临时存放数据,相当于内存条。
  • 21个具有特殊功能的寄存器SFR。

I/O接口

  • 4个8位并行口,P0、P1、P2、P3
  • 1个全双工串行口

其它

  • 2个16位定时/计数器
  • 5个中断源
  • 1个片内振荡器、时钟电路

4.CPU内部结构

4.1.运算器

  1. 算术/逻辑运算单元ALU:进行算术逻辑运算,加减乘除、与或非等等。
  2. 累加器ACC(8位):助记符A。
  3. 寄存器B(8位):配合ACC完成乘除运算,没有乘除运算时,可当做RAM的一个单元。
  4. 程序状态字寄存器PSW(8位):存放ALU运算状态

4.2.控制器

  1. 堆栈指针SP(8位):存取数据,先进后出。数据入栈出栈时,SP自动加1减1。复位时SP=07H。
  2. 程序计数器PC(16位):存放下条要执行的指令的地址,PC指针指向哪,CPU就执行哪条指令。复位时PC=0000H
  3. 数据指针DPTR(16位):与PC功能一样,区别是DPTR是外部存储器的指针。

5.存储器

5.1.存储器结构图

在这里插入图片描述
单片机存储器在物理结构上分为4部分,片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。但在逻辑上分为3部分,片内外统一编制的程序存储器、片内数据存储器、片外数据存储器,访问这3个存储空间时,采用不同形式的指令。

5.2.程序存储器ROM


读取数据的两条指令
MOVC A, @A + DPTR
MOVC A, @A + PC
DPTR为外部扩展ROM的数据指针


最多扩展64KB的程序存储器


复位地址0000H


当EA为低电平时,所有取指令操作都在片外ROM中进行;当EA为高电平,所有取指令操作都在片内ROM中进行。


各中断入口地址

中断源入口地址
外部中断0(INT0)0003H
外部中断1(INT1)0013H
定时器0(T0)000BH
定时器0(T1)001BH
串行口(TI或RI)0023H

5.3.数据存储器RAM

数据存储器分为外部RAM和内部RAM,内部RAM只有128B地址空间(00H~7FH),外部RAM有64KB(0000H ~ 0FFFFH);访问内部RAM用指令MOV,访问外部RAM用指令MOVX。
内部RAM分为通用数据存储器和特殊功能寄存器,两大部分

5.3.1.通用数据存储器

通用数据存储器被分为三个区,工作寄存器区、可位寻址区、用户数据缓冲器

5.3.1.1.工作寄存器区(00H ~ 1FH)

工作寄存器区共分为4个工作寄存器组,每组有8个工作寄存器R0 ~ R7,可以通过程序状态字寄存器(PSW)中RS0和RS1两位来选择工作寄存器组。

5.3.1.2.可位寻址区(20H ~ 2FH)

可以对具体的某一位进行处理、传输数据等。

5.3.1.3.用户数据缓冲区(30H ~ 7FH)

用户RAM,只能按字节寻址

5.3.2.特殊功能寄存器

21个特殊功能寄存器中,有11可位寻址。
在这里插入图片描述

重要:程序状态字寄存器PSW

5.3.3.三大逻辑存储部分指令

访问ROM用MOVC
访问片内RAM用MOV
访问片外RAM用MOVX

  • 从外部RAM取数 MOVX A,@DPTR
  • 从数到外部RAM MOVX @DPTR,A

6.I/O接口

6.1.引脚图

在这里插入图片描述

6.2.引脚功能

6.2.1.P0 ~ P3

P0口是三态双向口,如果需要输出电平,需要外接上拉电阻。P1、P2是准双向IO口。P3
准双向IO口,双功能口
在这里插入图片描述

6.2.2.电源引脚
引脚功能
Vcc电源输入端
Vss接地端
6.2.3.时钟震荡电路引脚
引脚功能
XTAL1晶体振荡电路反相器输入端
XTAL2输出端,称为单片机的主频
6.2.4.控制信号引脚
引脚功能
RST/VPDRST是复位信号输入端,VPD是内部RAM备用电源,防止突然断电时导致RAM中的数据丢失
ALE/PROGALE地址锁存允许信号
PSEN外部ROM的读选通信号
EA/VPP访问外部ROM控制信号

时钟电路

在这里插入图片描述

复位电路

上电自动复位

在这里插入图片描述

上电加按键手动复位

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机基础:MCS-51单片机的硬件结构(附硬件结构框图) 的相关文章

  • 执行git stash apply 报错误:……needs merge

    unable to refresh index 查看文档 xff0c 发现git stahs save之后 xff0c 本地数据又发生改变 xff0c 这时如果你执行git stash apply或其他上传操作 xff0c 就会报这个错误
  • Mysql数据库类型对比Java数据类型

    tinyint 61 Integer 很小的整数 带符号的范围是 128到127 无符号的范围是0到255 smallint 61 Integer 小的整数 带符号的范围是 32768到32767 无符号的范围是0到65535 medium
  • 数字三角形求最大路径

    问题描述 上图给出了一个数字三角形 从三角形的顶部到底部有很多条不同的路径 对于每条路径 xff0c 把路径上面的数加起来可以得到一个和 xff0c 你的任务就是找到最 大的和 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者
  • base64文件上传Java解析表格并实例化

    excel表格文件怎么解析 xff1f 别慌 xff0c Apache早已有解决方式 以下 xff0c 从应用的角度实现Excel文件上传并解析 语言 xff1a Java Vue 1 文件转base64格式传输 span class to
  • 洛谷 P1605 迷宫

    题目 题目背景 迷宫 问题描述 给定一个N M方格的迷宫 xff0c 迷宫里有T处障碍 xff0c 障碍处不可通过 给定起点坐标和 终点坐标 xff0c 问 每个方格最多经过1次 xff0c 有多少种从起点坐标到终点坐标的方案 在迷宫 中移
  • 输入一个百分制的成绩,将其转换成对应的等级。c++

    输入一个百分制的成绩t xff0c 将其转换成对应的等级 xff0c 具体转换规则如下 xff1a 90 100为A 80 89为B 70 79为C 60 69为D 0 59为E 输入数据有多组 xff0c 每组占一行 xff0c 由一个整
  • 对于给定的一个字符串,统计其中数字字符出现的次数。c++

    对于给定的一个字符串 xff0c 统计其中数字字符出现的次数 输入数据有多行 xff0c 第一行是一个整数n xff0c 表示测试实例的个数 xff0c 后面跟着n行 xff0c 每行包括一个由字母和数字组成的字符串 对于每个测试实例 xf
  • Boost库的编译

    Boost的编译 一 编译环境 Win7 sp1 64位旗舰版 43 VS2008 sp1 43 boost 1 63 二 下载 boost http www boost org users history version 1 63 0 h
  • 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。c++

    给定一段连续的整数 xff0c 求出他们中所有偶数的平方和以及所有奇数的立方和 输入数据包含多组测试实例 xff0c 每组测试实例包含一行 xff0c 由两个整数m和n组成 对于每组输入数据 xff0c 输出一行 xff0c 应包括两个整数
  • 虚拟机和宿主机之间无法拖拽/安装增强功能失败,用共享文件夹来做替代

    一般为了免去配置作业环境的麻烦 xff0c 很多课程都会要求使用虚拟机 xff0c 使用虚拟机挂载给定的虚拟硬盘文件后就不用配置环境了 安装虚拟机 xff0c 配置虚拟机一般都是比较容易的 xff0c 但是安装增强功能真的爪巴 一般有两种方
  • SPFA思路讲解,如何判断最短路中是否存在负权环路,例题(计算过路税收)。c++

    Bellman Ford和SPFA思路 在解单源最短路径的时候第一个想法是dijkstra 但是dijkstra存在一定的局限性 xff0c 图中存在负权边的时候没有办法保证它的正确性 xff0c 为了解决相应的问题 xff0c 使用bel
  • visual studio2019 +配置OpenGL

    下载VS2019 到官网https visualstudio microsoft com zh hans downloads 选择下载社区版 安装时勾选 c 43 43 模块 xff0c 注意 vs 组件占用较大 xff0c 目的地址要有充
  • 拯救C盘:转移虚拟内存

    安装文件默认路径一时爽 事后清理磁盘火葬场 C盘爆红的那天我记得很清楚 xff0c 是我安装完了VS studio 2019 xff0c 但那时的我并没在意 xff0c 直到我有一天打开虚拟机用着用着 xff0c 虚拟机暂停报错磁盘问题 这
  • 计算无法被整除的第k大正整数

    题面 xff1a 任务给定两个数字 xff0c 分别表示 n 和 k xff0c 要求给出无法被 n 整除的第 k 大的正整数 例如 n 61 3 xff0c k 61 7 xff0c 则前 7 个无法被 n 整除的正整数为 1 2 4 5
  • 血与泪的教训:127.0.0.1由于目标积极拒绝,无法连接

    在尝试python socket编程的时候 xff0c 首先将编写好的客户端和服务器端都部署在本地进行 xff0c 并且使用同一台宿主机 客户端使用127 0 0 1 xff0c 服务器端使用0 0 0 0或者直接 刚开始我端口是随意选择的
  • 在ubuntu上安装charm-crypto

    在ubuntu上安装charm crypto 在google groups上看到相关安装信息 xff0c 现在均无法完全在windows上运行charm crypto xff0c 所以选择在虚拟机上进行环境的配置 ubuntu 环境 使用
  • 论文阅读 :A survey of visual analytics techniques for machine learning

    题目 xff1a A survey of visual analytics techniques for machine learning A survey of visual analytics techniques for machin
  • 使用Django管理员在后台添加数据库时出现no such table: main.auth_user__old解决方法

    在学习Django开发时 xff0c 创建好管理员账号后 xff0c 准备通过Django内置的管理网页来测试能否在表中添加记录 xff0c 选择save后出现如上图所示的报错 解决方案是升级Django的版本 xff0c 原Django
  • nano 命令

    Nano命令指南 打开文件与新建文件 使用nano打开或新建文件 xff0c 只需键入 xff1a 代码 1 1 打开或新建文件 nano 文件名 Nano是一种单模式编辑器 xff0c 你可以直接输入文字 如果你要编辑一个像 etc fs
  • 数据处理时踩坑总结【持续更新版】

    DataFrame的iterrows迭代中无法直接修改源数据 在iterrows中 xff0c 尝试使用index和row对DataFrame类型的变量直接进行更改 xff0c 但是输出时发现值没有改变 这是因为使用row 列名 修改的值是

随机推荐

  • 单片机串口通讯产生乱码

    64 有关串口通讯乱码 今天做了一个51单片机的proteus仿真实验 xff0c 用到串口通信 xff0c 但是无论怎么调试都是输出乱码 一般产生乱码都是因为波特率不对 xff0c 可能你所用的晶振 以及定时器T1产生的波特率 xff0c
  • Ubuntu双系统安装(一次安装成功)

    Ubuntu双系统安装主要有关键地两步 xff1a 一 制作启动硬盘 二 为Ubuntu分配磁盘空间 第二点是安装过程中非常重要的一步 制作启动硬盘 xff1a 1 下载Ubuntu LTS xff0c 可以去官网下载 2 下载UltraI
  • linux环境下,一步步教你命令行搭建自己的git服务器和客户端

    前言 xff1a 先说下我的git服务器环境 xff0c git服务端的搭建我用的是阿里的ubantu云服务器 xff0c 毕竟云服务器上可以在任何联网的电脑上访问嘛 xff0c 方便 局域网也可以 xff0c svn和git这两种最常用的
  • Windows中的WSL(子系统)开机启动配置

    常规做法 通常在Linux中开机启动可以通过 1 编辑 etc rc loacl 2 在 etc init d 下添加启动脚本 3 配置systemd 但这几种方式在子系统中无法使用 xff0c 我们可以通过Windows 间接的启动子系统
  • STM32串口控制LED灯的亮灭

    STM32中的串口控制LED灯的亮灭 xff0c 分为两种方式 xff0c 一种是直接发送数字0和1来控制灯的亮灭 xff0c 另一种是通过发送字符串来控制 我所使用的开发板主控芯片是STM32F401RET6 xff0c 主频84MHz
  • Windows使用快捷键

    Windows电脑快捷键汇总 Windows电脑快捷键汇总1 win快捷键 xff1a 2 Ctr快捷键 xff08 文本编辑使用较多 xff09 3 ALT快捷键4 shift快捷键5 FN快捷键6 常规快捷键7 指法练习 Windows
  • 基于Centos7搭建Samba服务

    准备两台安装好centos7的虚拟机 服务器端172 16 1 11 24 客户端172 16 1 12 24 root 64 server yum install samba samba client y 服务器端安装软件包 xff08
  • 【BUG】【Raspberry】解决最新版树莓派远程连接蓝/黑屏不显示问题

    文章目录 一 bug如图二 解决办法三 参考四 请教问题 一 bug如图 远程连接登陆后全蓝色 xff0c 没有树莓派桌面 二 解决办法 1 执行下面代码 xff0c 删除两个文件目录 注意 xff1a pi 替换为自己的用户名 xff01
  • 【教程】【记录】树莓派Raspberry+motion+摄像头实现拍照、录像、实时视频功能

    刚接触树莓派 xff0c 还请多多指教 目录 一 准备工作二 操作步骤1 进入设置打开摄像机模块2 拍照3 录像4 实时监控 三 总结补充文章 xff1a 一 准备工作 1 树莓派4B 2 树莓派摄像头500W像素 xff08 淘宝十几块钱
  • linux查看日志命令

    常用的几种linux查看日志的命令 一 tail n 是显示行号 xff1b 相当于nl命令 xff1b 例子如下 xff1a tail 100f localhost yyyy MM dd log 实时监控100行日志 tail n 10
  • 用c++ 的可变模板参数递归来表达 著名的斐波那契数列

    span class token macro property span class token directive keyword include span span class token string lt iostream gt s
  • debian squid透明代理简单配置

    实验环境 主机用途IP客户端10 10 100 11网关10 10 100 12 xff0c 192 168 65 160网站192 168 65 161 客户端配置 配置网关 route add default gw 10 10 100
  • Matlab中的抽象函数的求值

    Matlab中的抽象函数的求值 采用匿名函数 y 61 64 x x 2 43 2 x 8 建立匿名函数y y 4 返回当x 61 4时 xff0c y的结果 上面的命令在命令窗口可以实现 xff0c 但是在M文件中没有实现 使用matla
  • 白嫖5T空间Onedrive并搭建下载站

    更好的阅读体验欢迎访问博客白嫖5T空间Onedrive并搭建下载站 前言 白嫖一个微软E5账号不仅能自己使用office全家桶 xff0c 还能造福25个小伙伴 xff0c 何乐而不为 xff1f 这里借助onedirve的API和onei
  • 阿里云Linux(Debian) + Tomcat搭建网站

    工具 xff1a Linux 我买的是阿里云的主机Linux Debian64位的 Tomcat Java Web服务器 putty 连接远程主机的客户端 WinSCP 远程主机的可视化界面 xff0c 方便操作文件 jdk1 8 需要配置
  • 动态链接库(DLL)开发基础

    本周我的博客涉及到动态链接库的基础开发 我在刚开始学习动态链接库的开发 在网上找DLL开发基础知识教程时发现网上的资料还是太杂 xff0c 对初学者不太友好 xff0c 于是我就着手写了这篇博客 xff0c 本篇博客知识有DLL简介 DLL
  • Mybatis:使用Mybatis执行SQL多出“limit?“,原来这样就可以解决!!!

    问题展示说明 业务需要只展示分组排序后的前15条 xff0c 数据写了如下sql xff1a 启动项目访问接口后 xff0c 报如下错误 xff1a 解决办法 参考了一下MyBatis官网和其他博客发现需要清理一下之前设置过的Page缓存
  • .NET编程——利用C#实现远程桌面连接(WinForm)

    通过学习利用利用C 实现登录功能后 xff0c 本文将通过Visual Studio 2019运行实现远程桌面连接 目录 引言 前期准备 连接固定计算机 连接指定计算机 可能遇到的问题 引言 实现远程桌面有一个大前提是不可忽略的 xff0c
  • 单片机基础:什么是中断系统、中断系统如何用(附中断系统应用实例)

    中断系统 1 前言2 什么是中断3 什么是中断系统4 中断的流程5 中断的优先级控制6 中断源外部中断 7 与中断有关的特殊功能寄存器7 1 定时 计数器控制寄存器 96 TCON 96 7 2 串行口控制寄存器 96 SCON 96 7
  • 单片机基础:MCS-51单片机的硬件结构(附硬件结构框图)

    单片机硬件结构知识点非常琐碎 xff0c 通过一次两次的学习是不太可能记住的 想要熟练掌握硬件结构 xff0c 最好的方法是在实验中练习 xff0c 通过编程多见多用才能牢固的掌握 MCS 51单片机硬件结构 1 硬件系统框图2 单片机功能