MCS-51是美国Intel公司的8位高档单片机系列。也是我国目前应用最广泛的一种单片机系列。
MCS-51单片机的内部结构
现在将各功能部件划分为存储器、CPU、I/O端口、定时器/计数器、中断系统五部分介绍
存储器结构
不论单片机内部还是片外存储器,MCS-51对某存储单元的读写地址都是由MCS-51提供的
①ROM存储器地址空间(包括片内和片外),地址范围是0000H~FFFFH
②片内RAM地址空间,地址范围是00H~FFH
③片外RAM地址空间,地址范围是0000H~FFFFH
1、ROM
片内和片外之和不能超过64KB,其中0000H~0FFFH的4KB地址区可以为片内片外公用,但不能为两者同时占用。1000H~FFFFH这60KB地址区为片外ROM专用
2、片内RAM
00H~7FH为片内高128位为低128字节区,是真正的RAM区,可以读写各种数据;80H~FFH为片内RAM的高128位RAM区,专门用作特殊功能寄存器(SFR)的区域
特殊功能寄存器是指具有特殊用途的寄存器的集合。
特殊功能寄存器是指具有特殊用途的寄存器集合,它们离散的分布在80H~FFH地址范围内
(1)工作寄存器区(00H~1FH)
这32个RAM单元共分为4组,每组站8个RAM单元,分别用R0~R7表示。某一时刻CPU只能使用其中一组工作寄存器。
具体使用四组中的哪一组,由程序状态寄存器PSW中的RS1RS0状态决定。
工作寄存器的作用就相当于一般微处理器中的通用寄存器
(2)位寻址区(20H~2FH)
这16个内存单元具有双重功能,既可以像普通RAM单元一样按照字节存取,也可以对每个RAM单元中的任何一位单独存取,这就是位寻址。
对需要进行按位操作的数据,都可以放到这个区域
(3)便笺区(30H~7FH)
共有80个RAM单元,用于存放用户数据或做堆栈区使用。
3、片外RAM
片外RAM的最大容量不能超过64KB
CPU结构
1、算数逻辑单元(ALU)
可以进行加减乘除四则运算,
也可以进行与或非异或等逻辑运算,
还具有数据传送,移位,判断和程序转移等功能。
2、定时控制部件
定时控制部件起着控制器的作用,由定时控制逻辑、指令寄存器(IR)和振荡器(OSC)等电路组成。
IR用于存放从程序存储器中取出的指令,定时控制逻辑用户对指令寄存器中的操作码进行译码,并在OSC的配合下产生执行该指令打分时序脉冲,以完成相应指令的执行。
OSC是控制器的心脏,能为控制器提供时钟脉冲。时钟脉冲越高,单片机控制器的控制节拍就越快,运行速度也就越快。
3、专用寄存器组
专用寄存器组主要用来指示当前指令的内存地址、存放操作数和指令执行后的状态。专用寄存器组主要包括程序计数器(PC)、累加器(A)、程序状态字(PSW)、堆栈指针(SP)、数据指针(DPTR)和通用寄存器B
(1)程序计数器(PC)
程序计数器PC是一个二进制16玮的程序地址寄存器,专门用来存放吓一跳将要执行的指令的内存地址,能自动加1.
CPU执行指令时,它是首先根据PC中的地址从存储器中取出当前需要执行的指令码,并把它送给控制器分析执行。
(2)累加器A(ACC)
累加器A又记作ACC,是一个具有特殊用途的二进制8位寄存器,专门用来存放操作数或运算结果。
(3)通用寄存器B
是专门为乘法和除法设置的寄存器。
(4)程序状态字(PSW)
是一个8位标志寄存器,用来存放指令执行后的有关状态
①进位标志位:用于表示加减运算过程中最高位有无进位和借位。此外,位移操作也会影响这个标志位
②辅助进位位
③用户标志位
④寄存器选择位RS1和RS0
⑤溢出标志位
⑥奇偶标志位
(5)堆栈指针(SP)
堆栈指针SP是一个8位寄存器,能自动加1减1,专门用来存放堆栈的栈顶地址。
(6)数据指针(DPTR)
是一个16位的寄存器,由两个8位寄存器DPH和DPL组成。用来存放片内ROM的地址,也可用来存放片外ROM和片外RAM的地址。
I/O端口
I/O端口又称为I/O接口,也叫做I/O通道或者I/O通路。
I/O端口是MCS-51单片机对外部实现控制和信息交换的必经之路,是一个过渡的集成电路,用于信息传送过程中的速度匹配和增强它的负载能力。
I/O端口有串行和并行之分。串行端口一次只能传递1个二进制信息,并行I/O端口每次可以传送1组二进制信息。
1、并行I/O端口
8051有4个并行I/O端口,每个端口都有双向I/O功能。每个I/O端口内部都有一个8位数据输出锁存器和一个8位数据输入缓冲器,4个数据输出锁存器。CPU数据从并行I/O端口输出时可以得到锁存,数据输入时可以得到缓冲。
四个端口在进行I/O方式时,特征基本相同,共有写端口、读端口和读引脚三种操作
写端口实际上就是输出数据,是把累加器A或其他寄存器中的数据传送到端口锁存器中,然后由端口自动从端口引脚线上输出。
读端口实际上并不是从外部读入数据,而只是把端口村村器中的内容读入到内部总线,经过某种运算和变换后,再写回到端口锁存器。属于这种方式的指令称为”读-改-写“指令。
读引脚是从外部加到引脚上的输入数据读入到内部总线。
2、串行I/O端口
定时/计数器
8051内部有两个16位可编程定时/计数器。
16位是指它们都由16个触发器构成,故其最大计数模值为2^16 - 1需要65535个脉冲才能把他们从全0变为全1
可编程是指他们的工作方式可以由指令来设定:或者当计数器用,或者当定时器用。
对定时/计数器的控制由两个8玮特殊功能寄存器完成:一个称谓定时器方式选择寄存器(TMOD),用于确定是采用定时器还是计数器的工作模式;另一个叫做定时器控制寄存器(TCON),可以决定定时器或计数器的启动、停止以及进行中断控制。
中断系统
CPU暂停原程序执行转而为外部设备服务,并在服务完成后回到原程序执行的过程。中断系统是指能够处理上述中断过程所需要的那部分电路。
8051允许接受5个独立的中断源:外部中断源有两个,通常指外部设备;内部中断源有三个,包括两个定时/计数器中断源和1个串行口中断源。
MCS-51单片机的引脚及其功能
1.端口线
(1)P0 第一种情况是8051不带片外存储器,P0口可以作为通用I/O口使用。第二种是8051带片外存储器,在CPU访问片外存储器时先是用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据
(2)P1用于传送用户的输入/输出数据
(3)P2作为通用I/O使用。与P0口引脚的第二个功能配合,用户输出片外存储器的高8位地址,共同选中片外存储单元。
(4)通用I/O端口。做控制用,每个引脚并不完全相同。
2.电源线
3.控制线
(1)ALE/PROG:地址锁存允许/编程线。
(2)EA/Vpp:允许访问片外存储器/编程电源线。
(3)PSEN:片外ROM选通线
(4)RST/VPD:复位/备用电源线
(5)XTAL1和XTAL2:
MCS-51单片机的工作方式
MCS-51的工作方式包括复位方式、程序执行方式、节点方式以及EPROM的编程和校验方式
复位方式
单片机在开机时都需要复位,以便*处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。
程序执行方式
程序执行方式是单片机的基本工作方式,通常可以分为单步执行和连续执行两种。
1、单步执行方式
单步执行方式是指单片机在控制面板上的某个按钮(即单步执行键)控制下逐条执行用户程序中指令的方式。单步执行方式常常用户用户程序的调试。
单步执行方式是利用MCS-51外部中断功能实现的。其中断系统规定:从中断服务程序返回以后至少要再执行一条指令后才能重新进入中断。
2、连续执行方式
连续执行方式是所有单片机都需要的一种工作方式,被执行程序可以存放在片内ROM和片外ROM或者同时放在内外ROM中,由于单片机复位后PC=0000H,因此机器在加点或按钮复位后,总是转到0000H处执行程序,这就可以预先在0000H处放一条转移指令,一遍跳转到真正的程序入口处。
节电工作方式
节点方式是一种能减少单片机功耗的工作方式,通常可以分为空闲(等待)方式和掉电(停机)方式。
1、掉电方式
80C31从掉电状态退出的唯一方法是硬件复位。
2、空闲方式
CPU浸入空闲状态后是不工作的,但各功能部件保持了浸入空闲状态前的内容,且消耗功耗很少。因此,在程序中执行过程中,用户在CPU无事可做或不希望它执行有用程序时应先让它进入空闲状态,一旦需要继续工作就让它退出空闲状态。
CHMOS型器件退出空闲状态有两种方法。一种是让被允许中断的中断源发出中断请求;另一种使CPU退出空闲状态的方法是硬件复位,即在80C31的RST引脚上从一个脉宽大于24个时钟周期的脉冲。
编程和校验方式
这里的编程是指利用特殊手段对单片机片内ERROM进行写操作的过程,校验则是对刚刚写入的程序代码进行读出验证的过程。
MCS-51单片机的时序
单片机时序是CPU在执行指令时所需控制信号的时间顺序。因此,微型计算机中的CPU实质上就是一个复杂的同步时序电路,这个时序电路是在时钟脉冲推动下工作的。
CPU发出时序信号有两类:一类用于片内各功能部件的控制,这类信号很多;另一类用于片外存储器或I/O端口的控制,需要通过器件的控制引脚送到片外,这部分时序对于分析硬件电路原理至关重要。
机器周期和指令周期
1、时钟周期
时钟周期T又称为振荡周期,由单片机片内震荡电路OSC产生,定义为时钟脉冲频率的倒数,是时序中最小的时间单位。
2、机器周期
机器周期定义为实现特定功能所需的时间,通常由若干个时钟周期T构成。
MCS-51的机器周期时间是固定不变的,均由12个时钟周期T组成,分为6个状态,每个状态又分为P1和P2两拍。
3、指令周期
指令周期是时序中最大的时间单位,定义为执行一条指令所需的时间。由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不相同。
包含一个时间周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令等等
指令的运算速度和指令所包含的机器周期数有关,机器周期数越少指令执行的越快。
MCS-51单片机指令通常可以单周期指令、双周期指令和四周期指令三种。四周期指令仅为乘除法,其余均为单周期指令或双周期指令
MCS-51指令的取指/执行时序
单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段。
取指令阶段,单片机可以把PC中的地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。
指令执行阶段,可以对指令操作码进行译码,以产生一系列控制信号完成指令的执行。
MCS-51的111条指令可以分为6类,分别对应于六种基本时序:
单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令和三字节双周期指令
1、单字节单周期指令时序
这类指令的指令码只有一个字节(如INC A),存放在ROM中,机器从取出指令码到完成指令的执行仅需一个机器周期。
2、双字节单周期指令时序
MCS-51在执行这类指令时需要两次从ROM中读出指令码。
3、单字节双周期指令时序
CPU在第一机器周期S1期间从程序存储器ROM中读出指令操作码,经过译码后便知道是单字节双周期指令,故控制器自动*后面的连续三次读操作,并在第二机器周期时完成指令的执行。
访问片外ROM/RAM的指令时序
一类是读片外ROM指令,另一类是方位片外RAM指令。
MCS-51单片机外部存储器的扩展
1.存储器芯片。不论是ROM还是RAM,都有独立的数据线、地址先和若干条控制线,而MCS-51芯片没有独立的数据总线、地址总线和控制总线。
它们用P0口送出低8位地址和兼做数据线,用P2口送出高8位地址。而控制线有的则是借用P3口的第二功能。因此,形成独立三总线的关键是:在P0口送出低8玮地址时后面要加锁存器,用锁存器的输出作为存储器的低8位地址。
2.扩展片外ROM和RAM时,地址线和数据线都借用P0口和P2口
3.根据存储器的读写时序可知,在ALE下降沿P0口的地址输出是有效的。