2.2 80C51单片机的逻辑结构
2.2.1 80C51单片机的组成
单片机芯片上集成了微型计算机的5个组成部分,单片机的片内结构框图如图2-1所示。它主要由以下几部分组成:8位的微处理器CPU,内含布尔处理器,一个片内振荡器和时钟电路;数据存储器RAM,程序存储器ROM;定时器/计数器;串行通信接口;64KB总线扩展控制器和4个并行I/O接口等。MCS-51单片机片内总体结构框图如图2-1所示。
2.2.2 中央处理单元
中央处理单元(CPU)是MCS-51单片机核心部分,主要由运算器和控制器两部分构成。它的工作过程是,取指令→分析指令→根据指令的功能控制单片机的各功能部件执行指定的运算或操作,如此循环往复。
1.运算器
运算器由算术/逻辑运算单元ALU、累加器ACC、寄存器B、暂存寄存器、程序状态字寄存器PSW组成。它所完成的任务是实现算术与逻辑运算、位变量处理和数据传送等操作。
1)算术/逻辑运算单元ALU可以实现8位数据的加、减、乘、除算术运算和与、或、异或、循环、取反等逻辑运算,同时还具有一般微处理器所不具备的位处理功能。
2)累加器ACC的作用是向ALU提供操作数和存放运算的结果。同一般微机一样,MCS-51单片机在结构上也是以累加器ACC为中心,大部分指令的执行都要通过累加器ACC进行。在运算时将累加器ACC中的一个操作数经暂存器2送至ALU,与另一个来自暂存器1的操作数在ALU中进行运算,运算后的结果又送回累加器ACC。
图2-1 MCS-51单片机片内总体结构框图
3)寄存器B作为通用的寄存器使用。另外在乘、除运算时用来存放一个操作数,也用来存放运算后的一部分结果。
4)暂存寄存器用来暂时存放数据总线或其他寄存器送来的操作数。它作为ALU的数据输入源,向ALU提供操作数。
5)程序状态字寄存器PSW用来保存ALU运算结果的特征位,如结果是否有溢出、是否有进位/借位等。这些特征位可以作为控制程序转移的条件,供程序判别和查询。
2.控制器
控制器是由指令寄存器IR、指令译码器ID、定时及控制逻辑电路和程序计数器PC等部件组成。
1)程序计数器PC是一个16位的计数器。它总是存放着下一个要取指令的16位存储单元地址。即CPU将PC的内容作为地址,从内存中取出指令码或含在指令中的操作数。每取完一个字节后,PC的内容自动加1,为取下一个字节做好准备。在执行转移、子程序调用指令和中断响应时例外,PC的内容不再加1,而是由指令或中断响应过程自动给PC置入新的地址。
2)指令寄存器(IR)保存当前正在执行的一条指令。执行一条指令,先要把它从程序存储器取到指令寄存器中,然后进行译码,并形成相应指令的微操作信号。
3)定时与控制是微处理器的核心部件,它的任务是控制取指令、执行指令、存取操作数或运算结果等操作,以及向其他部件发出各种微操作控制信号、协调各部件的工作。
2.2.3 存储器
MCS-51系列单片机片内有程序存储器ROM和数据存储器RAM,不同型号的单片机片内存储器的容量稍有不同,内部结构框图如图2-2所示。
图2-2 MCS-51单片机内部结构框图
8051及8751的片内程序存储器容量为4KB,用于存放程序和表格常数;8051/8751/8031片内数据存储器均为128B,用于存放运算的中间结果、数据暂存以及数据缓冲等。在这128B的RAM中,有32B可指定为工作寄存器,和片内RAM排在一个队列里统一编址。
2.2.4 输入/输出接口
MCS-51系列单片机有四个8位并行接口(P0~P3),它们都是双向的,每个接口的8条I/O线均可以进行数据的输入/输出。端口的详细介绍请看本章第5节。