1 复位及复位电路
在mcs-51中,最常见的复位电路为图2.10所示的上电复位电路,它能有效的实现上电复位和手动复位。rst引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作,若使用6mhz晶振,则需持续4μs以上才能完成复位操作。图2.10中,在通电瞬间,由于rc的充电过程,在rst端出现一定宽度的正脉冲,只要该正脉冲保持10ms以上,就能使单片机自动复位,在6mhz时钟时,通常cr取22μf,r1取200ω,r2取1kω,这时能可靠的上电复位和手动复位。
图2.10 上电复位电路
cpu在第二个机器周期内执行内部复位操作,以后每个机器周期重复一次,直至rst端电平变低。在单片机复位期间,ale和 信号都不产生。复位操作将对部分专用寄存器产生影响,复位后,这些内部寄存器状态如表2-6。
表2-6 部分专用寄存器复位状态
寄存器
值
寄存器
值
pc
0000h
acc
00h
b
00h
psw
00h
sp
07h
dptr
0000h
p0~p3
0ffh
ip
xxx00000
ie
0xx00000
tmod
00h
tcon
00h
tl0,tl1
00h
th0,th1
00h
scon
00h
sbuf
不定
pcon
0xxx0000
2 时钟电路和时序
1. 时钟电路
在mcs-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为xtal1,输出端为xtal2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式,如图2.11所示。
(a)内部方式时钟电路 (b)外接时钟电路
图2.11 时钟电路
在内部方式时钟电路中,必须在xtal1和xtal2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常c1和c2一般取30pf,晶振的频率取值在1.2mhz~12mhz之间。对于外接时钟电路,要求xtal1接地,xtal2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12mhz即可。
晶体振荡器的振荡信号从xtal2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号p1和p2供单片机使用。时钟信号的周期称为状态时间s,它是振荡周期的2倍,p1信号在每个状态的前半周期有效,在每个状态的后半周期p2信号有效。cpu就是以两相时钟p1和p2为基本节拍协调单片机各部分有效工作的。
2. 指令时序
我们将单片机的基本操作周期称作机器周期,一个机器周期由6个状态组成,每个状态由两个时相p1和p2构成,故一个机器周期可依次表示为s1p1,s1p2,…,s6p1,s6p2,即一个机器共有12个振荡脉冲。为了大家便于分析cpu的时序,在此先对以下几个概念作一介绍。
(1)振荡周期
振荡周期指为单片机提供定时信号的振荡源的周期或外部输入时钟的周期。
(2)时钟周期
时钟周期又称作状态周期或状态时间s,它是振荡周期的两倍,它分为p1节拍和p2节拍,通常在p1节拍完成算术逻辑操作,在p2节拍完成内部寄存器之间的传送操作。
(3)机器周期
一个机器周期由6个状态组成,如果把一条指令的执行过程分作几个基本操作,则将完成一个基本操作所需的时间称作机器周期。单片机的单周期指令执行时间就为一个机器周期。
(4)指令周期
指令周期即执行一条指令所占用的全部时间,通常为1~4个机器周期。
在图2.12中给出了mcs-51单片机的典型取指、执行时序。由图可知,在每个机器周期内,地址锁存信号ale两次有效,一次在s1p2与s2p1之间,另一次在s4p2和s5p1之间。
图2.12 mcs-51单片机取指、执行时序
从图2.12我们可以看出,对于单周期指令,当操作码被送入指令寄存器后,指令的执行从s1p2开始。若对于双字节单周期指令,则在同一机器周期的s4期间读入第二个字节。如果是单字节单周期指令,则在s4期间仍然保持读操作,但所进行的读操作为无效操作,同时程序计数器pc并不加1。
在图2.12(a)和(b)给出了单字节单周期和双字节单周期指令的时序,这些操作都在s6p2结束时完成指令操作。
在图2.12(c)中给出了单字节双周期指令时序,在两个机器周期内进行了四次读操作,由于是单字节指令,故后面的三次读操作是无效的。
在图2.12(d)中给出了访问外部数据存储器指令movx的时序,它是一条单字节双周期指令。在执行movx指令期间,外部数据存储器被访问且选通时跳过两次取指操作,其中在第一个机器周期s5开始送出片外数据存储器的地址后,进行读、写数据,在此期间并无ale信号,故第二周期不产生取指操作。
3 单片机的低功耗方式
对于mcs-51系列机型来说,它们有待机方式和掉电保护方式两种低功耗方式。通过设置电源控制寄存器pcon的相关位可以确定当前的低功耗方式。pcon寄存器格式如下: