中央处理器CPU是单片微机内部的核心部件,主要包括控制器、运算器和工作寄存器及时序电路。在单片微机中,工作寄存器(即通用寄存器)属于数据存储器的一部分,在后面与片内数据存储器一起介绍,这里仅介绍控制器、运算器及时序电路的基本组成、功能与特点。

2.3.1中央控制器

识别指令,并根据指令性质控制计算机各组成部件进行工作的部件,与运算器一起构成中央处理器。
notion image

程序计数器PC(program counter)

程序计数器PC是一个独立的计数器,不属于内部的特殊功能寄存器。PC中存放的是下一条将要从程序存储器中取出的指令的地址。

基本工作过程

读指令时,程序计数器PC将其中的数作为所取指令的地址输出给程序存储器,然后程序存储器按此地址输出指令字节,同时程序计数器PC本身自动加1,指向下一条指令地址
  • 程序计数器PC的变化的轨迹决定程序的流程(PC指哪里,程序去哪里)
    • 执行条件转移或无条件转移指令时,程序计数器将被置入转移的目的地址,程序的流向发生变化。
    • 执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送入PC,程序流向发生变化。
    • PC是不可以直接访问、修改的,只能通过上面所述的方式间接改变
  • PC的宽度决定了程序储存器可以直接寻址的范围
    • 80C51中,PC是一个16位的计数器,因此可以对64KB的程序储存器寻址

DPTR(Data Pointer)数据指针

DPTR是80C51中一个16位的特殊功能寄存器,主要用作地址存储,可分为DPH(高8位)和DPL(低8位)。
  • 基本功能:
    • 片外数据存储器地址指针
    • I/O寻址用的地址寄存器
    • 程序存储器访问的基址寄存器
特性
DPTR
PC
位数
16位
16位
访问性
可访问修改
不可直接访问
输出方式
P0,P2+ALE,WR,RD
P0,P2+ALE,PSEN
 
PC是不可访问的(51),DPTR是可以访问、修改的

指令寄存器IR、指令译码器及控制逻辑

关键组件功能:
  • 指令寄存器IR:存放当前指令的操作码
  • 指令译码器:对指令进行解码分析
  • 定时控制逻辑:根据指令性质产生控制信号
  • 振荡电路:提供基本时钟信号
控制信号说明
信号
功能
PSEN
程序存储器使能信号
ALE
地址锁存使能信号
EA
外部访问控制信号
RST
复位信号

2.3.2 运算器

作用:
实现对操作数的算术逻辑运算和位操作。
组成:
主要包括算术逻辑运算单元ALU、累加器ACC(A)、两个暂存器、B寄存器、程序状态字PSW、以及BCD码运算修正电路。

算术逻辑运算单元ALU

在图中可以看到,ALU(算术逻辑单元)实质上是全加器,它通过暂存器1和暂存器2接收输入数据,并将运算结果输出到内部总线,同时还会更新PSW(程序状态字)的相关状态位。
并不是只能做加法,而是通过全加器的结构实现加减乘除等复杂的运算
notion image

累加器A(ACC/A寄存器)

累加器A是CPU中使用最频繁的一个八位专用寄存器,简称ACC或A寄存器。
累加器A存放操作数,是ALU单元的输入之一,也是ALU运算结果的暂存单元
容易产生瓶颈,因为绝大部分运算都要用到累加器A

B寄存器

B寄存器在80C51中主要有以下功能:
  1. 乘除法运算时的专用寄存器:
      • 乘法时:与累加器A配合,A存低8位,B存高8位
      • 除法时:被除数从A取,除数从B取,商存入A,余数存入B
  1. 内部RAM功能:在不进行乘除法运算时,B寄存器可以作为内部RAM的一个普通单元使用
这种设计充分利用了寄存器资源,既可以作为专用寄存器参与运算,又可以在不需要时作为普通存储单元使用。
 
 

程序状态字PSW:program status word

程序状态字PSW(Program Status Word)是一个8位寄存器,地址为D0H,可按位访问。主要用于存放ALU运算结果的状态标志位。

硬件自动生成的标志位

  • 奇偶校验位(P):用于检测累加器A中1的个数是否为偶数
  • 溢出标志位(OV):表示运算结果是否超出有效数据范围
  • 辅助进位标志位(AC):记录第3位向第4位的进位情况,用于BCD运算
  • 进位标志位(CY):指示运算是否产生进位或借位

可用软件方法设定的标志位

  • PSW.1:保留位,未使用
  • RS1和RS0:用于选择4个不同的工作寄存器组
  • F0:用户可自定义用途的标志位
<aside> RS1和RS0的组合可以选择4个不同的寄存器组:
RS1
RS0
寄存器组
0
0
组0 (00H-07H)
0
1
组1 (08H-0FH)
1
0
组2 (10H-17H)
1
1
组3 (18H-1FH)
</aside>

2.3.3 时钟电路以及CPU工作时序

notion image

时钟电路

notion image

振荡器

notion image
振荡器由/PD位(power down)(特殊功能寄存器PCON中的一位)控制,/PD=1振荡器停止工作,系统进入低功耗状态
晶体振荡器产生基础时钟频率

内部时钟发生器

内部时钟发生器实际上是一个二分频的触发器

ALE信号(Adress-Lock-Enable)

状态时钟经过三分频后产生ALE引脚上的输出
在80C51架构中,ALE信号每次有效确实会触发一次读取操作,但这些操作可能是有效的(被CPU使用)或无效的(被丢弃)。
这种描述主要是从硬件时序和指令执行机制的角度解释了ALE信号与读指令操作的关联,而不是说明ALE信号的主要设计目的(地址锁存)

时序定时单位

状态时钟送入六分频电路生成机器周期时序

时序单位

80C51的时序定时单位一共有4个:节拍、状态、机器周期、指令周期
  • *节拍 P:**振荡脉冲的周期称为节拍。
  • *状态 S:**一个状态 S 包含两个节拍,其前半周期对应的节拍叫 P1,后半周期对应的节拍叫 P2。
  • *机器周期:**80C51 采用定时控制方式,因此它有固定的机器周期。规定一个机器周期的宽度为 6 个状态,并依次表示为 S1~S6。由于一个机器周期共有 12 个振荡脉冲周期,因此,机器周期就是振荡脉冲的 1/12 分频
    • 当振荡脉冲频率为 12 MHz 时,一个机器周期为 1μs;当振荡脉冲频率为 6 MHz 时,一个机器周期为 2μs。
    • 机器周期是单片微机的最小时间单位。
  • *指令周期:**执行一条指令所需要的时间称为指令周期。它是最大的时序定时单位。80C51 的指令周期根据指令的不同,可包含 1、2、4 个机器周期。当振荡脉冲频率为 12 MHz 时,80C51 一条指令执行的时间最短为 1μs,最长为 4μs。

80C51指令时序

每一个ALE对应一次读指令操作
一个机器周期有两个ALE周期
每一次读指令是否有效,取决于PC的值;如果PC没有变化,那么每一次读到的指令是相同的,属于无效读取。
  1. 单字节单周期指令(例如 INC A):
      • 只需进行一次读指令操作。
      • 当第二个 ALE 有效时,由于 PC 没有加 1,读出的仍是原指令,属于一次无效的操作。
  1. 双字节单周期指令(例如 ADD A, #data):
      • 对应于 ALE 的两次读操作均为有效。
      • 第一次是读取指令操作码,第二次是读取指令第二字节(本例中是立即数)。
  1. 单字节双周期指令(例如 INC DPTR):
      • 两个机器周期进行四次读操作,但后面三次读操作全为无效。
  1. 单字节双周期指令(例如 MOVX 类指令):
      • 每个机器周期内有两次读操作,但 MOVX 类指令情况不同:
      • 第一机器周期:从 ROM 读取指令,此操作有效。
      • 第二机器周期:对外部 RAM 访问,与 ALE 信号无关,因此不产生读指令操作。
notion image
Loading...
Z_cosy
Z_cosy
浙江大学电气工程学院本科生
最新发布
Dairy
2025-4-21
MATH
2025-3-23
English
2025-3-21
Courses
2025-3-21
公告
🎉Welcome to Z-cosy🎉
-- 食用指南 ---
目前只有课程笔记以及电控学习笔记
陆续会整理更多内容!