MCS-51基本构成
Ø CPU :8位
Ø 存储器:128字节RAM;4K字节ROM存储器
Ø 并行口:4个8位并行口
Ø 串行口:1个全双工的串行口
Ø 21个专用特殊功能寄存器
Ø 定时器/计数器:2个16位的定时器/计数器
Ø 中断系统:5个中断源,两个中断优先级
Ø 寻址范围: 64K字节(程序存储区和外部数据存储区各64K)
即MCS-51是8位单片机,有40个管脚,8根数据线,16根地址线。通常称为八大基本组成部分:CPU 、ROM、RAM、I/O 、定时/计数器、串口、SFR、中断服务系统。备注:其中特殊功能寄存器(SFR)共有21个,是一个具有特殊功能的RAM区。
一、中央处理器(CPU):单片机的核心部分,是单片机的指挥和执行部件。 由运算器和控制器所构成,CPU内部没有单独的存储器,而是设置了一些工作寄存器,暂存数据和状态等。
1 . 运算器:对操作数进行算术、逻辑运算和位操作,存储运算结果并作相应标记。
1.1算术逻辑运算单元ALU
1.2累加器A :使用最频繁的寄存器,可写为Acc。
A的作用:(1)是ALU的输入之一,又是运算结果的存放单元。(2)数据传送大多都通过累加器A。MCS-51增加了一部分可以不经过累加器的传送指令,即可加快数据的传送速度,又减少A的“瓶颈堵塞”现象。
A的进位标志Cy同时又是位处理机的位累加器。
1.3程序状态字寄存器PSW
(1)Cy(PSW.7)进位标志位
(2)Ac(PSW.6) 辅助进位标志位,用于BCD码的十进制调整运算。
(3)F0(PSW.5)用户使用的状态标志位。
(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。
RS1 RS0 所选的4组寄存器
0 0 0区(内部RAM地址00H~07H)
0 1 1区(内部RAM地址08H~0FH)
1 0 2区(内部RAM地址10H~17H)
1 1 3区(内部RAM地址18H~1FH)
通用寄存器
(5)OV(PSW.2)溢出标志位 :指示运算是否产生溢出。各种算术运算指令对该位的影响情况较复杂。
(6)PSW.1位: 保留位,未用
(7)P(PSW.0)奇偶标志位
P=1,A中“1”的个数为奇数
P=0,A中“1”的个数为偶数
1.4 寄存器B:主要用于乘、除运算。寄存器B也可作为一般的寄存器用。
2. 控制器:控制计算机各部分协调工作。
2.1程序计数器PC(Program Counter):存放下一条要执行的指令在程序存储器中的地址。PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。PC的寻址范围为64KB,即地址空间为0000~0FFFFH。基本工作方式有以下几种:
(1)程序计数器自动加1 ,从而实现程序的顺序执行。
(2)执行有条件转移或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。
(3)在执行调用子程序调用或中断调用,完成下列操作:① PC的现行值保护② 将子程序入口地址或中断向量的地址送入PC。
2.2数据指针DPTR:数据指针DPTR为16位寄存器,它是MCS—51中唯一的一个16位寄存器。DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。DPH 为DPTR的高八位寄存器,DPL 为DPTR的低八位寄存器。
2.3堆栈指针SP:SP为8位寄存器,用于指示栈顶单元地址。堆栈是一种数据结构,只允许在其一端进行数据删除和数据插入操作的线性表。数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。堆栈的最大特点是“后进先出”的数据操作原则。
基本操作:(1)进栈:使SP的内容增1后作数据压入操作;(2)出栈:先把栈顶的数据弹出,然后使SP的内容减1。 (先进后出)
堆栈的功用:堆栈的主要功用是保护断点和保护现场。因为计算机无论是执行中断程序还是子程序,最终要返回主程序,在转去执行中断或子程序时,要把主程序的断点保护起来,以便能正确的返回。同时,在执行中断或子程序时,可能要用到一些寄存器,需把这些寄存器的内容保护起来,即保护现场。
Ø堆栈的设置:MCS—51系列单片机的堆栈通常设置在内部RAM的30H~7FH之间。
Ø堆栈指示器SP:SP为8位寄存器,用于指示栈顶单元地址。由于SP的内容就是堆栈“栈顶”的存贮单元地址,因此可以用改变SP内容的方法来设置堆栈的初始位置。当系统复位后,SP的内容为07H,但为防止数据冲突现象发生,堆栈最好设置在内部RAM的30H~7FH单元之间,例如使(SP)=30H。
2.4指令寄存器、译码器、定时
指令寄存器(IR):存放所取出的指令;指令译码器(ID):对指令进行译码;定时和控制电路:根据指令发出时序控制信号。
指令执行过程的基本概念
指令:是计算机执行某种操作的命令。指令通常由操作码和操作数两部分组成。操作码:表示计算机执行什么具体操作。操作数:表示参加操作的数或操作数所在的地址。程序:为完成某项工作,将一系列指令有序地组合。
三、MCS-51的片外总线结构
总线:是用来传送信息的一组导线,它为CPU和其他部件之间提供数据、地址、和控制信息的传输通道。一般包括:(1)地址总线AB:用来传送地址信息。地址总线是由CPU出发的,因而是单向的。地址总线的位数决定了CPU可直接寻址的内存范围。(2) 数据总线DB:用于传送数据信息。数据既可以从CPU传送到存储器或输入输出接口,也可以从存储器或输入输出接口传送到CPU,因而是双向的。(3)控制总线CB:用于传送控制信号。一种是有CPU发出到存储器或输入输出接口,一种是有输入输出接口发送到CPU的控制信号。
地址总线AB:宽度为16位;因此,外部存储器直接寻址为64k字节。16位地址总线中,有P0口经地址锁存器提供低8为地址A0-A7,P2口直接提供高8位地址A8-A15。
数据总线DB:宽度为8位,由P0口提供。
控制总线CB:由P3口的第二功能状态和4根独立控制线组成。
四、存储器结构:
单片机结构有两种类型:一种是程序存储器与数据存储器分开的形式,即哈弗结构; 另一种是通用计算机广泛使用的程序存储器和数据存储器合二为一的结构,冯诺依曼结构。冯诺依曼结构是在哈佛结构之后提出的,冯诺依曼提出“代码本身也是一种数据”,解决了哈佛结构的一个问题——总线暂用资源太多。MCS-51存储器的结构:哈佛(Har-vard)结构 。
关于存储器相关知识:储存二进制信息的数字电路器件。存储器包括主存储器和外存储器。外存储器(外存)指各种大容量的磁盘存储器、光盘等。存储器(内存)指能与CPU直接进行数据交换的半导体存储器。半导体存储器:按读、写功能可以分为随机读/写存储器RAM和只读存储器ROM。随机读/写存储器RAM在断电后再通电时,原存的信息全部丢失。它主要用来存放临时的数据和程序。只读存储器ROM在使用时,只能读出信息,而不能写入,且在断电后ROM中的信息仍然保留。它主要用来存放固定不变的程序和数据。
存储单元的基本单位是Byte,1B = 8bit , 1024(210)B = 1KB, 1024K(220)B =1MB, 1024M(230)B = 1GB , 1024G(240)B = 1TB 。
1、只读存储器ROM分类:(1)掩膜ROM:其存储的信息在制造过程中采用光刻工艺生成,一旦出厂,信息就不可改变。(2)可编程只读存储器 PROM:其存储的信息可由用户通过特殊手段一次性写入,但只能写入一次。(3)可擦除只读存储器:其存储的信息用户可以多次擦除,并可用专用的编程器重新写入新的信息。可擦除只读存储器又可分为紫外线擦除的EPROM、电擦除的EEPROM和Flash ROM。
MCS-51存储器空间可划分为5类:(1)程序存储器空间:8031无内部程序存储器。 (2)内部数据存储器空间。(3)特殊功能寄存器SFR-Special Function Register。(4)位地址空间: 211个可寻址位。(5)外部数据寄存器空间:片外可扩展64K字节RAM。
ROM主要用来存放程序、表格、常数;RAM主要用来存放变量、原始数据、中间数据、运算结果;
MCS-51机的内存结构
程序存储器 :存放应用程序和表格之类的固定常数。分为片内和片外两部分,由EA*引脚上所接的电平确定。程序存储器中的0000H地址是系统程序的启动地址。
当单片机的EA引脚为1: 同时使用片内外的ROM。若程序计数器PC的值在4KB(0000H~0FFFH)范围内,CPU访问片内ROM,执行片内ROM中的程序;若PC的值大于0FFFH(0FFFH~FFEFH),CPU将自动访问片外ROM。
单片机的EA引脚为0: 只使用片外ROM,丢弃片内ROM。CPU的所有取指令操作均访问片外ROM,这是片外ROM从0000H开始编址。
在程序存储器中,有6个地址单元被保留用于某些特定地址
问题:单片机复位后,程序计数器PC的内容为0000H,即系统从0000H单元开始执行程序。然而,由于0003H单元被保留,不能存放用户程序。我们怎么存放大量的程序?
解决的方法:所以,一般在0000H~0002H单元,存放一条无条件转移指令(类似goto),从而程序可从转移后的地址开始存放。这样,CPU复位后,PC可以从0000H起始地址跳转到用户程序去执行。
2、数据存储器 (RAM):用于存放数据、运算的中间结果和标志等,128个位寻址,字节地址为00H~7FH。
片内数据存储器:8位地址,共256个字节存储单元。对片内RAM使用MOV指令访问;
片外数据存储器:16位地址,最大可扩展至64K字节;对片外RAM使用MOVX指令访问;
其中00H~1FH为通用工作寄存器区,分为4组,每组8个工作寄存器R0~R7,每个寄存器一个字节。在任一时刻,CPU只能使用其中一组通用寄存器,称为当前通用寄存器组。由程序状态寄存器PSW中RS1,RS0位的状态组合来确定。通用寄存器为CPU提供了就近存取数据的便利,提高了工作速度,也为编程提供了方便。
片内数据存储器的低128字节
00H~1FH:32个单元,是4组通用工作寄存器区
20H~2FH:16个单元,可进行128位的位寻址
30H~7FH:用户RAM区,只能进行字节寻址,用作数据缓冲区以及堆栈区。
20H~2FH为位寻址区。16个字节共128位,每一位都分配一个8位地址,称为位地址,其范围是00H~7FH。位寻址区既可作为一般的RAM区进行字节操作;也可对单元的每一位进行位操作,因此称为位寻址区,是存储空间的一部分。
30H~7FH为数据缓冲区,用来存放数据。用户堆栈一般设在这个区间。
特殊功能寄存器(SFR):片内数据存储器的高128字节,内部RAM高128单元是供给专用寄存器使用的,因此称之为专用寄存器区(也称为特殊功能寄存器区(SFR)区),单元地址为80H~0FFH。其实就是CPU对各种功能部件的控制采用特殊功能寄存器集中控制方式,共21个,有的SFR可进行位寻址。
下表是SFR的名称及其分布。其字节地址的末位是0H或8H。
外部数据存储器,最多可外扩64K字节的RAM或I/O 。 使用各类存储器,注意几点:
(1) 地址的重叠性
程序存储器(ROM)与数据存储器(RAM)全部64K字节地址空间重叠)。
程序存储器(ROM)与数据存储器(RAM)在使用上是严格区分的 。
(3)位地址空间共有两个区域。
(4)片外数据存储区中,RAM与I/O端口统一编址。
所有外围I/O端口的地址均占用RAM单元地址,使用与访问外部数据存储器相同的传送指令。
四、I/O口:
4个双向的8位并行I/O端口(Port) ,记作P0~P3
属于特殊功能寄存器,还可位寻址。
P0端口
P0口某一位的电路包括:
(1) 一个数据输出锁存器,用于数据位的锁存
(2) 两个三态的数据输入缓冲器。
(3) 一个多路转接开关MUX,使:P0口可作通用I/O口,或地址/数据线口。
(4) 数据输出的驱动和控制电路,由两只场效应管(FET)组成,上面的场效应管构成上拉电路。
P0口传送地址或数据时,CPU发出控制信号为高电平,打开上面的与门,使多路转接开关MUX打向上边,使内部地址/数据线与下面的场效应管处于反相接通状态。此时输出驱动电路由于上下两个FET处于反相,形成推拉式电路结构,大大提高负载能力。
P0口作通用的I/O口使用。这时,CPU发来的“控制”信号为低电平,上拉场效应管截止,多路转接开关MUX打向下边,与D锁存器的Q*端接通。
(1) P0作输出口使用
来自CPU的“写入”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。
注意:由于输出电路是漏极开路(因为这时上拉场效应管截止),必须外接上拉电阻才能有高电平输出。
(2) P0作输入口使用区分“读引脚”和“读锁存器”。
“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;
“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。
P1端口
字节地址90H,位地址90H~97H。
P1口只作通用的I/O口使用,在电路结构上与P0口有两点区别:
(1)因为只传送数据,不再需要多路转接开关MUX。
(2)由于P1口用来传送数据,因此输出电路中有上拉电阻,这样电路的输出不是三态的,所以P1口是准双向口。
因此:
(1)P1口作为输出口使用时,外电路无需再接上拉电 阻。
(2)P1口作为输入口使用时,应先向其锁存器先写入 “1”,使输出驱动电路的FET截止。
五、定时器/计数器/时序
时序的基本概念
ü计算机的工作过程就是不断执行指令的过程。CPU每执行一条指令,都要进行取指令、译码、执行指令。这些操作都必须按照时间节拍一步步地顺序完成。
ü人们把CPU执行一条指令的各个操作所对应的脉冲信号遵循的时间顺序称为时序。时序严格地规定了单片机内部以及与外部各功能部件相互配合协调工作的时空关系。
ü时序图:直观展现CPU的时序。把执行一条指令时对应信号线上有关信息的变化按时间序列以特定的波形表示出来。
按指令的执行过程,定义了四种周期:
ü振荡周期:为单片机提供定时信号的振荡源的周期;
ü时钟周期:振荡脉冲二分频,又称为状态周期S;
ü机器周期:完成一个基本操作(如取指令、读存储器等)所需要的时间称为机器周期。机器周期由6个状态周期(12个振荡周期)组成。
ü指令周期:CPU执行一条指令所需要的时间,可包含1~4个机器周期。
六、复位电路
计算机在启动运行时都需要复位,使CPU和系统中的其他部件都处在一个确定的初始状态,并从这个状态开始工作。只要在MCS-51单片机的RST引脚输入24个振荡周期(即2个机器周期)以上的高电平,单片机即被复位。复位是单片机系统的初始化操作,系统复位后会对专用寄存器和单片机的个别引脚信号有影响,复位后对一些专用寄存器的影响情况如下:
(PC)=0000H:系统复位后,使单片机从0000H单元开始执行程序。
(SP)=07H:单片机自动把堆栈的栈底设置在内部RAM 07H单元,从08H单元开始存储数据。
其余的专用寄存器在复位后都全部清“0”。此外,复位操作还对单片机的个别引脚信号有影响,如把ALE和PSEN信号变为无效状态,即ALE=1,PSEN=1。复位操作对内部RAM不产生影响。