CPU结构

8051内部CPU是一个字长为二进制8位的中央处理单元,也就是说它对数据的处理是按字节为单位进行的。与微型计算机CPU类似,8051内部CPU也是由算术逻辑部件(ALU)控制器(定时控制部件等)和专用寄存器组三部分电路构成。

1.算术逻辑部件

8051的算术逻辑部件ALU是一个性能极强的运算器,既可以进行加、减、乘、除四则运算,还可以进行与、或、非、异或等逻辑运算,还具有数据传送、移位、判断和程序转移等功能。

8051算术逻辑部件ALU由一个加法器、两个8位暂存器(TMP1和TMP2)和一个性能卓越的布尔处理器组成。虽然TMP1和TMP2对用户并不开放,但可用来为加法器和布尔处理器暂存两个8位二进制操作数。

2.定时器控制部件

定时器控制部件起着控制器的作用,由定时控制逻辑、指令寄存器和振荡器(OSC)等电路组成。

指令寄存器IR用于存放从程序存储器EPROM/ROM中取出的指令(即操作)码,定时控制逻辑用于对指令寄存器中的操作码进行译码,并在OSC的配合下产生执行该指令的时序脉冲,以完成相应指令的执行。

3.专用寄存器组

专用寄存器组主要用来指示当前要执行指令的内存地址,存放操作数和指示指令执行后的状态。它是任何一台计算机都不可缺少的组成部件。专用寄存器组主要包括程序计数器PC、累加器A、程序状态字PSW、堆栈指示器SP、数据指针DPTR和通用寄存器B等。

(1)程序计数器PC

程序计数器PC是一个二进制16位的程序地址寄存器,专门用来存放下一条将要执行指令的内存地址,能自动加1。

8051程序计数器PC由16个触发器构成,故他的编码范围为0000H~FFFFH,共64K。也就是说,8051对程序存储器的寻址范围为64KB。

(2)累加器A

累加器A又记做ACC,是一个具有特殊功能用途的二进制8位寄存器,专门用来存放操作数或运算结果。在CPU执行某种运算前,两个操作数中的一个通常应放在累加器A中,运算完后累加器A中便可以得到运算结果。

(3)通用寄存器B

通用寄存器B是专门为乘法和除法设置的寄存器,也是一个二进制8位寄存器,由8个触发器组成。该寄存器在乘法或除法前,用来存放乘数或除数,在乘法或除法后用于存放乘积的高8位或除数的余数。

(4)程序状态字PSW

PSW是一个8位标志寄存器,用来存放指令执行后的有关状态。PSW中的各位状态通常是在指令执行过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。

PSW.7为最高位,PSW.0为最低位。

① 进位标志位Cy:用于表示加减运算过程中最高位A7(累加器最高位)有无进位或借位。在加法运算时,若累加器A中最高位A7有进位,则Cy=1;否则,Cy=0。在减法运算时,若A7有了借位,则Cy=1;否则Cy=0。此外,CPU在进行移位操作时也会影响这个标志位。

②辅助进位标志位AC:用于表示加减运算时低4位(A3)有无向高4位(即A4)进位或借位。若AC=0,表示加减过程中A3没有向A4进位或借位;若AC=1,表示加减过程中A3向A4有了进位或借位。

③用户标志位F0:F0标志位的状态通常不是机器在执行指令过程中自动形成的,而是由用户根据程序执行需要传送指令确定。一经设定便由用户程序自动检测,以决定用户程序流向。

④寄存器选择位RS1和RS0:8051共有8个工作寄存器,分别命名为R0~R7,工作寄存器R0~R7常常被用户用来进行程序设计,但它在RAM中的实际物理地址是可以根据需要选定的。RS1和RS0就是为了这个目的提供给用户使用,用户通过RS1和RS0的状态可以方便的决定R0~R7的实际物理地址。

⑤溢出标志位OV:可以指示运算过程中是否发生了溢出,在机器指令过程中自动形成。若在机器在执行运算指令过程中,累加器A中运算结果超过了8位能表示的范围,即-128~+127,则OV标志自动置1;否则OV=0。

⑥奇偶校验位P:PSW.1为无定义位,用户也不可使用。PSW.0为奇偶标志位P,用于指令运算结果中1的个数的奇偶性,若P=1,则累加器A中1的个数为奇数;若P=0,则累加器A中1的个数为偶数。

(5)堆栈指针SP

堆栈指针是一个8位寄存器,能自动加1或减1,专门用来存放堆栈的栈顶地址。堆栈是一种能按“先进后出”或“后进先出”规律存数据的RAM区域。这个区域可大可小,常称为堆栈区。8051片内RAM共有128B,地址范围为00H~FFH,故这个区域中任何一个子域都可以用作堆栈区,即作为堆栈来使用。

(6)数据指针DPTR

数据指针DPTR是一个16位寄存器,由两个8位寄存器DPH和DPL拼成。DPH为DPTR的高8位,DPL为DPTR的低8位。DPTR可以用来存放片内ROM的地址,也可以用来存放片外RAM和片外ROM地址,主要用于访问片外RAM。

MCS-51单片机内部结构——CPU结构 单片机原理学习笔记(二)相关推荐

  1. Golang底层原理学习笔记(一)

    LCY~~Golang底层原理学习笔记 1 源码调试 go源代码地址:GitHub - golang/go: The Go programming language 1.1 源码编译 现在的go语言大 ...

  2. MOOC人工智能原理学习笔记1

    人工智能原理学习笔记1 The Foundations of AI: Philosophy Mathematics Economics Neuroscience Psychology Computer ...

  3. [编译原理学习笔记2-2] 程序语言的语法描述

    [编译原理学习笔记2-2] 程序语言的语法描述 文章目录 [编译原理学习笔记2-2] 程序语言的语法描述 [2.3.1] 上下文无关文法 [2.3.2] 语法分析树与二义性 [2.3.3] 形式语言鸟 ...

  4. 编译原理学习笔记20——符号表

    编译原理学习笔记20--符号表 20.1 符号表的组织与操作 20.2 符号表的内容 20.3 利用符号表分析名字的作用域 20.1 符号表的组织与操作 符号表 符号表的作用与组织 符号表的整理和查找 ...

  5. 编译原理学习笔记2——高级程序设计语言概述

    编译原理学习笔记2--高级程序设计语言概述 2.1常用的高级程序设计语言 2.2程序设计语言的定义 2.2.1语法 2.2.1语法 2.2.3程序语言的基本功能和层次机构 2.2.4程序语言成分的逻辑 ...

  6. Mybatis底层原理学习(二):从源码角度分析一次查询操作过程

    在阅读这篇文章之前,建议先阅读一下我之前写的两篇文章,对理解这篇文章很有帮助,特别是Mybatis新手: 写给mybatis小白的入门指南 mybatis底层原理学习(一):SqlSessionFac ...

  7. 自控原理学习笔记-反馈控制系统的动态模型(4)-频率特性函数Nyquist图及Bode图

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 1.频率特性函数 1.1 图形表示方法: 1.2 零极点位置和暂态增益图 1.2.1 复轨迹曲线 1.2.3 例子 1.3 计算系统响应 2.开环频率 ...

  8. 自控原理学习笔记-系统稳定性分析(2)-环路分析及Nyquist-Bode判据

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 3. 环路分析 3.1环路分析基本思想: 3.2 稳定程度的性能指标(相对稳定) 3.3 环路整形 4.Nyquist判据 4.1 与幅角原理关系 4 ...

  9. 自控原理学习笔记-反馈控制系统的动态模型(1)

    自控原理学习笔记 1.导论 2.反馈控制系统的动态模型(1) 3.反馈控制系统的动态模型(2) 3.反馈控制系统的动态模型(3) 4.反馈控制系统的动态模型(4) 5.反馈控制系统的动态模型(5) 文 ...

最新文章

  1. Github上传大于100M文件:LFS
  2. [环境]Mac Homebrew自动安装
  3. Django与数据库操作
  4. 网页中获取微信用户是否关注订阅号的思路
  5. MvvmLight框架使用入门(三)
  6. oracle extract()截取时间值函数
  7. 云盒子企业网盘入驻阿里云市场,正式向公有云市场发力!
  8. telnet不能用,提示:-bash: telnet: command not found
  9. vSphere4.1升级到vSphere5.0连载之一
  10. C# 获得当前应用程序路径
  11. python windows api截图_Winapi快速截图并打开
  12. 数据库系统概论第五版_第九章:关系查询处理和查询优化
  13. 【游戏引擎Easy2D】场景和文本,不同的输出方式
  14. 2020年低压电工考试试卷及低压电工复审考试
  15. python实现猜测随机数
  16. python四子棋游戏
  17. css module模组化
  18. 三、box 盒子模型
  19. 利辛县腾讯服务器维护,腾讯内容开放平台
  20. 邮箱163登录入口?邮箱163注册格式是什么?

热门文章

  1. spring 注解练习
  2. 深入浅出Mysql - 优化篇(索引)
  3. 酷睿i5 12490f什么水平 i5 12490f属于什么档次 i512490f怎么样
  4. Cassandra 3.x官方文档_cassandra.yaml配置文件
  5. 什么是DDL和DML语句?
  6. [Delphi] 多线程编程
  7. kali工具Crunch
  8. python plt.imshow函数显示图像颜色失真
  9. 医疗IT系统在手术部供配电间的应用
  10. MySQL Workbench使用教程简介