CPU 中央处理器:
中央处理器是 8031 的核心,它的功能是产生控制信号,把数据从存储器或输入口送到 CPU 或 CPU 数据写入存储器或送到输出端口。还可以对数据进行逻辑和算术的运算。 时钟电路:
8031 内部有一个频率最大为 12MHZ 的时钟电路,它为单片机产生时钟序列,需要外接石英晶体做振荡器和微调电容。 内存:
内部存储器可分做程序存储器和数据存储器,但在 8031 中无片内程序存储器 。 定时/计数器:
8031 有两个 16 位的定时/计数器,每个定时器/计数器都可以设置成定时的方式和计数的方式,但只能用其中的一个功能,以定时或计数结果对计算机进行控制。 并行 I/O 口:
MCS-51 有四个 8 位的并行 I/O 口,P0,P1,P2,P3,以实现数据的并行输出。 串行口:
它有一个全双工的串行口,它可以实现计算机间或单片机同其它外设之间的通信,该并行口功能较强,可以做为全双工异步通讯的收发器也可以作为同步移位器用。
中断控制系统:
8031 有五个中断源,既外部中断两个,定时计数中断两个,串行中断一个,全部的中断分为高和低的两个输出级。
4.2.48031的引脚图
图4-148031引脚图
8031 的制作工艺为 HMOS,采用 40 管脚双列直插 DIP 封装,引脚说明如下:
VCC(40 引脚)正常运行时提供电源。 VSS(20 引脚)接地。
18
XTAL1(19 引脚)在单片机内部,它是一个反向放大器的输入端,该放大器构成了片内的震荡器,可以提供单片机的时钟信号,该引脚也是可以接外部的晶振的一个引脚,如采用外部振荡器时,对于 8031 而言此引脚应该接地。
XTAL2(18 引脚)在内部,接至上述振荡器的反向输入端,当采用外部振荡器时, 对 MCS51 系列该引脚接收外部震荡信号,即把该信号直接接到内部时钟的输入端。
RST/VPD(9 引脚)在振荡器运行时,在此引脚加上两个机器周期的电平将单片机复位,复位后应使此引脚电平保持不高于 0.5V 的低电平以保证 8031 正常工作。在掉电时,此引脚接备用电源 VDD,以保持 RAM 数据不丢失,当 BVCC 低于规定的值时,而 VPD 在其规定的电压范围内时,VPD 就向内部数据存储器提供备用电源。
ALE/PROG(30 引脚)当 8031 访问外部存储器时,包括数据存储器和程序存储器,ALE9 地址锁存允许 0 输入的脉冲的下沿用于锁存 16 位地址的低 8 位,在不访问外部存储器的时候,ALE 仍有两个周期的正脉冲输出,其频率为振荡器的频率的1/6,在访问外存储器的是候,在两个周期中,ALE 只出现一次,ALE 断可驱动 8 个LS TTL 负载,对于有片内 EPROM 的而言,在 EPROM 编程期间,此脚用于输入编程脉冲 PROG。
PSEN(29 引脚)此脚输出为 单片机内访问外部程序存储器的读选通信号,在读取外部指令期间, PSEN 非有两次在每个周期有效,在此期间,每当访问外部存储器时,两个有效的 PSEN 非将不再出现,同样这个引脚可驱动 8 个 LSTTL 负载。
EA/VPP(31 引脚)当保持高电平时,单片机访问内部存储器,当 PC 值超过0FFFH 时,将自动转向片外存储器。当保持低电平时,则只访问外部程序存储器,对 8031 而言,此脚必须接地。
P0,P1,P2,P3:8031 有四个并行口,在这四个并行口中,可以在任何一个输出数据,又可以从它们那得到数据,故它们都是双向的,每一个 I/O 口内部都有一个8 位数据输出锁存器和一个 8 位数据输入缓冲器,各成为 SFR 中的一个,因此 CPU数据从并行 I/O 口输出时可以得到锁存,数据输入时可以得到缓冲,但他们在功能和用途上的差异很大,P0 和 P2 口内部均有个受控制器控制的二选一选择电路,故它们除可以用做通用 I/O 口以外还具有特殊的功能,P0 口通常用做通用 I/O 口为 CPU 传送数据,P2 口除了可以用做通用口以外,还具有第一功能,除 P0 口以外其余三个都是准双向口。
8031 有一个全双工串行口,这个串行口既可以在程序下把 CPU 的 8 位并行数据变成串行数据一位一位的从发送数据线发送出去,也可以把串行数据接受进来变成并行数据给 CPU,而且这种串行发送和接收可以单独进行也可以同时进行。
8031 的 串行发送和接收利用了 P3 口的第二功能,利用 P3.1 做串行数据接收线,串行接口的电路结构还包括了串行口控制寄存器 SCON,电源及波特率选择寄存器PCON 和串行缓冲寄存器 SBUF,他们都属于 SFR,PCON 和 SCON 用于设置串行口工作方式和确定数据发送和接收,SBUF 用于存放欲发送的数据起到缓冲的作用。
19
4.2.58031程序存储器
MCS-51 系列单片机的内部 ROM 是不同的,8051 有 4K 的 ROM,而 8751 则是4K 光可擦写 EPROM,而我们所采用的 8031 则没有片内的 ROM,但是无论那种型号的芯片都可以在片外扩展多达 64K 的片外程序存储器,外部程序存储器扩展的大小以满足系统要求即可,或有特殊要求或为了以后升级方便采用大容量的片外程序存储器。当外接程序存储器的时候,单片机通过 P2 口和 P0 口输出 16 位的地址,即可寻址的外部程序存储器单元的地址,使用 ALE 作为低 8 位地址锁存器信号,再由 P0口读回指令的代码,用 PSEN 非作为外部程序存储器的选通信号。
单片机有一个程序计数器 PC,它始终存着 CPU 要读取的机器码的所在地址,单片机工作时,PC 自动加一,此时程序开始顺序执行,因为单片机程序 访问空间是64K,故需要 16 条地址线,当接“0”则 8031 在片外程序存储器中读取指令,此 时存储器从 0000H 开始编址,因为 8031 无片内程序存储器,故在此系统中EA必须接地使 CPU 到外部 ROM 中去寻址。
在程序存储器中有六个单元有特定的含义:
0000H 单元:单片机复位后,PC=0000H 即从此处开始执行指令。 0003H 单元:外部中断 0 入口地址。 000BH 单元:定时器 0 溢出中断入口地址。 0013H 单元:外部中断 1 入口地址。 001BH 单元:定时器溢出中断入口地址。 0023H 单元:串行口中断入口地址。
使用时常在这些入口外安放一条绝对跳转指令,使程序跳转到拥护安排的中断处理程序的起始地址,或从 0000H 外执行一跳转指令,跳转到用户设计的初始程序入口。
4.2.6 数据存储器
数据存储器用于存放运算中间的结果、数据暂存、缓冲、标志位、待测程序等功能。片内的 128B 的 RAM 地址为 00H~7FH,供用户做 RAM 用,但是在这中间的前32 单元,00H~1FH 即引用地址寻址做用户 RAM 用,常常做工作寄存器区,分做四组,每组由 8 个单元组成通用寄存器 R0~R7,任何时候都由其中一组作为当前工作寄存器,通过 RS0,RS1 的内容来决定选择哪一个工作寄存器。
低 128 字节中的 20H~2FH 共 16 字节可用位寻址方式访问各位,共 128 个位地址,30H~7FH 共 80 个单元为用户 RAM 区,作堆栈或数据缓冲用,片内 RAM 不够用时,须扩展片外数据存储器。此时单片机通过 P2 口和 P0 口选出 6 位地址,使用ALE 作低 8 位的锁存信号,再由 P0 口写入或读出数据。写时用AR,读时用RD,做外部数据存储器的选通信号 4.2.35特殊功能寄存器SFR
8031 有 21 个专用寄存器,他们是用来管理 CPU 和 I/O 口以及内部逻辑部件的,在指令中专用寄存器是以存储单元方式被读写的,专用寄存器虽有名称,但寻址时都做专用寄存器用,它们的地址是与片内 RAM 的地址相连的。下面就专用寄存器作以简单的介绍:
20
累加器 A:在绝大多数情况下它参与运算的一方并存放运算的结果。
寄存器 B:进行乘除运算时,寄存器 B 有特定的用途,在乘时存放一个乘数以及积的最高位,A 中存放另一个乘数以及积的低位。除法时,B 中存放除数及余数,而在 A 中存放被除数和商,其他情况可作为普通寄存器用。
堆栈指针 SP:在子程序调用或中断时,用来暂存数据和地址,它按先进后出的原则存储数据,它是一个八位寄存器它指出堆栈顶部在片内 RAM 中的位置,系统复位后,SP 变成 07H,使堆栈从 00 单元开始。;
数据指针 DPTR:由两个字节组成,DPH 字地址由 83H,DPL 由 82H,存放一个 16 位的二进制数做地址用。
程序状态字 PSW:七位用来表征各种标志,另一位无意义。 C AC FO RS1 RS0 OV -- P
C:进位标志位,用于表示加减运算时最高位有无进位和借位,在加法运算中,若累加器最高位有进位则 CY=1,否则 CY=0,在减法时则有借位 CY=1,否则 CY=0,在执行算术逻辑运算时可以被硬件或软件置位或清除,CPU 在进行移位操作也会影响该位。
AC:当进行加法或减法运算时并产生由低四位向高四位的进位或借位时,AC 置1,否则清 0。若 AC=0 时则在加减过程中 A3 没有向 A4 进位或借位,否则正好相反。
F0:F0 常不是由机器来指令执行中形成的,而是用户根据程序的需要进行设置的,这个位一经确定就可通过软件测试来决定用户程序的流向。
RS1,RS0:8031 有四个 8 位工作寄存器 R0~R7,用户可以改变 RS1 和 RS0 的状态来决定 R0~R7 的物理地址。
OV:用以指示运算是否发生溢出,由机器执行指令自动形成,若机器在执行指令过程中累加器 A 超过 8 位,则 OV=1 否则为 0。
P:用来来表示累加器 A 中的值为 1 的二进制位的奇偶数,若‘1’的个数为奇数 P=1,为偶数 P=0。在串行通信中常用奇偶校验数据传输结果的正确性。
4.2.7 工作方式
它的工作方式可以分做复位,掉电和低功耗方式等。 一、复位方式
当 MCS-5l 系列单片机的复位引脚 RST(全称 RESET)出现 2 个机器周期以上的高电平时,单片机就执行复位操作。如果 RST 持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。常用的上电复位电路如图 (4-15)中左图所示。图中电容 C1 和电阻 R1 对电源十 5V 来说构成微分电路。上电后,保持RST 一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻 R1,也能达到上电复位的操作功能,如图 (4-15a)中所示。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。常用的上电或开关复位电路如图 (4-15b)所示。上电后,由
21
于电容 C3 的充电和反相门的作用,使 RST 持续一段时间的高电平。当单片机已在运行当中时,按下复位键 K 后松开,也能使 RST 为一段时间的高电平,从而实现上电或开关复位的操作。
根据实际操作的经验,下面给出这两种复位电路的电容、电阻参考值。
图4-15单片机的复位电路
图(4-15a)中:Cl=10-30uF,R1=1kO 图(4-15b)中:C:=1uF,Rl=lkO,R2=10kO 二、掉电和低功耗方式
人们往往在程序运行中系统发生掉电的故障,使 RAM 和寄存器中的数据内容丢失,使人们丢失珍贵的数据而束手无策,8031 有掉电保护,是先把有用的数据保存,再用备用电源进行供电。
4.3 存储器的设计
在 8031 芯片的外围电路中必须对其进行程序存储器的扩展,和根据系统的需要对其进行数据存储器的扩展。8031 对程序存储器和数据存储器均可进行 0000H~FFFFH 的 64K 字节地址内容的有效寻址。在前面我们已经讲过 8031 外扩展存储器时,P2 作高位的地址输出,P0 作低位地址输出和数据线。 一、程序存储器的扩展
由于 8031 无内部 ROM ,故扩展的程序存储器地址为 0000H~FFFFH,考虑系统的需要,我们将 8031 的程序存储器扩展为 4K EPROM,采用 2764 作为 ROM 芯片。
程序存储器扩展的容量大于 256 字节,故 EPROM 片内地址线除了由 P0 口经地址存储器提供低 8 位地址外,还需要由 P2 口提供若干条地址线,我们选用 8K 的 2764EPROM,故地址线应该是 13 条,因为系统中只扩展一片 EPROM,所以不用片选信号,即 EPROM 的接地。在程序扩展中,我们选用的地址锁存器是 74LS373
当三态门的OE为低电平时,三态门处于导通状态,允许 Q 端输出,否则OE为高电平,输出为三态门断开,输出端对外电路呈高阻态,所以在这里OE为低电平,这时当G 端为高电平时,锁存器输出和输入的状态是相同的,当 G 由高电平下落为低电平时,输入端 1D~8D 的数据锁入 1Q~8Q 中。
22