购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 8051单片机内部结构与硬件资源

8051单片机内部包含组成计算机所需的多种部件,包括CPU、RAM、ROM/EPROM、并行口、串行口、定时器/计数器、中断系统及特殊功能寄存器8个功能单元,这些单元通过片内的单一总线相连,采用CPU加外围芯片的结构模式,各个功能单元都采用特殊功能寄存器集中控制的方式。8051单片机内部结构示意图如图1-8所示。

图1-8 8051单片机内部结构示意图

1.2.1 单片机内部结构

(1)CPU

CPU是单片机的核心,完成运算和控制功能。MCS-51系列单片机的CPU字长是8位,能处理8位二进制数或代码,也可处理一位二进制数。

(2)片内数据存储器RAM

传统MCS-51单片机有256个字节的RAM单元,其中128个字节被专用寄存器占用。作为存储单元供用户使用的是前128个字节,用于存放程序运行产生的临时数据,通常所说的内部数据存储器就是指前128个字节,也称为片内RAM。增强型51单片机的RAM存储器也采用MCS-51结构划分,增加的RAM空间在应用过程中可利用程序进行操作。

(3)片内程序存储器ROM

单片机片内ROM用于存放程序、原始数据或表格,也称为程序存储器。传统MCS-51系列片内只有4KB的ROM,在兼容51系列产品中,单片机的程序存储器多采用Flash ROM或EEPROM技术,既可以保存单片机运行的程序,也可以保存单片机运行过程中的数据,如STC单片机IAP15F2K61S2芯片,片内含有61KB的Flash ROM,用户可以当作程序存储器使用,也可以当作EEPROM使用。

(4)I/O口

传统MCS-51单片机共有4组并行I/O口,定义为P0、P1、P2、P3接口,每组8位,共有32位,分别与内部4个寄存器P0、P1、P2、P3相连接,32个接口可以用作输入,也可以用作输出。

(5)定时器/计数器

传统MCS-51单片机共有T1、T2两个16位的定时器/计数器,具有4种工作方式,每个定时器/计数器都可以设置成计数方式,用以对外部脉冲进行计数;也可以设置成定时方式,对内部脉冲计数,并可以根据计数或定时的结果实现定时控制。增强51系列片内增加了T2、T3等多个定时器,在应用中,定时器的工作方式和功能分别由各自对应的控制寄存器(特殊功能寄存器)控制。

(6)串行口

51系列单片机至少有一个全双工的串行口,具有4种工作方式,以实现单片机和其他设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。单片机与计算机之间的通信也可以通过单片机的串行口实现,由于两者通信数据电平要求不同,单片机与计算机之间的通信需要通过RS232接口实现。

(7)片内振荡器和时钟产生电路

单片机系统常用的晶振频率一般为6MHz、11.0592MHz或12MHz。单片机系统时钟由脉冲振荡电路产生,传统51单片机芯片内部只集成了时钟电路,需要外接石英晶体和微调电容,现在很多单片机片内集成了RC振荡电路,可以省去外接的晶体电路即可产生时钟信号。

(8)中断

中断是单片机重要的系统资源,单片机有较强的中断功能,以满足各种控制的需要。传统MCS-51单片机共有5个中断源,即外部中断两个,定时器/计数器中断两个,串行口中断一个,增强型的单片机支持多种中断操作,如T2中断、A/D相关中断、PWM相关中断等,MCS-51单片机的中断源与入口地址见表1-2。

表1-2 MCS-51单片机的中断源与入口地址

在单片机系统运行过程中,数据的运算处理由CPU完成,数据的传输通过内部总线自动实现,片内各个部件的运行状态由用户编写的程序以及相关的特殊功能寄存器控制完成。单片机用户在进行单片机开发过程中,一旦单片机选型确定,剩余的工作是功能的实现及怎样提高系统运行速度和可靠性。

1.2.2 CPU

CPU(中央处理器)是单片机的核心,主要功能是产生各种控制信号,根据程序中每一条指令的具体功能,控制寄存器和I/O口的数据传送,进行数据的算术运算、逻辑运算以及位操作等处理。MCS-51系列单片机的CPU字长是8位,能处理8位二进制数,也可处理1位二进制数。单片机的CPU从功能上一般分为控制器和运算器两部分。

1.控制器

控制器由程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)、定时控制与条件转移逻辑电路等组成,其功能是对来自ROM中的指令进行译码,通过定时电路,在规定的时刻发出各种操作所需的内部和外部控制信号,使各部分协调工作,完成指令所规定的功能。

(1)程序计数器

程序计数器(PC)是一个16位的专用寄存器,用来存放下一条指令的地址,具有自动加1的功能。CPU在取指令时,将PC中的地址信息送到地址总线上,从ROM中取出一个指令码后,PC内容自动加1,指向ROM的下一个单元,从而实现指令的顺序执行。

PC用来指示程序的执行位置。在顺序执行程序时,单片机每执行一条指令,PC自动加1,指向下一条待取指令的存储单元的16位地址,即CPU总是把PC的内容作为地址,根据该地址从ROM中取出指令码或包含在指令中的操作数。每取完一个字节后,PC的内容自动加1,为读取下一个字节做好准备。MCS-51系列单片机的寻址范围为64KB,对应于PC中的数据范围是0000H~FFFFH。单片机复位时,PC自动清0,即装入地址0000H,使单片机在复位后,程序从ROM的0000H单元开始执行。

(2)指令寄存器

指令寄存器(IR)是一个8位寄存器,用于暂存待执行的指令,等待译码。

(3)暂存器

暂存器(TMP)用来暂存由数据总线(DB)或通用寄存器送来的操作数,并把它作为另一个操作数。

(4)指令译码器

指令译码器(ID)是CPU的一部分,用于对指令寄存器中的指令进行译码,将存储在指令寄存器或微程序指令中的二进制代码转换为能控制CPU其他部分的控制信号。指令译码器的输出信号经定时电路产生完成该指令操作所需要的各种控制信号。

(5)数据指针

数据指针(DPTR)是一个16位的专用地址指针寄存器,主要用来存放16位地址,作为间址寄存器访问64KB的数据存储器和I/O口及程序存储器,由DPH(高8位)和DPL(低8位)两个独立的特殊功能寄存器组成,地址分别是83H和82H。

DPTR与PC不同,DPTR有自己的地址,可以进行读写操作,而PC没有地址,不能对它进行读写操作,但可以通过转移、调用、返回指令改变其内容,从而实现程序的转移。

2.运算器

运算器主要进行算术和逻辑运算。运算器由算术逻辑单元(ALU)、累加器(ACC)、程序状态字(PSW)、BCD码运算电路、通用B寄存器和一些专用寄存器及位处理逻辑电路等组成。

(1)算术逻辑单元

算术逻辑单元(ALU)由加法器和其他逻辑电路等组成,完成数据的算术逻辑运算、循环移位、位操作等,参加运算的两个操作数,一个由A通过暂存器2提供,另外一个由暂存器1提供,运算结果送回A,状态送PSW。

(2)累加器

累加器(ACC)是一个8位特殊功能寄存器,简称A,通过暂存器与ALU相互传送信息,运算前提供一个操作数,运算后存放运算结果。

(3)程序状态字

程序状态字(PSW)也是一个8位的特殊功能寄存器,用于存储指令执行后的相关状态信息,如进位、溢出等情况。

(4)其他部件

暂存器用来存放中间结果,B寄存器在乘法和除法指令中提供一个操作数,在其他指令中可用作通用寄存器。

(5)位处理器

位处理器是单片机的一个特殊组成部分,具有相应的指令系统,可提供17条位操作指令。硬件上有自己的“位累加器”和位寻址RAM、I/O口空间,方便了控制系统中开关量的处理。

单片机能处理布尔操作数,能对位地址空间中的位直接寻址,并进行清零、取反等操作。这种功能提供了把逻辑式(随机组合逻辑)直接变为软件的简单方法,不需要过多的数据传送、字节屏蔽和测试分支,就能实现复杂的组合逻辑功能。

1.2.3 存储器

单片机内部包含随机存取存储器(RAM)和程序存储器(ROM),RAM用于保存单片机运行的中间数据;单片机的ROM不只是用来装载程序,增强51系列也可以在单片机运行过程中利用程序把数据存储在ROM(EEPROM)的部分空间内。

MCS-51系列单片机在系统结构上采用哈佛结构,即程序存储器和数据存储器的寻址空间是分开管理的。它共有4个物理上独立的存储器空间,即内部和外部程序存储器及内部和外部数据存储器。从用户的角度来看,单片机的存储器逻辑上分为3个存储空间,如图1-9所示,即统一编址的64KB的程序存储器地址空间(包括片内ROM和外部扩展ROM),地址为0000H~FFFFH;256B的片内数据存储地址空间(包括128B的片内RAM和特殊功能寄存器的地址空间);64KB的外部扩展数据存储器地址空间。图中 是单片机的程序扩展控制引脚。

图1-9 51系列单片机的存储器空间分布

1.单片机的RAM

8051单片机芯片中共有256B的RAM单元,其中128B被专用寄存器占用,用户使用的只是前128B,即通常所说的片内128B数据存储器,它可以用来存放临时可读写的数据,但在单片机掉电时,RAM单元的所有数据将丢失。单片机对RAM的寻址空间可达64KB。

单片机片内128B的RAM根据功能又划分为工作寄存器区R0~R7,地址范围00H~1FH;位寻址区地址范围20H~2FH;堆栈区、数据缓冲区地址范围30H~7FH,其中位寻址区共有16字节128个位单元。

8051单片机共有21个特殊功能寄存器,它是片内RAM的一部分。特殊功能寄存器用于对片内各功能模块进行监控和管理,是一些控制寄存器和状态寄存器,与片内RAM单元统一编址。

2.内部程序存储器(内部ROM)

8051单片机共有4KB的ROM,单片机的生产商不同,内部程序存储器可以是EEPROM或EEPROM。增强型的51单片机内部ROM空间可以达到64KB,在使用时不须再扩展片外ROM。

数据存储器、程序存储器以及位地址空间的地址有一部分是重叠的,但在具体寻址时,可由不同的汇编指令格式和相应的控制信号来区分不同的地址空间,因此不会造成冲突。

1.2.4 专用寄存器

单片机内部与程序运行有关的特殊功能寄存器称为单片机的专用寄存器,这些寄存器在单片机程序运行过程中起重要作用,用户可以通过软件查询的方法去观察寄存器的结果,有的寄存器也可通过软件改变其状态。

(1)累加器(ACC/A)

累加器(A)为8位寄存器,是最常用的专用寄存器,功能较多,使用最为频繁。它既可用于存放操作数,也可用来存放运算的中间结果。51系列单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。累加器有自己的地址,因而可以进行地址操作。

在C语言编程中,如果想让累加器中的内容为十进制56,简单的语句为

A=56;

在汇编语言中则要用到数据传输指令,命令格式为

MOV A,#56;

(2)B寄存器

B寄存器是一个8位寄存器,主要用于乘除运算。乘法运算时,B提供乘数。乘法操作后,乘积的高8位存于B中。除法运算时,B提供除数。除法操作后,余数存于B中。此外,B寄存器也可作为一般数据寄存器使用。如在C语言中“B=56;”或“abc=B;”,abc为用户自定义变量。

(3)程序状态字(PSW)

程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。其中有些位的状态是由程序执行结果决定,硬件自动设置的,而有些位的状态则使用软件方法设定。PSW的位状态可以用专门指令进行测试,也可以用程序读出。一些条件转移指令可以根据PSW特定位的状态进行程序转移。PSW各位标示符定义格式为

PSW.7为进/借位标志位(Carry, CY):表示运算是否有进位或借位。其功能有二:一是存放算术运算的进/借位标志,在进行加或减运算时,如果操作结果的最高位有进位或借位时,CY由硬件置“1”,否则清“0”;二是在位操作指令中,作位累加器使用。

PSW.6为辅助进/借位标志位(Auxiliary Carry, AC),也叫半/借进位标志位。在进行加减运算中,当低4位向高4位进位或借位时,AC由硬件置“1”,否则AC位被清“0”。在BCD码的加法调整中也要用到AC位。

PSW.5为用户标志位F0(Flag 0),是一个供用户定义的标志位,可以利用软件方法置位或复位。

PSW.4/PSW.3为寄存器组选择位RS1/RS0(Register Selection),用于选择CPU当前使用的工作寄存器组,其对应关系见表1-3。

表1-3 寄存器组的映射表对应关系

这两个选择位的状态是由程序设置的,被选中的寄存器组即为当前寄存器组。单片机上电或复位后,RS1/RS0=00,即默认的工作寄存器组是第0组。

PSW.2为溢出标志位OV(Overflow)。在带符号数的加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128~+127),即产生了溢出,表示A中的数据只是运算结果的一部分;OV=0表示运算正确,即无溢出产生,表示A中的数据就是全部运算结果。在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;否则,OV=0,表示乘积只在A中。在除法运算中,OV=1表示除数为0,除法不能进行;否则,OV=0,除数不为0,除法可正常进行。

PSW.1为用户标志位F1(Flag 1),也是一个供用户定义的标志位,与F0类似。

PSW.0为奇偶标志位P(Parity),表示累加器A中“1”的个数奇偶性。如果A中有奇数个“1”,则P置“1”,否则置“0”,即完全由累加器的运算结果中“1”的个数为奇数还是偶数决定。注意标志位P并非用于表示累加器A中数的奇偶性。凡是改变累加器A中内容的指令均会影响标志位P。标志位P对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。

(4)数据指针(DPTR)

DPTR为16位寄存器。编程时,DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即DPTR的高位字节DPH和DPTR的低位字节DPL。

在系统扩展中,DPTR作为程序存储器和片外数据存储器的地址指针,用来指示要访问的ROM和片外RAM的单元地址。由于DPTR是16位寄存器,因此,通过DPTR可寻址64KB的地址空间。

(5)堆栈指针(SP)

堆栈是一个特殊的存储区,用来暂存系统的数据或地址,它是按“先进后出”或“后进先出”的原则来存取数据的,系统对堆栈的管理是通过8位的SP寄存器来实现的,SP总是指向最新的栈顶位置。堆栈的操作分为进栈和出栈两种。

由于MCS-51系列单片机的堆栈设在片内RAM中,SP是一个8位寄存器。系统复位后,SP的初值为07H,但堆栈实际上是从08H单元开始的。由于08H~1FH单元分别属于工作寄存器1~3区,20H~2FH是位寻址区,如果程序要用到这些单元,最好把SP值改为2FH或更大的值。一般在片内RAM的30H~7FH单元中设置堆栈。SP的内容一经确定,堆栈的位置也就跟着确定下来。由于SP可初始化为不同值,因此堆栈的具体位置是浮动的。

(6)P0~P3寄存器

P0~P3是和输出/输入有关的4个特殊寄存器,实际上是4个锁存器。每个锁存器加上相应的驱动器和输入缓冲器就构成一个并行口,为单片机外部提供32根I/O引脚,命名为P0~P3口。

前面提到的程序计数器(PC)是一个16位的加1计数器,其作用是控制程序的执行顺序,而其内容为将要执行指令的ROM地址,寻址范围是64KB。它并不在片内RAM的高128B内。

1.2.5 特殊功能寄存器

特殊功能寄存器是通过专门规定而且具有特定用途的RAM单元,它是单片机内部很重要的部件。特殊功能寄存器能综合反映单片机系统内部的工作状态和工作方式。包含部分专用寄存器在内,其中一部分控制程序运行,另一部分控制内部部件,如定时器/计数器和串行口的控制,改变控制寄存器的状态就可以改变这些部件的工作方式。

1.特殊功能寄存器标示符

51系列单片机内部堆栈指针(SP)、累加器(A)、程序状态字(PSW)、I/O锁存器、定时器、计数器以及控制寄存器和状态寄存器等都是特殊功能寄存器,和片内RAM统一编址,分散占用80H~FFH单元,共有21个,增强型的52系列单片机则有26个。表1-4列出了单片机的特殊功能寄存器名称、标识符和对应的字节地址,其中含有52系列的寄存器T2、T2CON等。在单片机C语言编程应用中,单片机的特殊功能寄存器标识符经常用到。下面只介绍其中部分寄存器,一些控制寄存器会在单片机内部资源编程应用中详细介绍。

表1-4 单片机的特殊功能寄存器及其地址

(续)

2.特殊功能寄存器的位操作

在程序设计过程中,单片机的功能发挥很多情况下是设置和检测单片机内部的特殊功能寄存器来实现的,如果采用汇编设计程序,必须牢记单片机内部通用寄存器和特殊功能寄存器的作用,所以要求设计者必须有更多的硬件基础。如果采用C语言设计单片机的程序,因为程序中的数据处理和分配是由编译软件自动完成的,通用寄存器在程序设计过程中就可以忽略,并且也不需要记住特殊功能寄存器的地址,只需要记住特殊功能寄存器和每个特殊功能寄存器的位标识符和作用就可以了。

在单片机C语言程序设计中,对特殊功能寄存器的操作很简单,只需对某个寄存器或位标识符赋值即可。比如,PSW=PSW&0x7f与CY=0结果一样,前一个语句是字节操作,后一个语句是位操作。单片机C语言程序设计中常用于控制的特殊功能寄存器的位标识符和位地址表见表1-5,其中T2CON为增强51系列。

表1-5 特殊功能寄存器位标识符和位地址表

(续)

不是所有的特殊功能寄存器都可以进行位的编程操作,对于没有定义位标识符或位标识符重复的寄存器,用户无法对位直接访问,如TMOD,由于其高4位和低4位标识符同名,只能采用字节操作。如要设定低4位为0001B,只需使TMOD=0xf1 & TMOD。特殊功能寄存器有很多用来控制单片机内部各个部件的运行状态,这些寄存器都有针对性的应用,如单片机中断需要IE、IP等寄存器控制。

定时器/计数器、并行I/O口、串行口、中断系统等部件是单片机内部重要的硬件资源,这些资源在以后的学习过程中将通过应用项目重点介绍。另外,特殊功能寄存器是学习单片机程序设计的基础,其应用会在以后章节的相关项目中详细说明。 WtyA+fgnpL5eym69VwefHzha+oywAnPRaQjIjTQWIY3Pr0M0dPlEvYEBvfydJizB

点击中间区域
呼出菜单
上一章
目录
下一章
×