计算机作业时,是在一致的时钟脉冲操控下一拍一拍地进行的。这个脉冲是由单片机操控器中的时序电路宣布的。单片机的时序便是CPU在履行指令时所需操控信号的时刻次序,为了确保各部件间的同步作业,单片机内部电路应在仅有的时钟信号下严格地控时序进行作业,在学习51单片机的时序之前,咱们先来了解下时序相关的一些概念。
一、内部时钟方法:
使用单片机内部的振动器,然后在引脚XTAL1(18脚)和XTAL2(19脚)两头接晶振,就构成了安稳的自激振动器,其宣布的脉冲直接送入内部时钟电路,外接晶振时,晶振两头的电容一般挑选为30PF左右;这两个电容对频率有微调的效果,晶振的频率规模可在1.2MHz-12MHz之间挑选。为了削减寄生电容,更好地确保振动器安稳、可靠地作业,振动器和电容应尽或许装置得与单片机芯片接近。(提示一下,本站供给的学习套件悉数选用的便是这种时钟方法)。
二、外部时钟方法:
此方法是使用外部振动脉冲接入XTAL1或XTAL2。HMOS和CHMOS单片机外时钟信号接入方法不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故主张外接一个上接电阻。关于CHMOS型的单片机(例如 80C51),因内部时钟发生器的信号取自反相器的输入端,故选用外部时钟源时,接线方法为外时钟信号接到XTAL1而XTAL2悬空。如下图
外接时钟信号经过一个二分频的触发器而成为内部时钟信号,要求高、低电平的持续时刻都大于20ns,一般为频率低于12MHz的方波。片内时钟发生器便是上述的二分频触发器,它向芯片供给了一个2节拍的时钟信号。
时钟周期
机器周期
指令周期
一般含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
MCS-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。履行这些指令需求的时刻是不同的,也便是它们所需的机器周期是不同的,有下面几种方式:
·单字节指令单机器周期
·单字节指令双机器周期
·双字节指令单机器周期
·双字节指令双机器周期
·三字节指令双机器周期
·单字节指令四机器周期(如单字节的乘除法指令)
下图是MCS-51系列单片机的指令时序图:
上图是单周期和双周期取指及履行时序,图中的ALE脉冲是为了锁存地址的选通信号,明显,每呈现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE信号两次有用,第一次在S1P2和S2P1期间,第2次在S4P2和S5P1期间。
接下来咱们别离对几个典型的指令时序加以阐明。
·单字节单周期指令:
单字节单周期指令只进行一次读指令操作,当第二个ALE信号有用时,PC并不加1,那么读出的仍是原指令,归于一次无效的读操作。
·双字节单周期指令:
这类指令两次的ALE信号都是有用的,仅仅第一个ALE信号有用时读的是操作码,第二个ALE信号有用时读的是操作数。
·单字节双周期指令:
两个机器周期需进行四读指令操作,但只要一次读操作是有用的,后三次的读操作均为无效操作。
单字节双周期指令有一种特别的状况,象MOVX这类指令,履行这类指令时,先在ROM中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有用,而第2次读指令操作则为无效的。在第二个指令周期时,则拜访外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
上页的时序图中,咱们只描绘了指令的读取状况,而没有画出指令履行时序,由于每条指令都包含了详细的操作数,而操作数类型品种繁复,这儿不方便列出,有爱好的读者可参看有关书本。
·外部程序存储器(ROM)读时序
右图8051外部程序存储器读时序图,从图中可看出,P0口供给低8位地址,P2口供给高8位地址,S2完毕前,P0口上的低8位地址是有用的,之后呈现在P0口上的就不再是低8位的地址信号,而是指令数据信号,当然地址信号与指令数据信号之间有一段缓冲的过度时刻,这就要求,在S2其间有必要把低8位的地址信号锁存起来,这时是用ALE选通脉冲去操控锁存器把低8位地址予以锁存,而P2口只输出地址信号,而没有指令数据信号,整个机器周期地址信号都是有用的,因此无需锁存这一地址信号。
从外部程序存储器读取指令,有必要有两个信号进行操控,除了上述的ALE信号,还有一个PSEN(外部ROM读选通脉冲),上图明显可看出,PSEN从S3P1开端有用,直到将地址信号送出和外部程序存储器的数据读入CPU后刚才失效。而又从S4P2开端履行第二个读指令操作。
·外部数据存储器(RAM)读时序
右图8051外部数据存储器读写时序图,从ROM中读取的需履行的指令,而CPU对外部数据存储的拜访是对RAM进行数据的读或写操作,归于指令的履行周期,值得一提的是,读或写是两个不同的机器周期,但他们的时序却是类似的,咱们只对RAM的读时序进行剖析。
上一个机器周期是取指阶段,是从ROM中读取指令数据,接着的下个周期才开端读取外部数据存储器RAM中的内容。
在S4完毕后,先把需读取RAM中的地址放到总线上,包含P0口上的低8位地址A0-A7和P2口上的高8位地址A8-A15。当RD选通脉冲有用时,将RAM的数据经过P0数据总线读进CPU。第二个机器周期的ALE信号依然呈现,进行一次外部ROM的读操作,可是这一次的读操作归于无效操作。
对外部RAM进行写操作时,CPU输出的则是WR(写选通信号),将数据经过P0数据总线写入外部存储中。