MCS-51单片机硬件结构解析
2、1 MCS-51单片机的硬件结构
按功能可分为8个部件,通过片内单一总线连接起来
控制方式:SFR对各功能部件集中控制
1、微处理器:CPU运算部件 控制部件
2、数据存储器:RAM
数据存储就是暂存一些在系统运行的过程当中所生成的一些临时性的数据,采集数据时临时采集到的一些数据和一些运算的中间结果数据保存在存储器当中,一般数据存储器的容量越大的话,它的控制系统相对可以实现比较复杂的控制功能。Mcs-51单片机内部是有128个字节的数据存储器,每个字节是8位,也就是说128*8位数的存储器。
3、程序存储器:ROM或EPROM
4、I/O口:51系列单片机有4个I/O口,其中每一个io口有八个输入输出端,可以输入输出32个数字量。
5:串行口:主要是用来进行双击通讯的时候,进行数据收发来使用,是全双工串行口,在发送的同时可以接收
6、定时计数器:51单片机内部有两个16位的定时计数器,可以进行精确时间的产生,产生一段定时,比如工业控制领域当中需要一个1ms的定时,可以通过定时计数器来产生这样一个时间长度,另外还可以作计数器使用,比如工业控制领域当中可能过了一定数字量,通过它可以记录这些个数。还可以作为串行口的波特率发生器来使用,因为在串行通讯的时候,需要数据按照一定的速率在数据总线上发送,接收也是按照一定速率从总线上去取数据,也就是说每秒钟要发多少字节,要收多少字节
7、中断系统:工业现场中往往存在着一些突发事件,而这些突发事件又需要控制系统做出及时反应时间。如果单片机有中断系统时,它可以随时把紧急停止键接到单片机系统的中断当中去,可以马上处理这个案件。
8、特殊功能寄存器
是一个寄存器,就是数字电路中学过的,内容就是存储8位的二进制数,这些跟通常
的数据存储器和程序存储器中存储的八位二进制数不一样,区别是这些八位二进制数隐含着控制信息,它决定了五一单片机当中的这些功能部件如何去工作,以及当前工作状态怎么样,这些特殊功能寄存器就是来控制这些功能部件工作同时要反映这些功能部件工作状态的计数器。
这些功能部件最后都是通过它的内部总线连接在一起,内部总线连接在cpu上,从而实现整个芯片内部的数据传送。Cpu是通过对sfr进行查询,从而知道各个功能部件工作状态如何。Cpu通过sfr对sfr下命令字,然后再用sfr去管理下面的各个功能部件。
-
CPU(微处理器)
-
数据存储器(RAM)
片内为128个字节(52子系列的为256个字节)
-
程序存储器(ROM/EPROM)
8031:无此部件
8051:4k字节ROM
8751:4k字节EPROM
89C51/89C52/89C55: 4K/8K/20K字节
-
P1口、P2口、P3口、P0口:为4个并行8位I/O口。
-
串行口 1个全双工的异步串行口。
-
定时器/计数器
-
中断系统
-
特殊功能寄存器(SFR)
用于对片内各功能模块进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器。共有21个,是一个具有特殊功能的RAM区。
2.2 MCS-51的引脚
40只引脚双列直插封装DIP
44只引脚方形封装方式(NC的4只无用)
引脚逻辑图
8051单片机为40条引脚双列直插式封装
引脚可分为三个部分
-
电源及时钟引脚:Vcc、Vss;XTAL1、XTAL2
-
控制引脚:PSEN*、EA*、ALE、RESET
-
I/O口引脚:P0、P1、 P2、 P3 4个8位I/O口
2.2.1电源及时钟引脚
1、电源引脚
(1)Vcc(40脚):+5V电源;
(2)Vss(20脚):接地。
2、时钟引脚
(1)XTAL1(19脚):接外部晶体的一端;采用外接晶体振荡器时,此引脚应接地。
(2)XTAL2(18脚):接外部晶体的另一端。
2.2.2 控制引脚
(1)RST/VPD(9脚):复位与备用电源
(2)ALE/PROG*(30脚):第一功能ALE:地址锁存允许,当访问单片机外部存储器时,ALE(地址锁存允许)输出脉冲的下跳沿用于16位地址的低8位的锁存信号。
第二功能PROG*:编程脉冲输入端。
(3)PSEN*(29脚):读外部程序存储器的选通信号。可以驱动8个LS型TTL负载。
(4)EA*/VPP(31脚):EA*为内外程序存储器选择控制
EA*=1,访问片内程序存储器。
EA*=0 单片机则只访问外部程序存储器。
第二功能Vpp,用于施加编程电压。
2.2.3 I/O口引脚
(1)P0口:双向8位三态I/O口,地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。
(2)P1口:8位准双向I/O口,可驱动4个LS型TTL负载。
(3)P2口:8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。
(4)P3口:8位准双向I/O口,双功能复用口,可驱动4个LS型TTL负载。
注意:准双向口与双向三态口的差别
当3个准双向I/O口作输入口使用时,要向该口先写“1”,另外准双向I/O口无高阻的“浮空”状态。
2.3 MCS-51的CPU
由运算器和控制器所构成
2.3.1 运算器
对操作数进行算术、逻辑运算和位操作。
-
算术逻辑运算单元ALU
-
累加器A
使用最频繁的寄存器,可写为Acc。A的作用:
-
是ALU单元的输入之一,又是运算结果存放单元。
-
数据传送大多都通过累加器A。
-
A的进位标志Cy同时又是位处理机的位累加器。
-
程序状态寄存器PSW
-
Cy(PSW.7)进位标志位
-
Ac(PSW.6)辅助进位标志位
-
F0(PSW.5)标志位,由用户使用的一个状态标志位
-
RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0.
-
OV(PSW,2)溢出标志位
指示运算是否产生溢出。各种算术运算指令对该位的影响情况较复杂,将在第3章介绍。
-
PSW.1位:保留位,未用
-
P(PSW.0) 奇偶标志位
P = 1,,A中“1”的个数为奇数
P = 0,A中“1”的个数为偶数
2.32 控制器
1、程序计数器PC(Program Counter)
存放下一条要执行的指令在程序存储器中的地址。
基本工作方式:
-
程序计数器自动加1。
-
执行有条件或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。
-
执行子程序调用或中断调用时完成下列操作。
-
PC的当前值保护
-
将子程序入口地址或中断向量的地址送入PC。
-
指令寄存器IR、指令译码器及控制逻辑电路
2.4 MCS51存储器的结构
哈佛结构(Har-vard)
存储器空间可划分为5类:
-
程序存储器空间
8031系列单片机无内部程序存储器
-
内部数据存储器空间
-
特殊功能寄存器
-
位地址空间
211个可寻址位
-
外部数据寄存器空间
片外可扩展64k字节RAM
2.4.1 程序存储器
存放应用程序和表格之类的固定常数
分为片内和片外两部分,由EA*引脚上所接电平确定
程序存储器中的0000H地址是系统程序的启动地址
5个单元具有特殊用途
2.4.2 内部数据存储器
共128个字节,字节地址为00H~7FH
00H~1FH:32个单元,是4组通用工作寄存器区。
20H~2FH:16个单元,可进行128位的位寻址
30H~7FH:用户RAM区,只能进行字节寻址,用作数据缓冲区以及堆栈区。
2.4.3 特殊功能寄存器(SFR)
特殊功能寄存器反映了MCS51的状态,实际上是MCS51的状态字及控制字寄存器。51单片机通过写SFR来控制相应功能部件(定时器、串口、中断等)的工作方式,同时SFR也综合的、实际的反应了整个单片机系统内部的工作状态。例如,前面提到的PSW程序状态寄存器,就是一个特殊功能寄存器。
共21个。
21个SFR的名称及分布。有的SFR可进行位寻址,其字节地址的末位是0H或8H。
-
堆栈指针SP
指示出堆栈顶部在内部RAM块中的位置
复位后,SP中的内容为07H。
-
保护断点(存储断点位置)
-
现场保护(主程序进入子程序时,对主程序寄存器的值进行保护压栈)
堆栈向上生长,出栈后入先出
-
数据指针DPTR(DPH和DPL)
16位特殊功能寄存器,高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。
-
I/O端口P0~P3
P0~p3分别为I/O端口P0~P3的锁存器。
-
寄存器B
为执行乘法和除法操作设置的。
在不执行乘、除的情况下,可当做一个普通寄存器来使用。
-
串行数据缓冲器SBUF
存放预发送或已接收的数据,一个字节地址,物理上是由两个独立寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。
-
定时器/计数器
两个16位定时器/计数器T1和T0,各由两个独立的8位寄存器组成:TH1、TL1、TL0、TH0,只能字节寻址,但不能把T1或T0当作一个16位寄存器来寻址访问。
2.4.4 位地址空间
211个(128个+31个)寻址位。位地址范围为:00H~FFH。
内部RAM的可寻址位128个(字节地址20H~2FH)
特殊功能寄存器SFR为83个可寻址位。
2.4.5 外部数据存储器
最多可外扩64K字节的RAM或I/O。几点注意:
-
地址的重叠性
程序存储器与数据存储器全部64K字节地址空间重叠。
-
程序存储器与数据存储器在使用上是严格区分的。
-
位地址空间公有两个区域
-
片外与片内数据存储器由指令来区分
-
片外数据存储区中,RAM与I/O端口统一编址
所有外围I/O端口的地址均占用RAM地址单元,使用与访问外部数据存储器相同的传送指令。
2.5 并行I/O端口
共有4个8位双向I/O口,共32口线。每位均有自己的锁存器(SFR),输出驱动器和输入缓冲器。
2.5.1 P0口位图内部结构
输出锁存器
两个输入缓冲器(BUF1和BUF2)
推拉式I/O驱动器
多路开关
-
功能:用于控制选通I/O方式还是地址/数据输出方式
-
方式控制:由内部控制信号产生
说明:
-
当控制信号为0时,P0口做双向I/O口,为漏极开路(三态)
-
控制信号为1时,P0口为地址/数据复用总线(用于口扩展)
-
POW为端口输出写信号,用于锁存输出状态
-
P0R1为读锁存器信号,执行“ANL P0, #0FH”时该信号有效
-
P0R2为读引脚信号,执行“MOV A, P0”时该信号有效
2.5.2 P1口内部结构
P1口内部结构如图2所示
输出部分有内部上拉电阻R*约为20K。
其他部分与P0端口使用相类似(读引脚时先写入1)
读端口与读锁存器的指令
读锁存器
读锁存器指令是从锁存器中读取数据,进行处理,并把处理后的数据重新写入锁存器中,这类指令称为读、修改、写指令。在ANL、ORL、XRL;JBC;CPL;INC、DEC; DJNZ;
MOV、CLR、SETB等指令中,当目的操作数为某一I/O口或I/O口的某一位时,这些指令均为读、修改、写指令。
读端口
读端口指令一般都是以I/O端口为源操作数的指令,执行读引脚指令时,打开三态门,输入口状态。例如,读P1口的输入状态时,读引脚指令为:MOV A, P1.
读端口与读锁存器的问题
当给口锁存器写入某一状态后,相应的口引脚是否呈现锁存器的状态,是与外电路的连接有关。例如,用I/O口线驱动外部三极管基级时,该口线位锁存器写入“1”后使外部三极管导通,而三极管一旦导通后,基级电平为“0”。读锁存器与读引脚状态不一致。
初级阶段对I/O口读写的注意事项
当给一个准双向口输出“0”后,输出驱动器打开,管脚电位拉低为“0”,此时如将该管脚作输入脚使,将无法输入高电平。
由此可见,在设计8051系统时,对51的I/O管脚要统一规划使用,一个管脚不能既作为输入,又作为输出。换言之,一个管脚如果第一次用其为输入,一直用其作为输入管脚。
2.5.3 P2口内部结构
1、P2可以作为通用的I/O,也可以作为高8位地址输出。
2、当控制信号为1时P2口输出地址信息,此时单片机完成外部的取址操作或对外部数据存储器16位地址的读写操作。
3、当P2口作为普通I/O口使用时用法和P1口类似。
2.5.4 P3口内部结构
说明:
-
做普通端口使用时,第二功能应为“1”
-
使用第二功能时,输出端口锁存器位“1”
-
变异功能()
2.5.5 P0~P3端口功能总结
使用中应注意的问题:
P0~P3口都是并行I/O口,但P0口和P2口还可用来构建数据总线和地址总线,所以电路中有一个MUX,进行转换。
而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无需转接开关MUX。
只有P0口是一个真正的双向口,P1~P3口都是准双向口。
原因:P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;否则应处于隔离状态。为此,P0口的输出缓冲器应为三态门。
P3口具有第二功能。因此在P3口电路增加了第二功能控制逻辑。这是P3口与其他各口的不同之处。
2.6 时钟电路与时序
时钟电路用于产生单片机工作所必须的时钟控制信号。
2.6.1 时钟电路
时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。
一、内部时钟方式
内部有一个用于构成振荡器的高增益反相放大器,其输入端:XTAL1,输出端:XTAL2.
二、外部时钟方式
常用于多片MCS-51单片机同时工作。
2.6.2 机器周期、指令周期与指令时序
一、时钟周期
单片机的基本时间单位。
若时钟的晶体的震荡频率为fosc,则时钟周期Tosc=1/fosc。如fosc=6MHz,Tosc=166.7ns。
二、机器周期
CPU完成一个基本操作所需要的时间。
执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-51单片机每12个时钟周期为一个机器周期。
一个机器周期又分为6个状态:S1~S6。每个状态有分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为:
S1P1、S2P2、S2P1、S2P2、……..S6P2.
三、指令周期
执行一条指令时,可分为取指令阶段和指令执行阶段。
取指令阶段,PC中地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。
指令执行阶段,对指令操作码进行译码,以产生一系列控制信号完成指令的执行。
ALE信号是为地址锁存而定义的,以时钟脉冲1/6的频率出现,在一个机器周期中,ALE信号两次有效(注意,在执行访问外部数据存取器的指令MOVX时,将会丢失一个ALE脉冲)。
时钟电路
需外接晶振的频率
1.2~12MHZ,C1和C2取30±10PF
CPU的时序(时钟周期、状态周期、机器周期)
若外接晶振为12MHz为时,则单片机的四个周期的具体值为:
时钟周期=1/12MHz=1/12us=0.0833us
状态周期=2*时钟周期=1/6us=0.167us
机器周期=12*时钟周期=1us
指令周期=1~4us(1~4个机器周期)
可用于计算指令、程序的执行时间,以及定时器的定时时间。
2.7 复位操作和复位电路
2.7.1 复位操作
单片机的初始化操作,摆脱死锁状态。
引脚RST加上大于2个机器周期(即24个时钟震荡周期)的高电平就可使MCS-51复位。复位时,PC初始化为0000H,使MCS-51单片机从0000H单元开始执行程序。
除PC之外,复位操作还对其他一些寄存器有影响,见表2-3.
SP=07H,P0-P3的引脚均为高电平。
在复位有效期间,ALE脚和PSEN*脚均为高电平,内部RAM的状态不受复位的影响。
2.7.2 复位电路
片内复位结构:
上电自动复位和按钮复位‘’
最简单的上电自动复位电路 :
按键手动复位,有电平方式和脉冲方式两种
电平方式:
两种实用的兼有上电复位与按钮复位的电路
上图(b)中的电路能输出高、低两种电平的复位控制信号、以适应外围I/O接口芯片所要求的不同复位电平信号。
74LS122为单稳电路,实验表明,电容C的选择约为0.1uF较好。
还可采用专用的复位管理芯片如1MP813L、TL7705等。