790 likes | 863 Views
第 2 章 MCS-51 单片机的基本结构及工作原理. 任务一 单灯闪烁 2.1 MCS-51 系列单片机的结构及引脚 2.2 中央处理单元 CPU 2.3 MCS-51 存储器结构 2.4 并行 I/O 端口 2.5 时钟和 CPU 时序 2.6 复位、低功耗及最小系统. 任务一 单灯闪烁. 本任务以一个会闪光的灯来介绍最简单的单片机电路,通过本任务的练习,读者可了解一个最简单的单片机应用电路的组成。 任务目的 1. 了解单片机最小系统 2. 了解 I/O 端口的偷出功能 3. 了解汇编语言与机器语言 任务描述 1. 组装单片机实验板
E N D
第2章 MCS-51单片机的基本结构及工作原理 • 任务一 单灯闪烁 • 2.1 MCS-51 系列单片机的结构及引脚 • 2.2 中央处理单元CPU • 2.3 MCS-51 存储器结构 • 2.4 并行I/O端口 • 2.5 时钟和CPU时序 • 2.6 复位、低功耗及最小系统
任务一 单灯闪烁 • 本任务以一个会闪光的灯来介绍最简单的单片机电路,通过本任务的练习,读者可了解一个最简单的单片机应用电路的组成。 • 任务目的 1.了解单片机最小系统 2.了解I/O端口的偷出功能 3.了解汇编语言与机器语言 • 任务描述 1.组装单片机实验板 2.控制1个发光二极管(LED)闪光 • 1.硬件电路原理图 单片机实验板电路原理图如图2-1所示。 下一页 返回
任务一 单灯闪烁 • 2.实训的程序清单 • 单片机必须写入程序,只有执行不同的程序单片机才能完成不同的功能。本任务的程序清单如下: • ORG 0000H ;定位伪指令,指定下一条指令的地址 L1: CPL P0.0 ;P0.0取反 MOV R7,#0FFH L2: MOV R6,#0FFH L3: NOP R6,L3 DJNZ R7,L2 DJNZ L1 ;转移至L1,循环执行程序 SJMP END ;结束 上一页 下一页 返回
任务一 单灯闪烁 • 3.实训内容与步骤 (1)按照电路原理图安装、焊接实验板。 (2)检查无误,把事先已经存储厂程序的89551安装到IC插座中,上电运行,观察运行结果。 (3)按下复位按键,观察结果,并分析原因。 (4)分析是哪一条指令使LE D闪光的。 上一页 返回
2.1 MCS-51 系列单片机的结构及引脚 • 2.1.1 MCS-51单片机的内部结构 • MCS-51系列单片机是在一个芯片上集成了CPL、RAM、ROM、定时器、I/ 0接口等基本功能部件的一台计算机MCS-51系列单片机的典型产品有:8031、 8051、 8751、 89CSl。8031片内无PROM程序存储器;8051片内有4KBROM程序存储器;8751片内有4KBROM程序存储器;89C51片内有4KBFLASH EEPROM程序存储器。除此之外,四者的内部结构及引脚完全相同。 下一页 返回
2.1 MCS-51 系列单片机的结构及引脚 • 1.MCS-51的核心电路 • 如图2-2是8051单片机的核心电路,它包含如下功能部件: (1)一个8位微处理器。 (2)振荡器和时钟电路。 (3) 4 KB的片内程序存储器(ROM/PROM) 。 (4) 128字节片内数据存储器(RAM)。 (5)可寻址64 KB的外部程序存储器和数据存储器。 (6)两个16位定时器/计数器。 (7) 32个可编程并行I/O口。 (8)一个可编程全双工串行I/O口。 (9)二十多个特殊功能寄存器。 各个功能部分通过内部系统总线连接在一起。 • 2. MCS-51的结构框图 MCS-51系列单片机典型芯片8051结构框图如图2-3所示。 上一页 下一页 返回
2.1 MCS-51 系列单片机的结构及引脚 • 2.1.2 MCS-51引脚功能说明 • 8051单片机的外形采用40条引脚双列直插封装。引脚图如图2-4所示。 • MCS-51引脚数日有限,有许多引脚具有双功能。各引脚功能简要说明如下: (1)主电源引脚VCC和VSS: VCC:+5 V电源。VSS:地线。 (2)时钟振荡电路引脚XTAL1和XTAL2: XTAL1和XTAL2分别用做晶体振荡电路的反相器输人和输出端。当使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。 上一页 下一页 返回
2.1 MCS-51 系列单片机的结构及引脚 • (3) 复位信号线RST:RST/VPD (9脚):RST即为RESET, VPD为备用电源。该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机回复到初始状态。 • (4) ALE/PROG(30脚):地址锁存有效信号输出端。ALE在每个机器周期内输出两个脉冲。在访问片外程序存储器期间,下降沿用于控制锁存PO输出的低8位地址;在不访问片外程序存储器期间,可作为对外输出的时钟脉冲或用于定时目的。但要注意,在访问片外数据存储器期间,ALE脉冲会跳空一个,此时作为时钟输出就不妥了。对于片内含有EPROM的机型,在编程期间,该引脚用作编程脉冲PROG的输入端。 上一页 下一页 返回
2.1 MCS-51 系列单片机的结构及引脚 • (5) PSEN (29脚):片外程序存储器读选通信号输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期该信号两次有效,以通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,PSEN信号将不出现。 • (6) EA/VPP (31脚):EA为片外程序存储器选用端。该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片内程序存储器。对于片内含有EPROM的机型,在编程期间,此引脚用作21 V编程电源VPP的输入端。 上一页 下一页 返回
2.1 MCS-51 系列单片机的结构及引脚 • (7) 4个8位I/0端口—P0、P1、P2、P3 • P0口(39 ~32脚): P0.0一P0.7统称为P0口。在不接片外存储器与不扩展I/0口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。 • P1口(1~8脚): P1.0~P1.7统称为P1口,可作为准双向I/O口使用。 • P2口(21~28脚): P2.0~P2.7统称为P2口,一般可作为准双向I/O口使用;在接有片外存储器或扩展I/O口且寻址范围超过256字节时,P2口用作高8位地址总线。 • P3口(10 } 17脚): P3.0~P3.7统称为P3口。除作为准双向I/O口使用外,还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。详见表2-1。 上一页 返回
2.2 中央处理单元CPU • MCS-51单片机内有一个8位CPU,它是单片机的核心,主要功能是运算和控制整个系统协调工作。它由运算器和控制器两部分组成。 • 2.2.1 运算器 • 运算器主要实现对数据的算术运算和逻辑运算以及位处理操作。其本身是一复杂的数字时序逻辑电路。 • 运算器由8位算术逻辑运算单元ALU ( Arithmetic Logic Unit)、8位累加器ACC ( Accumulator)、8位寄存器B、程序状态字寄存器PSW ( Program Status Word)、8位暂存寄存器TMP1和TMP2、位操作电路等组成。如图2-3所示。其中,部分寄存器介绍如下。 下一页 返回
2.2 中央处理单元CPU • 1.算术逻辑单元ALU 对8位二进制数据进行算术/逻辑运算 算术运算、加1和减1运算、十进制调整、逻辑操作 • 2.暂存器TMP1、TMP2 用于存放参与运算的数据,用户不可以直接使用。 • 3.累加器ACC/A ACC是一个8位寄存器,是CPU中使用最频繁的寄存器。指令系统中用A作为累加器的助记符。进入ALU作算术和逻辑运算的操作数多来自于A,运算结果也常送回A保存。 • 4.寄存器B 寄存器B是为ALU进行乘除法运算而设置的。若不作乘除运算时,则可作为通用寄存器使用。 在乘、除运算中,与累加器A配合使用,存放第二操作数。 上一页 下一页 返回
2.2 中央处理单元CPU • 5.程序状态字PSW 程序状态字寄存器是一个8位专用寄存器,用于寄存或存贮当前机器指令在执行后操作结果的特征状态,以供程序查询和判别。其格式如下: 上一页 下一页 返回
2.2 中央处理单元CPU • (1)进位标志位Cy (PSW7):在执行某些算术操作类、逻辑操作类指令时,可被硬件或软件置位或清零。它表示运算结果是否有进位或借位。如果在最高位有进位(加法时)或有借位(减法时),则C=1,否则C =0。在位操作中CY用于位累加器。 • (2)辅助进位(或称半进位)标志位AC (PBW.6):它表示两个8位数运算,低4位有无进(借)位的状况。当低4位相加(或相减)时,若D3位向D4位有进位(或借位),则AC = 1,否则AC = 0。在BCD码运算的十进制调整中要用到该标志位。 上一页 下一页 返回
2.2 中央处理单元CPU • (3)用户自定义标志位F0( PSW.5):用户可根据自己的需要对F0赋予一定的含义,通过软件置位或清零,并根据F0=1或0来决定程序的执行方式,或反映系统某一种工作状态。 • (4)工作寄存器组选择位RS1 , RSO ( PSW.4 , PSW.3:可用软件置位或清零,用于选定当前使用的4个工作寄存器组中的某一组 RS1、RSO=00——0区(00 H~07H) RS1、RSO=O1——1区(08 H~0FH) RS1、RSO=10——2区(10H~17H) RS1、RSO=11——3区(18H~1FH) • 单片机复位时RS1 , RSO状态为00 ,即选择第0组工作寄存器。 上一页 下一页 返回
2.2 中央处理单元CPU • (5)溢出标志位OV (PSW.2):做加法或减法时,由硬件置位或清零,以指示运算结果是否溢出。OV = 1反映运算结果超出厂有符号数的数值范围(以补码形式表示一个有符号数的范围为-128~+127 。 进行加法时,如最高位、次高位之一有进位,或做减法时,如最高位、次高位之一有借位,OV被置位,即OV的值为最高位进位和次高位进位的异或(C7 C6)。 执行乘法指令MUL AB也会影响OV标志,积>255时OV = 1,否则OV =0。 执行除法指令DIV AB也会影响OV标志,如B中所放除数为0, OV=1,否则OV =0。 • (6)未使用位Fl ( PSW.1) ; PSW中唯一一个无作用的位,用户也不可以对其使用。 上一页 下一页 返回
2.2 中央处理单元CPU • (7)奇偶标志位P ( PSW.0):在执行指令后,单片机根据累加器A中1的个数的奇偶自动给该标志置位或清零。若A中1的个数为奇数,则P=1,否则P=0。该标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性。 • 6.布尔处理机 布尔处理机(即位处理)是MCS-51单片机ALU所具有的一种功能。单片机指令系统中的位处理指令集(17条位操作指令),存储器中的位地址空间,以及借用程序状态寄存器PSW中的进位标志CY作为位操作“累加器”,构成了MCS-51单片机内的布尔处理机。它可对直接寻址的位(hit)变量进行位处理,如置位、清零、取反、测试转移以及逻辑“与”、“或”等位操作,使用户在编程时可以利用指令完成原来单凭复杂的硬件逻辑所完成的功能,并可方便地设置标志等。 上一页 下一页 返回
2.2 中央处理单元CPU • 2.2.2 控制器 • 控制部件是单片机的神经中枢,它包括主要由程序计数器Pc,指令寄存器IR ,指令译码器ID、堆栈指针SP、数据指针DPTR、时钟发生器及定时控制逻辑等。它先以主振频率为基准发出CPU的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来协调单片机内部各功能部件之间的数据传送、数据运算等操作,并对外发出地址锁存ALE、外部程序存储器选通PSEN,以及通过P3.6和P3.7发出数据存储器读RD、写WR等控制信号,并且接收处理外接的复位和外部程序存储器访问控制EA信号。 • 1.指令寄存器IR、指令译码器ID • 指令寄存器用于存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送人指令存储器,经译码器译码后再由定时与控制电路发出相应的控制信号,完成指令所指定的操作。指令的内容由操作码和地址码两部分构成,操作码送到指令译码器,经其译码后便确定了要执行的操作。指令的地址码送到操作数地址形成电路,以便形成实际的操作数地址。 上一页 下一页 返回
2.2 中央处理单元CPU • 指令译码器用于分析指令功能,根据操作码产生相应操作的控制信号。例如,8位操作码经指令译码器译码后,可以转换为256种操作控制信号,其中每一种控制信号对应一种特定的操作功能。 • 2.程序计数器PC (Program Counter) • 程序计数器PC是一个16位的有自动加1功能的计数器。16位PC中的内容总是CPU将要执行的那条指令所存放的存储单元的首地址。 • 在单片机复位时,PC中的内容为0000H,指向第1条要执行的指令的首地址,在CPU从存储单元取指令的过程中,每取1个字节的内容,程序计数器PC就自动加1,在取完这条指令后,PC中的内容就是下一条要执行的指令所存放的存储单元的首地址。 上一页 下一页 返回
2.2 中央处理单元CPU • 在实际应用中,有时CPU还要执行程序的转移、子程序的调用和中断响应等操作,那时PC中的内容不再是上述情况中简单的加1,而是根据不同的情况自动地被置入或修改成新的日的地址,从而改变程序的执行顺序。 • PC没有地址,是不可寻址的,因此用户不能对它进行读写。 • 3.数据指针寄存器DPTR 数据指针寄存器DPTR是一个16位专用寄存器。它主要用来存放片外数据存储器或I/O口地址,也可以分成DPH、DPL两个8位来使用。 • 4.堆找指针SP 堆栈指针SP是一个8位专用寄存器。单片机复位时寄存器的值为07 H,它用来存放当前堆栈操作的位置即地址,SP始终指向堆栈栈顶,每压人8位数据进入堆栈,SP自动加1,每弹出8位数据,SP自动减1。数据在堆栈中遵循“先进后出”的原则。 上一页 下一页 返回
2.2 中央处理单元CPU • 5.定时与控制电路 定时与控制逻辑由时序部件和微操作控制部件构成。用于控制取指令、执行指令、存取操作数或运算结果等操作,向其他部件发出各种微操作控制信号,协调各部件的工作。它是单片机的心脏。 • 指令执行的基本过程: (1)单片机在工作前,首先必须在存储器中装入程序。所谓程序,就是为了完成某项工作,将一系列指令有序地组合,而指令则是要求单片机执行某种操作的命令。 (2)指令分为操作码和地址码两个部分,操作码部分规定了单片机操作类型,而地址码部分一般是直接或间接地给出了参与操作的数据的存放地址,所以地址码也可以直接称为操作数。 上一页 下一页 返回
2.2 中央处理单元CPU • (3)单片机完成每项工作,必须有序地执行一系列指令。单片机执行一条指令一般分为取指令、分析指令和执行指令。 • 从存储器中取出指令,并且对指令进行译码,以明确该指令执行何种操作,以及操作数的存放地址(即操作数存放在哪一个单元中),再根据这个地址获取操作数,这是取指令和分析指令阶段。按操作码指明的操作类型对获取的操作数进行操作(也可称为运算),这是执行指令阶段。 上一页 返回
2.3 MCS-51 存储器结构 • 单片机存储器结构有两种类型:一种程序存储器和数据存储器统一编址,属于普林斯顿结构,另一种是程序存储器和数据存储器分开编址的哈佛结构。MCS-51系列单片机采用的是哈佛结构。 MCS-51存储结构如图2-5所示。 • MCS-51单片机的存储器在物理结构上可以分为片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。而在逻辑结构上,分为3个逻辑地址空间:片内片外统一编址的64 KB程序存储器地址空间;片内独立编址的256 B数据存储器地址空间;片外独立编址的64 KB数据存储器地址空间。即访问这3个不同的逻辑空间,要采用不同形式的指令。 • 存储器的最小空间可以存放1位二进制数,MCS-51单片机把8位2进制数所存放的空间成为1个单元,即一个字节。为了区分不同的单元用二进制编制的符号称为单元地址,简称地址。用地址来描述存储器的空间结构方便了对存储器单元数据的读写。 下一页 返回
2.3 MCS-51 存储器结构 • 2.3.1 程序存储器ROM 程序存储器用于存放程序及表格常数。 • 1.程序存储器由内、外两部分组成 8051片内有4 K字节的程序存储器,其编址为0000H~0FFFH,外部EPROM也从0000H开始编址。在地址0000 H~0FFFH内,地址有重叠,由EA信号来控制内、外程序存储器的选择。 • (1)EA=1时,当PC值在0000 H 0FFFH范围内,CPU访问内部存储器;当PC值大于0FFFH范围时,CPU访问外部存储器。 • (2)EA=0时,不管PC值的大小,CPU总是访问外部程序存储器。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 对于8031单片机,由于内部没有程序存储器,必须外接EPROM,所以EA必须接地,即EA = 0。外部程序存储器从0000 H开始编址,寻址范围64 KB 。 • 2.程序存储器以计数器PC作为地址指针。程序计数器PC为16位的寄存器,它决定厂MCS-51单片机可寻址的最大范围为64 K字节,即0000 H~0FFFFH。 • 3.程序存储器也存放程序所需的常数表 访问程序存储器还是数据存储器在指令上有所不同,MOVC指令用于访问程序存储器。 程序存储器的0000H~002AH共43个单元用作存储特定程序的入口地址。 • 0000H0002H这3个单元是系统的启动单元; • 0003H~002AH共40个单元是中断服务程序地址区,它被分为五段,每段8个单元,分别分配给5个中断源: 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 0003H~000AH外部中断0中断服务程序地址区; • 000BH~0012H定时/计数器。中断服务程序地址区; • 0013H~001AH外部中断1中断服务程序地址区; • 001BH~0022 H定时/计数器1中断服务程序地址区; • 0023H~002AH串行口中断服务程序地址区。 • 其中,一组特殊单元是0000 H~0002H。系统复位后,(PC ) = 0000 H,单片机从0000 H单元开始取指令执行程序。如果程序不从0000 H单元开始,应在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序。 • 中断响应后,按中断种类,自动转到各中断区的首地址去执行程序,因此在中断地址区中理应存放中断服务程序。但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 2.3.2 数据存储器RAM • MCS-51单片机数据存储器用于暂存程序执行过程,1,产生的数据和运算结果等。 • MCS-51单片机数据存储器也可以分为片内数据存储器和片外数据存储器。当片内数据存储器不够用时,可扩展片外数据存储器。一般情况下,片外数据存储器的容量不超过64 KB。与内、外部的程序存储器不同,内部和外部数据存储器空间存在重叠(内部RAM的地址范围为00H~07 FH,外部RAM的地址范围为0000 H~0 FFFFH,通过不同指令来区别。当访问内部RAM时,用MOV类指令;当访问外部RAM时,则用MOVX类指令,所以地址重叠不会造成操作混乱。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 1.外部数据存储器 外部数据存储器一般用来存放相对来讲使用不太频繁的数据,其中的数据不能直接进行处理,要进行处理前必须提前从外部数据存储器送到单片机内部。 外部数据存储器地址空间寻址范围为64 K字节,采用R0, R1或DPTR寄存器间址方式访问。当采用R0, R1间址时只能访问00 H~OFFH的低256字节,采用DPTR间址可访问整个64 K字节空间。RD/WR作为数据存储器的读/写选通信号。 • 2.内部数据存储器 MCS-51单片机内部有128个字节的数据存储器RAM,它们可以作为数据缓冲器、堆栈、工作寄存器和软件标志等使用。CPU对内部RAM有丰富的操作指令。不同的地址区域,功能完全不同。 128字节RAM不同地址区域功能结构如图2-6所示。分为三个区域:工作寄存器区、可位寻址区、通用RAM区。 • (1)工作寄存器区。工作寄存器区地址范围在00 H~1FH的32个字节,可分成4个工作寄存器组,每组占8个字节。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 具体划分如下: 第0组工作寄存器:地址范围为00H~07 H 第1组工作寄存器:地址范围为08H~0FH 第2组工作寄存器:地址范围为l0H~17H 第3组工作寄存器:地址范围为18H~1FH • 每个工作寄存器组都有8个寄存器,它们分别称为R0, R1, R2, R3, R4,R5, R6, R7。在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1, RS0位的状态组合来决定。所以每组之间不会因为名称相同而混淆出错。 • 单片机复位时,当前工作寄存器默认为0组。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 通用寄存器为CPU提供厂就近存储数据的便利,有利于提高单片机的运算速度。此外,使用通用寄存器还能提高程序编制的灵活性,因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。工作寄存器区的选择如表2-2所示。 • (2)位寻址区。单片机片内RAM中20H ~2FH地址范围中共16个字节单元称为位寻址区。该区的16个字节单元,既可作为一般的RAM使用,进行字节操作,也可以对单元中的每一位进行位操作。 • 16个字节单元共128位,每位有位地址,地址范围是00H~7FH.如表2-3所示。 • 位寻址区中的每一位地址有两种表示形式:一是表中位地址形式,另一种是单元地址·位序形式。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 为厂适应控制型应用领域的需要,MCS-51单片机具有一个功能很强的布尔处理器。位寻址空间的每一位都可以看做是软件触发器,由程序直接进行位处理,执行置位、清零、取反等操作。单片机位操作功能很强。通常把各种程序的状态标志位、位控制变量设在位寻址区。这种功能提供厂把硬件实现的逻辑式变为软件实现的简单方法,不需要过多的数据传送、字节屏蔽和测试分支树就能实现复杂的组合逻辑功能。 • 尽管位地址和字节地址有重叠,读/写位寻址空间时也采用MOV指令形式,但所有的位操作指令是以进位位CY作为一个操作数,指令中所指的操作数地址为位地址。 • (3)通用RAM区(30H~7FH)。单片机片内RAM中,30H ~7FH的80个单元只能以存储单元的形式来使用,没有其他任何规定或限制,用户可以根据需要自由安排,所以称它为通用RAM区。该区域中的单元只能用直接寻址、寄存器间接寻址等方式按字节访问。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 堆栈就常设在通用RAM区中。 • 堆栈的概念。堆栈是在单片机内部RAM中从某个选定的存储单元开始划定的一个地址连续的区域,这个区域本身没有任何特殊之处,它就是内部RAM的一部分,不同的是这个区域以选定的某个存储单元作为栈底,只允许向一个方向写入数据,最后一个写入数据的存储单元称为栈顶。堆栈主要用在子程序调用过程、保护及恢复现场过程以及数据传输过程。 • 堆栈的生成有两种情况,向高地址方向写入数据生成的堆栈称为向上生长型堆栈,反之称为向下生长型堆栈,51单片机属于向上生长型堆栈(即向高地址方向生成)。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 数据写人堆栈为插人运算(PUSH),通常称为入栈,数据从堆栈中读出为删除运算(POP),通常称为出栈,按堆栈的规定,入栈和出栈只能在栈顶一端进行。 • 51单片机中,用一个称为堆栈指针SP (Slack Pointer)的特殊功能寄存器来给出栈顶存储单元的地址,堆栈指针SP中存储的总是堆栈栈顶存储单元的地址,即堆栈指针SP总是指向堆栈栈顶。 • 向上生长型堆栈出栈人栈的操作原则是“先进后出”或“后进先出”。 • 入栈操作规则为:先SP中的内容加1,后写人数据;出栈操作规则为:先读出数据,后SP中的内容减1. • 系统复位后,SP中的内容为07 H,在程序设计中,常用指令对SP的复位值进行修改,将堆栈开辟在通用RAM区。 上一页 下一页 返回
2.3 MCS-51 存储器结构 • 2.3.3 特殊功能寄存器SFR • 特殊功能寄存器( Special Function Registers 简称SFR) 也称为专用寄存器,特殊功能寄存器反映厂51单片机的运行状态。很多功能一也通过特殊功能寄存器来定义和控制程序的执行。MCS-51单片机内除程序计数器(PC)和4个工作寄存器区外,所有其他寄存器如I/O锁存器、定时器/计数器、状态寄存器、串行口数据缓冲器和各种控制寄存器都是以特殊功能寄存器的形式出现的。 • 在8051单片机中设置厂21个特殊功能寄存器,它们不连续地分布在地址为80H~FFH的128个字节的存储空间中。 • 在这21个SFR中,凡是字节地址能被8整除(即16进制的地址码尾数为0或8)的11个单元均具有位寻址能力,有效的位地址共有82个。表2-4是特殊功能寄存器分布一览表。 • 82个有效位地址可用位地址、位符号、单元地址.位序和寄存器名.位序四种方法来表示,但一般是用位符号或寄存器名.位序来表示的。 上一页 返回
2.4 并行I/O端口 • MCS-51单片机有4个8位的双向并行输人/输出(I/0)端口,称为P0口、P1口、P2口和P3口。这些口在结构和特性上是基本相同的,但又各具特点,以下将分别介绍之。 • 1.PO口结构 • PO口的某位P0.X(X =0, 16, 7)的结构如图2-7所示。 • PO口的位电路结构由以下几个部分组成: (1) 1个输出锁存器,用于进行输出数据的锁存。 (2) 2个三态输人缓冲器,分别用于锁存器和引脚数据的输人缓冲。 (3) 1个多路开关MUX,它的一个输人来自锁存器,另一个输人是地址/数据信号的反相输出。在控制信号的控制下能实现对锁存器输出端和地址/数据线之间的切换。 (4)由两只场效应管组成的输出驱动电路。 下一页 返回
2.4 并行I/O端口 • P0口是一个双功能的8位并行I/O口,字节地址为80H,位地址为80H~87H。可作输人/输出端口使用,又可作地址/数据总线分时传输低8位地址和8位数据。 • 当对PO口进行写操作时,由锁存器和驭动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需再加数据锁存电路。 • 考虑到PO口既可以作为通用的I/O口进行数据的输人/输出,也可以作为单片机系统的地址/数据线使用,为此在PO口的电路中有一个多路转接电路MUX.在控制信号的作用下,多路转接电路可以分别接通锁存器输出或地址/数据线。当作为通用的I/O口使用时,内部的控制信号为低电平,封锁与门,将输出驭动电路的上拉场效应管(FET)截止,同时使多路转接电路MUX接通锁存器Q端的输出通路。 上一页 下一页 返回
2.4 并行I/O端口 • 读端口是指通过上面的缓冲器读锁存器Q端的状态。在端口已处于输出状态的情况下,Q端与引脚的信号是一致的,这样安排的日的是为了适应对口进行“读一修改一写”操作指令的需要。例如,"ANL P0, A”就是属于这类指令,执行时先读人PO口锁存器中的数据,然后与A的内容进行逻辑与,再把结果送回P0口。对于这类“读-修改-写”指令,不直接读引脚而读锁存器是为厂避免可能出现的错误。因为在端口已处于输出状态的情况下,如果端口的负载恰是一个晶体管的基极,导通厂的PN结会把端口引脚的高电平拉低,这样直接读引脚就会把本来的“1”误读为“0"。但若从锁存器Q端读,就能避免这样的错误,得到正确的数据。 • 但要注意,当PO口进行一般的I/O输出时,由于输出电路是漏极开路电路,因此必须外接上拉电阻才能有高电平输出;当PO口进行一般的I/O输人时,必须先向电路中的锁存器写人“1",使FET截止,以避免锁存器为“0”状态时对引脚读人的干扰。 上一页 下一页 返回
2.4 并行I/O端口 • 在实际应用中,PO口绝大多数情况下都是作为单片机系统的地址/数据线使用,这要比作一般I/O口应用简单。当输出地址或数据时,由内部发出控制信号,打开上面的与门,并使多路转接电路MUX处于内部地址/数据线与驭动场效应管栅极反相接通状态。这时的输出驭动电路由于上、下两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。而当输人数据时,数据信号则直接从引脚通过输人缓冲器进人内部总线。 • P0口的特点: • (1) P0口是一个双功能的端口:地址/数据分时复用口和通用I/O口。(2) P0口具有高电平、低电平和高阻抗3种状态的I/)端口称为双向I/O端口。P0口作地址/数据总线复用口时,相当于一个真正的双向I/O口。而用作通用I/O口时,由于引脚上需要外接上拉电阻,端口不存在高阻(悬空)状态,此时P0口只是一个准双向口。(3)为保证引脚上的信号能正确读人,在读人操作前应首先向锁存器写1,单片机复位后,锁存器自动被置1.(4) P0口能驭动8个TTL负载。 上一页 下一页 返回
2.4 并行I/O端口 • 2.P1口结构 • P1口的位结构如图2-8所示。P1口是一个准双向口,字节地址为90H,位。地址为90H~97H,只作通用输人/输出口使用。除了无多路开关MUX之外,其输出驭动部分也与PO口不同。P1口的位电路结构由以下几个部分组成: (1)一个数据输出锁存器,用于输出数据的锁存。 (2)两个三态输人缓冲器,BUF1用于读锁存器,BUF2用于读引脚。 (3)数据输出驭动电路,由场效应管VT和片内上拉电阻R组成。 • P1口的特点: (1) P1口由于有内部上拉电阻,没有高阻抗输入状态,所以称为准双向口。作为输出口时,不需要再在片外接上拉电阻。 (2) P1口读引肚口输入时,必须先向锁存器写入1,其原理与PO口相同。 (3) P1口能驭动4个TTL负载。 上一页 下一页 返回
2.4 并行I/O端口 • 3. P2口结构 • P2口是一个双功能的8位并行I/O口,字节地址为80 H,位地址为AOH~A7 H。可作通用的输入/输出口用,又可用作高8位地址总线。P2口的位结构比P1口多了一个多路开关MUX。 P2口的位结构如图2-9所示。 • P2口的位电路结构由以下几个部分组成: (1)一个数据输出锁存器,用于输出数据的锁存。(2)两个三态输人缓冲器,BUF1用于读锁存器,BUF2用于读引脚。 (3)一个多路开关MUX,它的一个输入来自锁存器的Q端,另一个输入来自内部地址的高8位。(4)数据输出驭动电路由非门M,场效应管VT和片内上拉电阻R组成。 • P2口的特点: (1)作为通用I/()口使用时,P2口为准双向口,功能与P1口一样。(2) P2口用作高8位地址输出线应用时,与PO口输出的低8位地址一起构成16位的地址总线,可以寻址64 KB地址空间。 (3) P2口能驭动4个TTL负载。 上一页 下一页 返回
2.4 并行I/O端口 • 4. P3口结构 • P3口是一个双功能的8位并行I/O口,字节地址为BOH,位地址为B0H~B7H,内部结构中增加厂第二输入/输出功能,P3口的位结构如图2-10所示。 • P3口的位电路结构由以下几个部分组成: (1)一个数据输出锁存器,用于输出数据的锁存。 (2) 3个三态输人缓冲器,BUF1用于读锁存器,BUF2 , BUF3用于读引脚和第二功能数据的缓冲输入。 (3)数据输出驭动电路,由与非门M,场效应管VT和片内上拉电阻R组成。 • 对于第二功能为输出的信号引脚,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位的锁存器应置“1",使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。 上一页 下一页 返回
2.4 并行I/O端口 • 对于第二功能为输人的信号引脚,在口线的输人通路上增加厂一个缓冲器,输入的第二功能信号就从这个缓冲器的输出端取得。而作为I/O使用的数据输入,仍取自三态缓冲器的输出端。不管是作为输人口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线都应保持高电平。 • P3口的特点: (1) P3口内部有上拉电阻,不存在高阻输入状态,是一个准双向口。 (2) P3口的某位不作为第二功能使用时,则自动处于通用输出/输入口功能,可作为通用输出/输入口使用。 (3) P3口做第二功能的输出/输入或作通用输入时,均需将相应的锁存器置1。实际应用中,由于复位后P3口锁存器自动置1,已满足第二功能运作条件,所以可以直接进行第二功能操作。作通用输出/输入口使用时,输入信号取自缓冲器BUF2的输出端,作第二功能使用时,输入信号取自缓冲器BUF3的输出端。 (4) P3口能驭动4个TTL负载。 上一页 下一页 返回
2.4 并行I/O端口 • 5.4个I/O端口功能总结 (1)每一个I/O口都能用作普通输人或输出。 (2)用作输人时,均须先写入“1";用作输出时,P0口应外接上拉电阻。 (3) P0口的负载能力为8个LSTTL门电路;P1~P3口的负载能力为4个LSTTL门电路。 (4)在并行扩展外存储器或I/O口情况下,P0口用于低8位地址总线和数据总线(分时传送),P2口用于高8位地址总线,P3口常用于第二功能。 上一页 返回
2.5 时钟和CPU时序 • 2.5.1 单片机的时钟电路 • 在MCS-51单片机芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路。 • MCS-51芯片内部时钟电路的振荡源有两种方式提供,即内部自激振荡方式、外部引入振荡脉冲源方式。 • 1.内部自激振荡方式 时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。一般的电容C1和C2取30 pF左右,晶体的振荡频率范围是1.2~12MHz o晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。MCS-51单片机在通常应用情况卜,使用振荡频率为6 MHz或12 MHz。时钟振荡电路如图2-11所示。 下一页 返回
2.5 时钟和CPU时序 • 2.外部引入振荡脉冲源方式 • 在由多片单片机组成的系统中,为厂各单片机之间时钟信号的同步,应当引入惟一的公用外部脉冲信号作为各单片机的振荡脉冲。这时,外部的脉冲信号是经XTAL2引脚注人,其连接如图2-12所示。 • 时钟电路是单片机的心脏,控制着单片机的工作节奏。时钟信号由时钟电路产生,为单片机提供时间基准,决定单片机的速度,其质量直接影响系统的稳定性。 • MCS-51单片机时钟电路如图2-13所示。 上一页 下一页 返回
2.5 时钟和CPU时序 • 2.5.2 CPU的时序 • CPU的时序是指CPU在执行各类指令时所需的控制信号在时间上的先后次序。 • CPU实质上是一个复杂的同步时序电路,所有工作都在统一时钟信号控制下进行的以此来保证各部件同步有序地工作。 • 时序是用定时单位来说明的MCS-51的时序定时单位共有4个,从小到大依次是:振荡周期、状态周期、机器周期和指令周期,如图2-14所示 • (1)振荡周期与状态周期。 振荡周期:振荡器产生的时钟脉冲频率的倒数,是最基本最小的定时信号。把振荡脉冲的周期定义为节拍(用P表示)。振荡脉冲经过二分频后,就是单片机的时钟信号的周期,其定义为状态(用S表示)。 上一页 下一页 返回
2.5 时钟和CPU时序 • 状态周期:一个状态周期等于两个振荡周期。这样,一个状态就包含两个节拍,具前半周期对应的拍节叫节拍1 (P1),后半周期对应的节拍叫节拍2(P2)。 • (2)机器周期。 MCS-51单片机采用定时控制方式,因此它有固定的机器周期。规定一个机器周期的宽度为6个状态,并依次表示为S1~S6。由于一个状态又包括两个节拍,因此,一个机器周期总共有12个节拍,分别记作S1 P1, S1P2,…、S6P2。由于一个机器周期共有12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。 当振荡脉冲频率为12 MHz时,一个机器周期为1 ;当振荡脉冲频率为6 MHz时,一个机器周期为2 。 • (3)指令周期。 指令周期是最大的时序定时单位,执行一条指令所需要的时间称为指令周期。它一般由若干个机器周期组成。不同的指令,所需要的机器周期数也不相同。通常,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 上一页 下一页 返回
2.5 时钟和CPU时序 • 指令的运算速度与指令所包含的机器周期有关,机器周期数越少的指令执行速度越快。MCS-51系列单片机通常可以分为单周期指令、双周期指令和四周期指令等三种。四周期指令只有乘法和除法指令两条,其余均为单周期和双周期指令。 • 若用12 MHz晶振,则单周期指令和双周期指令的指令周期时间分别为1 和2 ,乘法和除法指令为4 。 • 单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段。MCS一51的取指/执行时序如图2一15所示。 • 由图2一15可见,ALE引脚上出现的信号是周期性的,在每个机器周期内出现两次高电平。第一次出现在S 1 P2和S2P1期间,第二次出现在54P2和SSP1期间。A LE信号每出现一次,CPU就进行一次取指操作,但由于不同指令的字节数和机器周期数不同,因此取指令操作也随指令不同而有小的差异。 • 按照指令字节数和机器周期数,MCS~51单片机的111条指令可分为6类,分别是:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令。 上一页 下一页 返回
2.5 时钟和CPU时序 • 图2-15(a), (b)所示分别给出厂单字节单周期和双字节单周期指令的时序。单周期指令的执行始于S1 P2,这时操作码被锁存到指令寄存器内。若是双字节,则在同一机器周期的S4读第二字节。若是单字节指令,则在S4仍有读操作,但被读人的字节无效,且程序计数器PC并不增量。 • 图2-15(c)给出厂单字节双周期指令的时序,两个机器周期内进行4次读操作码操作。因为是单字节指令,所以,后三次读操作都是无效的。 上一页 返回
2.6 复位、低功耗及最小系统 • 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚MCS-51单片机复位的条件、复位电路和复位后状态。 • 单片机复位的条件是:必须使RST/VPD或RST引脚(9)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12 MHz,每个机器周期为1 ,则只需2 以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。 • 1.复位电路 MCS-51单片机通常采用上电自动复位和按键手动复位两种方式。单片机常见的复位电路如图2-16所示。 • 图2-15(a)为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。 下一页 返回