所需要的信号数目却远远超过其引脚数目。为解决这一矛盾,单片机的某些信号引脚被赋以双重功能。
1)电源及电源复位引脚:
(1)VCC(40脚):正常操作时接+5V直流电源。 (2)VSS (20脚):接地端。
VCCI/OP1P0I/OI/OP3RSTXTAL1XTAL2P2ALEI/OPSENEAVSS图2 40引脚PDIP封装的80C51单片机的引脚排列及逻辑符号图
(3)RST/VPD(9脚):复位信号输入端。在该引脚上输入一定时间(约两个机器周期)的高电平将使单片机复位。该引脚的第二功能是VPD,即备用电源输入端。当主电源发生故障,降低到低电平规定值时,可将+5V备用电源自动接入VPD端,以保护片内RAM中的信息不丢失,使复电后能继续正常运行。
(4)EA/VPP(31脚):访问程序存储器控制信号/编程电源输入。当EA保持高电平时,访问内部程序存储器,访问地址范围在0~4KB内;当PC(程序计数器)值超过0FFFH,即访问地址超出4KB时,将自动转向执行外部程序存储器内的程序;当EA保持低电平时,不管单片机内部是否有程序存储器,则只访问外部程序存储器(从0000H地址开始)。由此可见,对片内有可用程序存储器的单片机而言,EA端应接高电平,而对片内无程序存储器的单片机,可将EA接地。
对于EPROM型单片机,在EPROM编程期间,此引脚用于施加21V的编程电源(VPP)。
2)时钟振荡电路引脚XTAL1和XTAL2:
(1)XTAL1(19脚):外接石英晶体和微调电容引脚1。它是片内振荡电路反向放大器的输入端。采用外部振荡器时此引脚接地。
(2)XTAL2(18脚):外接石英晶体和微调电容引脚2。它是片内振荡电路反向放大器的输出端。采用外部振荡器时此引脚为外部振荡信号输入端。
3) ALE/PROG(30脚):低8位地址锁存控制信号/编程脉冲输入。在系统扩展时,ALE用于把P0口输出的低8位地址锁存起来,以实现低8位地址和数据的隔离。在访问外部程序存储器期间,ALE信号两次有效;而在访问外部数据存储器期间,ALE信号一次有效。对于EPROM型单片机,在EPROM编程期间,此引脚用于输入编程脉冲PROG。
4)PSEN(29脚):外部程序存储器的读选通信号输出端,低电平有效。在从外部程序存储器取指令(或常数)期间,此引脚定时输出负脉冲作为读取外部程序存储器的信号,每个机器周期PSEN两次有效,此时地址总线上送出的地址为外部程序存储器地址;在此期间,如果访问外部数据存储器和内部程序存储器,不会产生PSEN信号。
5)并行双向输入/输出(I/O)口引脚:
(1)P0口的P0.0~P0.7引脚(39~32脚):8位通用输入/输出端口和片外8位数据/低8位地址复用总线端口。
(2)P1口的P1.0~P1.7引脚(1~8脚):8位通用输入/输出端口。 (3)P2口的P2.0~P2.7引脚(28~21脚):8位通用输入/输出端口和片外高8位地址总线端口。
(4)P3口的P3.0~P3.7引脚(10~17脚):8位通用输入/输出端口,具有第二功能。
1.2.3 外部总线构成
所谓总线,就是连接单片机与各外部器件的一组公共的信号线。当系统要求扩展时,单片机要与一定数量的外部器件和外围设备连接。如果各部件及每一种外围设备都分别用各自的一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路的设计和系统结构,常用一组线路,并配以适当
的接口电路来与各个外部器件和外围设备连接,这组共用的连接线路就是总线。采用总线结构便于扩展外部器件和外围设备,而统一的总线标准则使不同设备间的互连更容易实现。
利用片外引脚可以构造MCS-51系列单片机的三总线结构。单片机的引脚除了电源端VCC、接地端VSS、复位端RST、晶振接入端XTAL1和XTAL2、通用I/O口的P1.0~P1.7以外,其余的引脚都是为实现系统扩展而设置的。用这些引脚构造的单片机系统的三总线结构如3所示。
P2P0地址锁存器地址总线MCS-51单片机ALE数据总线PSENWRRDEA控制总线
图3 MCS-51系列单片机片外三总线结构
1)地址总线(Address Bus,AB):MCS-51系列单片机总共有16根地址线A15~ A0,片外存储器可寻址范围达64KB(216=65536字节),由P2口直接提供高8位地址A15~ A8,P0口经地址锁存器提供低8位地址A7~ A0。
2)数据总线(Data Bus,DB):MCS-51系列单片机总共有8根数据线D7~D0,全由P0口提供。由于P0口是分时复用总线,分时输送低8位地址(通过地址锁存器锁存)和高8位数据信息。
3)控制总线(Control Bus,CB):控制总线由P3口的第二功能WR(P3.6)、
RD(P3.7)和3根独立的控制线EA、ALE、PSEN组成。
1.3 单片机时钟电路及时钟时序单位
1) 时钟电路
单片机本身如同一个复杂的同步时序电路,为了保证同步工作,电路应在唯一的时钟信号控制下,严格地按规定时序工作。而时钟电路就用于产生单片机工作所需要的时钟信号。MCS-51单片机时钟电路示意图如图4所示。
XTAL1C1二分频÷2三分频状态时钟晶振C2反相放大器÷3六分频ALE÷6fOSC机器周期XTAL2
图4 MCS-51单片机时钟振荡电路示意图
在MCS-51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是1.2~12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。
振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用。振荡脉冲在片内通过一个时钟发生电路二分频后才作为系统的时钟信号。片内时钟发生电路实质上是一个二分频的触发器,其输入来自振荡器,输出为二相时钟信号,即状态时钟信号,其频率为fosc/2;状态时钟三分频后为ALE信号,其频率为fosc/6;状态时钟六分频后为机器周期,其频率为fosc/12。
在图4中,使用晶体振荡器时,C1、C2取值30±10pF;使用陶瓷振荡器时,C1、C2取值40±10pF。C1、C2的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值20~30pF。在设计印制电路板时,晶振和电容等应尽可能靠近芯片,以减少分布电容,保证振荡器振荡的稳定性。
也可以由外部时钟电路向片内输入脉冲信号作为单片机的振荡脉冲。这时外部脉冲信号是经XTAL1引脚引入的,而XTAL2引脚悬空或接地。对外部信号的占空比没有要求,但高低电平持续的时间不应小于20ns。这种方式常用于多块芯片同时工作,便于同步。其外部脉冲接入方式如图5所示。