1.2 任务2 初识单片机——内部结构
任务描述
本任务的目标是要掌握单片机的基本组成部分和单片机的工作过程,以及MCS-51系列单片机有哪些内部资源,外部引脚有什么样的功能。
任务分析
在本任务中我们应从以下几个方面去认识单片机:
(1)单片机的基本组成和工作过程。
(2)单片机的主要组成部分及作用。
(3)单片机的外部引脚及其功能。
任务讨论
请同学们根据任务1的演示信息解决以下问题:
(1)单片机工作起来的硬件基础是什么?
(2)单片机的工作过程是什么?
1.2.1 MCS-51单片机简述
MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了许多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其他单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS-51的核心技术授权给了很多其他公司,所以有很多公司在生产8051为核心的单片机。当然,其功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。以后我们将用89C51、89S51来完成一系列的实验。
1.MCS-51系列单片机分类
MCS-51系列单片机分为两大系列,即51子系列与52子系列。这两大系列单片机的主要硬件特性如表1.1所示。
51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951。
52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952。
表1.1 51系列单片机的主要硬件特性
从上表中可以看到,8031、8031、8032、80C32片内是没有ROM的。对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位计数器,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。
2.8051与80C51的区别
80C51单片机是在8051的基础上发展起来的,即在单片机的发展过程中是先有8051,然后才有80C51。
8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),即在8051下开发的软件完全可以在80C51上应用,反过来,在80C51下开发的软件也可以在8051上应用。这两种单片机是完全兼容的。
既然这两种单片机外形及内部结构都一样,那它们之间的主要差别在哪里呢?
8051与80C51单片机的主要差别就在于芯片的制造工艺上。80C51的制造工艺是在8051基础上进行了改进。8051系列单片机采用的是HMOS工艺:高速度、高密度;80C51系列单片机采用的是CHMOS工艺:高速度、高密度、低功耗。80C51单片机是一种低功耗单片机。
1.2.2 单片机的工作过程
一个完整的计算机是由硬件和软件两部分组成的,缺一不可。上面所述为计算机的硬件部分,是看得到、摸得着的实体部分,但计算机硬件只有在软件的指挥下,才能发挥其效能。计算机采取“存储程序”的工作方式,即事先把程序加载到计算机的存储器中,当启动运行后,计算机便自动进行工作。
计算机执行程序是一条指令一条指令执行的。执行一条指令的过程分为三个阶段:取指令、指令译码与执行指令。每执行完一条指令,自动转向下一条指令的执行。
1.取指令
根据程序计数器中的地址,到程序存储器中取出指令代码,并送到指令寄存器中。
2.指令译码
指令译码器对指令寄存器中的指令代码进行译码,判断出当前指令代码的工作任务。
3.执行指令
判断出当前指令代码任务后,控制器自动发出一系列微指令,指挥计算机协调地动作,完成当前指令指定的工作任务。
1.2.3 8051单片机的内部结构
如图1.2所示,8051单片机由中央处理器CPU(运算器和控制器、存储器(RAM和ROM)、I/O口(P0、P1、P2、P3)以及特殊功能寄存器SFR、定时器/计数器、中断系统、时钟电路、串行口以及总线等构成。那么这些功能单元的作用是什么呢?其实我们可以把单片机和人对比一下,就可以明白了!
图1.2 8051单片机的内部结构
单片机像人一样,有它最重要的部分——大脑,即CPU,由它完成计算、控制等操作。单片机的四个I/O口就像人的大脑获取外界信息的渠道一样,由它来完成信息的传送,即单片机通过P0、P1、P2、P3口和CPU之间进行数据的传送。单片机的RAM就像人计算时的稿纸一样用来存放中间结果,而ROM就像人做记录的笔记本一样,用来存放程序。而时钟电路就像人确定时间的手表一样,单片机通过时钟电路产生一定周期的矩形波来确定时间。定时器就像我们的闹钟一样用来实现定时,计数器就像我们的计算器一样用来实现计数功能。而串行口就像我们的手机一样用来实现单片机与单片机之间的通信。而中断就像我们的报警装置可以对一些紧急情况进行监控。
1.CPU
单片机的核心部分是CPU,由运算器、控制器和布尔(位)处理器组成。8051单片机的CPU是8位数据宽度的微处理器。
(1)运算器。运算器主要由8位算术逻辑运算单元ALU、8位累加器ACC、8位寄存器B、程序状态字寄存器PSW和暂存寄存器等组成。运算器主要负责算术运算、逻辑运算和位操作运算,包括:累加器(ACC)、程序状态字(PSW)、暂存器、B寄存器等部件。
① 累加器ACC。累加器为8位寄存器,是程序中最常用的专用寄存器,在指令系统中累加器的助记符为A。大部分单操作数指令的操作取自累加器,很多双操作数指令的一个操作数也取自累加器。加、减乘和除等算术运算指令的运算结果都存放在累加器A或AB寄存器中,在变址寻址方式中累加器被作为变址寄存器使用。在MCS-51中由于只有一个累加器,而单片机中的大部分数据操作都是通过累加器进行的,故累加器的使用是十分频繁的。
② B寄存器。B寄存器为8位寄存器,主要用于乘除指令中。乘法指令的两个操作数分别取自累加器A和寄存器B,其中B为乘数,乘法结果的高8位存放于寄存器B中。除法指令中,被除数取自A,除数取自B,除法的结果商数存放于A,余数存放于B中。在其他指令中,B寄存器也可作为一般的数据单元来使用。
③ 算术/逻辑部件。算术/逻辑部件ALU是用于对数据进行算术运算和逻辑操作的执行部件,由加法器和其他逻辑电路(移位电路和判断电路等)组成。在控制信号的作用下,完成算术加、减、乘、除和逻辑与、或、异或等运算,以及循环移位操作、位操作等功能。
④ 程序状态字PSW。程序状态字是一个8位寄存器,它包含程序的状态信息。在状态字中,有些位状态是根据指令执行结果,由硬件自动完成设置的,而有些状态位则必须通过软件方法设定。PSW中的每个状态位都可由软件读出,PSW的各位定义如表1.2所示。
表1.2 PSW的各状态位定义
a.CY:进位标志位。在执行某些算术和逻辑指令时,可以被硬件或软件置位或清零。在算术运算中它可作为进位标志,在位运算中,它作为累加器使用,在位传送、位与和位或等位操作中,都要使用进位标志位。
b.AC:辅助进位标志。进行加法或减法操作时,当发生低四位向高四位进位或借位时,AC由硬件置位,否则AC位被置“0”。在进行十进制调整指令时,将借助AC状态进行判断。
c.用户标志位。该位为用户定义的状态标记,用户根据需要用软件对其置位或清零,也可以用软件测试F0来控制程序的跳转。
d.RS1和RS0:寄存器区选择控制位。该两位通过软件置“0”或“1”来选择当前工作寄存器区,如表1.3所示。
e.OV:溢出标志位。当执行算术指令时,由硬件置位或清零来指示溢出状态。在带符号的加减运算中,OV=1表示加减运算结果超出了累加器A所能表示的符号数有效范围(-128~+127),即运算结果是错误的,反之,OV=0表示运算正确,即无溢出产生。
无符号数乘法指令MUL的执行结果也会影响溢出标志,若置于累加器A和寄存器B的两个数的乘积超过了255,则OV=1,反之OV=0。由于乘积的高8位存放于B中,低8位存放于A中,OV=0则意味着只要从A中取得乘积即可,否则要从BA寄存器对中取得乘积结果。在除法运算中,DIV指令也会影响溢出标志,当除数为0时,OV=1,否则OV=0。
f.P:奇偶标志位。每个指令周期由硬件来置位或清零,用以表示累加器A中1的个数的奇偶性,若累加器中1的个数为奇数则P=1,否则P=0。
(2)控制器。控制器是CPU的大脑中枢,它包括:定时控制逻辑、指令寄存器、数据指针(DPTR)、程序计数器(PC)、堆栈指针(SP)、地址寄存器、地址缓冲器。
① 程序计数器:程序计数器(Program Counter,PC)用来存放下一条要执行的指令的地址。当按照PC所指的地址从存储器中取出一条指令后,PC会自动加l,即指向下一条指令。程序计数器PC是控制器中的一个重要部件,是一个16位的计数器,用于存放CPU所要执行的下一条指令的地址,可寻址范围为0000H~FFFFH。PC有自动加1功能,以实现程序的顺序执行。PC没有地址,是不可寻址的,因此用户无法对它进行读写操作,但在复位、中断以及执行转移、调用和返回指令时会自动改变其内容,以改变程序的执行顺序。通俗来讲,PC是整个CPU的“指挥者”,PC指到哪,CPU就从那里开始执行程序。
② 堆栈指针:堆栈指针(Stack Pointer,SP)是指在片内RAM的l28B(52子系列为256B)空间中开辟的堆栈区的栈顶地址,并随时跟踪栈顶地址变化。堆栈是按先进后出的原则存取数据的,开机复位后,单片机栈底地址为07H。
③ 指令寄存器和指令译码器:指令寄存器和指令译码器(Instruction Register,IR)的功能是对将要执行的指令进行存储和译码。当指令送入指令寄存器后,对该指令进行译码,即把指令转变成所需的电平信号,CPU根据译码输出的电平信号,使定时控制电路产生执行该指令所需的各种控制信号,以便计算机能正确地执行指令所要求的操作。
④ 数据指针:由于8051系列单片机可以外接64KB的数据存储器和I/O接口电路,故在单片机内设置了l6位的数据指针寄存器(Data Pointer,DPTR)。它可以对64KB的外部数据存储器和I/O进行寻址,DPTR可分为高8位数据指针寄存器(DPH)和低8位数据指针寄存器(DPL),地址分别为83H和82H。
(3)布尔(位)处理器。在8051单片机系统中,与字节处理器相对应,还特别设置了布尔(位)处理器,主要进行位操作运算。
2.存储器
如图1.3所示,8051在物理结构上有4个存储空间:片内程序存储器,0000H~0FFFH;片外程序存储器(可扩展),0000H~FFFFH;片内数据存储器:00H~FFH;片外数据存储器(可扩展),0000H~FFFFH。
从用户使用的角度上,MSC-51有3个存储空间:片内外统一编址的64 KB程序存储器空间(用16位地址),256 B片内数据存储器空间(用8位地址),64KB片外数据存储器地址空间。
图1.3 MCS-51的存储器结构图
3.并行输入/输出端口
8051单片机有4个8位I/O口(P0、P1、P2和P3),以实现CPU与片外数据的并行输入/输出。
4.定时器/计数器
8051单片机有2个16位的可编程定时器/计数器,以实现定时、延时和计数功能。
5.中断系统
8051单片机有5个中断源,即2个外部中断、2个定时器/计数器中断和1个串行口中断,采用高级和低级两个优先级管理。
6.串行口
8051单片机有一个全双工的串行口,以实现单片机和其他设备之间的串行数据通信。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位寄存器使用。
1.2.4 单片机的引脚
图1.4所示为单片机的引脚及其逻辑符号,共有电源及晶振引脚(共4只),控制引脚(共4只),输入/输出引脚(共32只)。
其功能分别为:
(1)电源及晶振引脚。如图1.5所示。VCC(40脚):+5V电源引脚;VSS(20脚):接地引脚;XTAL1(19脚):外接晶振引脚(内置放大器输入端);XTAL2(18脚):外接晶振引脚(内置放大器输出端)。
图1.4 单片机的引脚及其逻辑符号
图1.5 电源及晶振引脚
(2)控制引脚。如图1.6所示。RST/VPD(9)为复位/备用电源引脚:当RST(RESET)端保持两个机器周期(24个时钟周期)以上的高电平时,单片机完成复位操作。VPD为内部RAM的备用电源输入端,当主电源VCC一旦发生断电或电压降到一定值时,可通过VPD为单片机内部RAM提供电源,以保护片内RAM中的信息不丢失,使VCC上电后能继续正常运行。
(30)为地址锁存使能输出/编程脉冲输入:在访问外部存储器时,ALE用来锁存P0送出的低8位地址信号,还可以固定输出振荡频率的脉冲,可作为脉冲信号源使用。用于8751内部EPROM编程时的编程脉冲输入端。
(29):输出访问片外程序存储器读选通信号引脚。当访问外部ROM时,产生负脉冲作为外部ROM的选通信号。
/VPP(31)。片内、外ROM选择控制引脚/编程电源输入引脚。=0:访问外部程序存储器,外部程序存储器的地址从0000H开始到FFFFH(64KB);=1:访问片内与片外程序存储器,CPU先执行内部数据存储器的指令,地址从0000H到0FFFH(4KB),然后执行外部数据存储器的指令(超过4KB时),地址为1000H到FFFFH。由于8031无内部ROM所以必须接地。VPP为8751 EPROM的21V编程电源输入端。
图1.6 控制引脚
(3)并行I/O口引脚。共计4×8=32个引脚,其中,P0.0~P0.7(39~32脚)为P0口I/O引脚,或数据线/低8位地址总线复用引脚;P1.0~P1.7(1~8脚)为P1口I/O引脚;P2.0~P2.7(21~28脚)为P2口I/O引脚,或高8位地址总线引脚;P3.0~P3.7(10~17脚)为P3口I/O引脚。此外,每个引脚都有第二功能。