第 二 章 MCS-51单片机原理
2.1 MCS-51单片机的内部组成及信号引脚
2.2 MCS-51的存储器
2.3 并行输入/输出端口结构
2.4 时钟电路与 CPU时序
2.5 复位电路
2.1 MCS-51单片机的内部组成及信号引脚
MCS - 51单片机又有 51和 52两个子系列,51和 52系列的引脚功能、引脚数及其排列封装完全一样 。
51子系列 52子系列片内 RAM 128B 256B
定时器 /计数器 2 3
片内 ROM 4KB 8KB
中断源个数 5 6
8031,8051和 8751的区别
它们的指令系统与芯片引脚完全兼容,
仅片内 ROM有所不同,8031片内无程序存储器,8051片内有 4KB的掩模 ROM,
8751片内有 4KB的 EPROM。
51子系列的主要功能:
1,CPU,8位
2,内部 RAM,256单元前 128 单元:用户使用后 128单元:专用寄存器占用 。
3,内部 ROM,4KB掩膜 ROM
4,定时器 /计数器,2× 16位 。
5,并行 I/O口,4× 8位 。 P0,P1,P2,P3。
6,串行口:一个,全双工 。
7,中断控制系统,5
8,时钟电路,fosc―― 振荡频率最高为 12MHz。
51子系列的主要功能:
9,程序存储器的寻址范围为 64KB。
10,片外数据存储器的寻址范围为 64KB。
11,21个字节专用寄存器 。
12,111条指令,含乘法和除法指令 。
13,有强的位寻址,位处理能力 。
14,片内采用单总线结构 。
15,用单一+ 5V电源 。
二、
MCS
-51单片机引脚及功能
1,主电源引脚 Vcc和 Vss
VCC( 40脚 ),接 +5 V电源正端 ;
VSS( 20脚),接 +5 V电源地端。
2,外接晶体引脚 XTAL1和 XTAL2
XTAL1( 19脚 ),接外部石英晶体的一端 。 在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器 。 当采用外部时钟时,对于 HMOS
单片机,该引脚接地 ; 对于 CHMOS单片机,该引脚作为外部振荡信号的输入端 。
XTAL2( 18脚 ),接外部晶体的另一端 。 在单片机内部,接至片内振荡器的反相放大器的输出端 。
当采用外部时钟时,对于 HMOS单片机,该引脚作为外部振荡信号的输入端 ; 对于 CHMOS芯片,该引脚悬空不接 。
3,控制信号或与其它电源复用引脚控制信号或与其它电源复用引脚有:
RST/VPD,ALE/PROG*,PSEN*和 EA*/VPP
等 4种形式。
( 1) RST/VPD( 9脚 ),RST即为 RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端 。
( 2) ALE/PROG*(30脚 ),当访问外部存储器时,
ALE( 允许地址锁存信号 ) 以每机器周期两次的信号输出,用于锁存出现在 P0口的低 8位地址 。
( 3) PSEN* ( 29脚),片外程序存储器读选通信号输出端,低电平有效。
( 4) EA*/VPP( 31脚 ),EA*为访问外部程序存储器控制信号,低电平有效 。
4,输入 /输出 ( I/O) 引脚 P0口,P1口,P2口及 P3口
( 1) P0口( 39脚~ 32脚),P0.0~ P0.7统称为 P0口,
分时提供低 8位地址总线和 8位双向数据总线 。
( 2) P1口( 1脚~ 8脚),P1.0~ P1.7统称为 P1口,
可作为准双向 I/O接口使用。
( 3) P2口( 21脚~ 28脚),P2.0~ P2.7统称为 P2口,
一般可作为准双向 I/O接口,提供高 8位地址总线。
( 4) P3口( 10脚~ 17脚),P3.0~ P3.7统称为 P3口,
作为准双向 I/O接口使用,每个引脚具有第二功能。
2.2 MCS-51的存储器
MCS-51单片机的存储空间分为四个:
片内 ROM,片外 ROM,片内 RAM,片外 RAM.
从用户使用的角度,8051存储器地址空间分为三类:
MOVC( 1) 片内、片外统一编址 0000~ 0FFFFH的
64K字节的程序存储器地址空间(用 16位地址) ;
MOVX ( 2) 64K字节的片外数据存储器地址空间,
地址也从 0000~ 0FFFFH( 用 16位地址) ;
MOV ( 3) 256字节数据存储器地址空间 00H~0FFH
(用 8位地址)。
FFFF
H
1000H
片外扩展存储器
8051片内存储器
0FFFH
0000H
4KB
RO
M
7FH
00H
FFH
80H SFR
RAM
64KB
ROM
64KB
RAM
(I/O)
FFFFH
0000H
图 2-3 8051存储空间分布图
0FFFH
0000H
2.2.1 程序存储器( ROM)
用途,用于存放编好的程序和表格常数 。 PC
8051片内有 4KB ROM,
片外 16位地址线可扩展 64KB ROM,二者是统一编址的 。
当引脚 EA*=1,8051从 0000H执行片内 ROM中的程序 。
当指令地址超过 0FFFH后,就自动转向片外 ROM取指令 。
当引脚 EA*=0,8051片内 ROM不起作用,CPU只能从片外
ROM/EPROM中取指令,地址可以从 0000H开始编址 。 这种接法特别适合于没有内部 ROM的 8031单片机,此时必须使= 0,以便能够从外部扩展的 EPROM中取指令 。
2.2.1 程序存储器( ROM)
PC是程序计数器,是管理程序执行次序的寄存器,存放将要执行的指令的地址 。 程序的执行有 2种情况,按照顺序执行和跳转 。 为此,PC有 3种功能:
1,复位功能:复位时计算机进入初始状态,PC的内容自动清零 。
2,计数功能:每取出指令代码的一个字节,PC的内容自动加 1( 加法计数 )
3,直接置位功能:在执行跳转,返回指令时将跳转的地址直接加载 PC。
内部 ROM中的一些特殊单元
2.2.2 数据存储器 RAM
用途,用于存放运算的中间结果,数据暂存和缓冲
,标志位等 。
RAM分类:
片内 RAM,256字节 ; 地址 从 00~ 0FFH;
片外 RAM,64K字节 ;地址 从 0000~ FFFFH。
MOV 片内 RAM:@R0,@R1,直接寻址
MOVX 片外 RAM:@R0,@R1,@DPTR
1,片外 RAM
片外 RAM,64K字节,地址 从 0000~ FFFFH。
MOVX,@R0,@R1,@DPTR
MOVX指令时,RD*,WR*信号有效
2,片内 RAM
1.2.1 内部数据存储器低 128单元低 128单元是单片机的真正 RAM存储器,按其用途划分为 三个区域,
F F H~80 128
7 F H~00 128256R A M
单元:高单元:低单元)(内部
1),寄存器区,共有四组寄存器,每组 8个单元 一组 ( 8
位 ),各组都以 R0,R1,R2,R3,R4,R5,R6,R7作寄存单元编号 。 寄存器常用于存放操作数及中间结果等,由于它们的功能及使用不作预先规定因此称之为 通用寄存器,有时也叫工作寄存器,四组通用寄存器占据内部 RAM的 00H~
1FH单元地址 。
在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组 。 到底是那一组由程序状态字寄存器 PSW中 RS0,RS1位 的状态组合来决定 。
2),位寻址区,( 表 2-4)
内部 RAM的 20H~ 2FH单元,既可作为一般 RAM单元使用进行 字节操作,也可以对单元中的 每一位 进行位操作,
因此把该区称之为 位寻址区,位寻址区共有 16个 RAM单元
,共 128位,位地址为 00H~ 7FH。
3),用户 RAM区:
在内部 RAM低 128单元中,通用寄存器,32个单元,位寻址区,16个单元,剩下 80个单元为用户使用的一般 RAM
区,其单元地址为 30H~ 7FH。
应当提及,在一般应用中常把 堆栈 开辟在此区中 。
2.2.3 专用寄存器内部数据存储器高 128单元,被 特殊功能寄存器 ( SFR)
使用 。
其单元地址为 80H~ FFH。
1,专用寄存器简介:
8051共 有 21个专用寄存器,现部分介绍:
( 1)累加器 ACC( Accumulator)
8位寄存器,是最常用的专用寄存器大部分单操作数指令的操作数就取自 ACC,许多双操作数指令中的一个操作数也取自累加器。
( 2) B寄存器
8位寄存器,主要用于 乘除运算 。
B寄存器也可作为一般数据寄存器使用 。
( 3)程序状态字 PSW( Program Status Word)
8位寄存器,用于寄存程序运行的状态信息。
其中:有些位状态是根据程序执行结果,由硬件自动设置的而有些位状 态则使用软件方法设定.
D7 D6 D5 D4 D3 D2 D1 D0
Cy AC F0 RS1 RS0 OV … P
· CY( PSW.7) —— 进位标志位 ;位累加器
· AC( PSW.6) —— 辅助进位标志位加减运算中当有 低 4位向高 4位进位或借位时,AC由硬件置位,否则 AC位被清零。
·F0( PSW.5) —— 用户标志位需要时用软件方法置位或复位,用以控制程序的转向。
·RS0和 RS1( PSW.4,PSW.5) —— 寄存器组选择位
RS1 RS0 寄存器组 片内 RAM地址 通用寄存器名称
0 0 0组 00H~07H R0~R7
0 1 1组 08H~0FH R0~R7
1 0 2组 10H~17H R0~R7
0 1 3组 18H~1FH R0~R7
·OV( PSW.2) —— 溢出标志位
8位带符号数字 加减运算结果 是否超出运算范围 。
8位有符号数字表示的范围,- 128~+ 127。
OV= 0,运算正确,即无溢出产生 。
在 乘法运算 中,OV= 1,表示乘积超过 255;
在 除法运算 中,OV= 1,表示除数为 0,除法不能进行 。
,P( PSW.0) - 一一奇偶标志位 。 表明累加器 A中数的奇偶性 。
例题:分析指令
MOV A,#7FH
ADD A,#47H
执行后,A,C,AC,OV,P的内容是什么?
( A) =C6H; C=0,AC=1; OV=1; P=1/0
( 4) 数据指针 ( DPTR)
16位寄存器 。
MCS一 51中 唯一的一个 16位寄存器 。
编程时,DPTR既可按 16位寄存器使用,也可以按两个 8位寄存器分开使用 。
DPH,DPTR高位字节
DPL,DPTR低位字节作用,通常在访问 外部 RAM时作地址指针 使用,由于外部数据存储器的寻址范围 64KB。
( 6),I/O端口 P0~ P3( 80H,90H,A0H,B0H)
P0~ P3为四个 8位特殊功能寄存器,分别是四个并行 I/O端口的锁存器 。 它们都有字节地址,每一个口锁存器还有位地址,所以当每一条 I/O线独立地用作输入或输出时
,数据可以锁存;作输入时,数据可以缓冲 。
当 I/O端口某一位用于输入信号时,对应的锁存器必须先置,1” 。
表 2.5 SFR特殊功能寄存器地址表表 2.5 SFR特殊功能寄存器地址表几点说明:
① 专用寄存器 不连续地分散 在内部 RAM高 128单元之中、空闲地址 不能被 用户使用 。
② 使用 SFR时,既可使用 寄存器符号,也可使用 寄存器单元地址。
例如,MOV B,ACC
MOV B,E0H
3,可位寻址专用寄存器:
在 21个可寻址的专用寄存器中,有 11个寄存器是可以位寻址的,见表 l- 4。
全部专用寄存器可寻址的位为,83位位寻址区,128位共 211位
2.2.4 堆栈及堆栈指示器堆栈,只允许在其一端进行数据插入和数据删除操作的线性表 。
堆栈是内存在一个 特殊的存储区域 。
堆栈指针 SP是一个专用地址寄存器,它指明栈顶的位置,起着管理堆栈的作用 。 ( SP=07H)
传送数据方式:
入栈,PUSH
出栈,POP。
堆栈 操作的 最大特点,,后进先出,。
1,堆栈的功能:
堆栈是为子程序调用和中断操作而设立的 。
功能,保护断点和保护现场 。
保护断点,PC。
保护现场:寄存器中的内容 。
例如,SUB A,B
LCALL LOOP
(PC=1000H) ADD A,#12H
* * *
(PC=2000H) LOOP,PUSH A
MOV R0,#30H
* * *
POP A
RET ;返回堆栈要求:
具有 足够的容量 (或者说足够的堆栈深度)。
2,堆栈开辟
1) 外堆栈:在主存储器中开辟堆栈,例如 8080,Z80等早期的微型机 。 主要优点是堆栈容量大 。 但外堆栈的操作速度较慢 。
2) 内堆栈:在 CPU芯片内部存储器中开辟 。 MCS- 51的堆栈就是开辟在内部 RAM中 。
主要优点 是操作速度快,但堆栈容量有限 。
4.堆栈两种类型,向上生长型和向下生长型 。
MCS- 5l 为 向上生长型,其操作规则为:
进栈操作;先 SP加 1,后写入数据出栈操作:先读出数据,后 SP减 1。
MCS-51 8086
5,堆栈使用方式,两种
(1),自动方式,( 保护断点 )
在调用子程序或中断时,返回地址 ( 断点 ) 自动进栈 。
程序返回时,断点再自动弹回 PC.
操作的特点,堆栈操作无需用户干预 -- 自动方式 。
LCALL NEXT
(2),指令方式 (保护现场)
进栈指令,PUSH
出栈指令,POP。
例如:
PUSH A
PUSH B
POP B
POP A
2.3 并行输入 /输出端口结构
MCS-51单片机共有 4个 8位双向并行输入 /输出 ( I/O) 口,
分别 为,P0,P1,P2,P3。 这 4个口可以并行输入或输出 8位数据;也可以按位使用,即每一根输入 /输出线都能独立的用作输入或输出 。
口,是一个集数据 输入缓冲,数据输出缓冲驱动及锁存 等多项功能为一体的 I/O电路,也 称 端口 。
四个 I/O口在结构和特性上基本相同的,但又各具特点 。
下面 介绍这些口的特性和功能 。
2.3.1 P0~ P1口的功能
1,P0口为双向 ( 输入 /输出 ) 三态口 -- AD线 。
用作,地址 /数据总线口 。
低 8位地址 /8位 数据总线分时复用 。
2,P1口,作为可编程的输入或输出线 。
3,P2口,
用作,( 1) 可作为输入或输出线用 ;
( 2) 当扩展系统外设时,可作为扩展系统的高 8位地址总线,与 P0口一起组成 16位地址总线 。
说明,对 8031单片机来说,P2口一般只作为地址总线使用,而不作为 I/O线直接与外设相连 。
4,P3口,双功能口 。
( 1),可作为输入或输出 口线用 ;
( 2):特殊的第二功能。
1,P1口
2.3.2 P0~ P3口的结构与操作
P1口的功能
P1口只有一种功能 — 通用输入 /输出接口,
有输出、输入、端口操作 3种工作方式。
( 1)输出方式:计算机执行写 P1口的指令如 MOV P1,#data时,P1口工作于输出方式。此时数据 data经内部总线送入锁存器锁存 。
P1口的功能
( 2)输入方式:计算机执行读 P1口的指令如 MOV
A,P1时,P1口工作于输入方式。控制器发出的读信号打开三态门 1,引脚 P1.上的数据经三态门 1
进入芯片内部总线,并送到累加器 A。 因此 输入时无锁存功能 。
在执行输入操作时,如果锁存器原来寄存的数据 Q=0。 那么由于 Q*=1将使 V1导通,引脚被始终钳位在低电平,不可能输入高电平。为此,
用作输入前,必须先用输出指令置 Q=1,使 V1截止。因此 P1口被称为 准双向接口 。
单片机复位后,P1口线的状态都是高电平,可以直接用做输入。
P1口的功能
( 3)端口操作,MCS-51单片机有不少指令可直接进行端口操作,如:
ANL P1,#data
ORL P1,#data
XRL P1,A
INC A
这些指令的执行过程分成,读 -修改 -写”三步 。先将
P1口的数据读入 CPU,在 ALU中进行运算,运算的结果再送回 P1。 执行端口操作指令时,CPU通过 三态门 2读回锁存器 Q端的数据。
P1口的负载能力
P1口输出时能驱动 4个 LSTTL负载。通常把
100uA的输入电流定义为一个 TTL负载的输入电流,所以 P1口的输出电流不小于 400uA。
P1口内部有上拉电阻,因此在输入时,无须外接上拉电阻。
2,P2口
P2口
P2口有 2种用途:通用 I/O接口或高 8位地址总线。
地址总线:计算机从片外 ROM中取指,或者执行访问片外 RAM,片外 ROM的指令时,P2口上出现 PC或 DPTR的高 8位地址。
上述情况,锁存器的内容不受影响。
一般,在系统扩展了 ROM,取指操作连续不断,P2口不断送出高 8位地址,这时 P2口就不应再做通用 I/O使用了。如果系统仅仅扩展外部 RAM,情况应具体分析 。
P3口口线逻辑电路图
3,P3口
P3口的第二功能
P3口作为第二功能使用时,其锁存器 Q端必须为高电平,否则 V1管导通,引脚被钳位在低电平,无法输入或输出第二功能信号。
单片机复位时,锁存器输出端为高电平。
4,P0口
P0口作为地址 /数据分时复用总线
单 片机系统扩展片外存储器时,P0口作为地址 /数据分时复用总线使用。在访问片外存储器时,CPU送来的控制信号为高电平,
模拟开关打在上方。 如果执行输出数据的指令,分时输出的地址 /数据经倒相器 4、
驱动 V1,V2送到引脚。
如果执行取指操作或输入数据的指令,地址仍经 V1,V2输出,而输入的数据经输入缓冲器 1进入内部总线。
2.4 时钟电路与 CPU时序时钟电路:用于产生单片机工作所需要的时钟信号;
时序:指令执行中各信号之间的相互关系 。
2.4.1 时钟电路
1,内部时钟方式利用芯片内部的振荡器,然后在引脚 XTAL1 和
XTAL2两端跨接晶体振荡器和微调电容,就构成了一个稳定的自激振荡器,其发出的脉冲直接输入单片机的内部时钟电路 。
2,外部时钟方式单片机时钟电路
( a) 内部时钟电路; ( b) 外部振荡源
2.4.2 CPU的时序
MCS-51的时序定时单位 共有 4个,从小到大依次是:
拍节,状态,机器周期,指令周期 。
1,拍节与状态拍节 ( P),振荡脉冲的周期,又称振荡周期 。
状态 ( S),时钟信号的周期,又称时钟周期 。
关系:振荡频率= 2倍时钟频率时钟周期= 2倍振荡周期,
即 1S=2P
( 拍节 1( P1),拍节 2( P2)) 。
2.机器周期机器周期,指 CPU访问存储器一次所需要的时间。
例如取指令,读存储器、写存储器等。
MCS-51的一个机器周期包括 12个振荡周期( 12P)= 6S
即 6个状态,S1~ S6。
而每个状态又分为两拍,称为 P1和 P2。
因此,一个机器周期中的 12个振荡周期表示为 S1P1、
S1P2,S2P1……,S6P2。
3.指令周期定义,执行一条指令所需要的时间称之为指令周期。
最大的时序定时单位,无固定值。
指令不同,指令周期不同。
MCS-51的指令包含 一、二、三个机器周期 。
例如,外接晶振频率 fOSC为 12 MHz时,MCS—51单片机的 4个时间周期值为,
振荡周期 P=1/fosc= 1/12μs;
状态周期 S=2P= 1/6 μs;
机器周期 =6S= 12P= 1μs;
指令周期 =1~ 3 μs。
2.5 复位电路复位,单片机的初始化操作 。
复位的功能:
( 1) 进入系统的正常初始化;
( PC) = 0000H,
单片机从 0000H单元执行程序;
( 2) 使系统摆脱困境 。
2.5.1 复位信号要求:高电平;
引脚上出现 10ms以上的高电平 。
应持续 24个振荡周期 ( 即两个机器周期以上 ) 。
复位电路
25.2 复位方式复位后内部寄存器状态复位后内部寄存器状态注意:复位不影响内部 RAM中的内容!
掉电处理通过电压检测电路检测到掉电,将重要信息转存到内部 RAM中,再由 RST/VPD引脚给其供电,
为节电,掉电后时钟电路和 CPU都停止工作,
作业
2-2.MCS-51单片机的 EA*信号有何功能? 8031的 EA*信号应处理?为什么?
2-4.内部 RAM低 128字节的存储区划分为哪三个主要部分?
说明各部分的使用特点。
2-5.程序状态字寄存器 PSW中各标志位的意义是什么?
2-6.8051程序存储器中的 6个特殊单元是什么?各做什么用途?
2-8.某单片机的晶振频率是 12MHZ,则晶振周期、时钟周期、机器周期各为多少?
2-10.使单片机复位有几种方法?复位后机器处于怎样的初始状态?