MCS-51单片机的指令时序
扫描二维码
随时随地手机看文章
时序是用定时单位来描述的,mcs-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。 ·节拍与状态: 我们把振荡脉冲的周期定义为节拍(为方便描述,用p表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用s表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(p1),后半周期对应的节拍定义为2(p2)。 ·机器周期: mcs-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为s1-s6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着s1p1、s1p2……s6p1、s6p2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6mhz的时钟频率,一个机器周期就是2us,而如使用12mhz的时钟频率,一个机器周期就是1us。 ·指令周期: 执行一条指令所需要的时间称为指令周期,mcs-51的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期(这些内容,我们将在下面的章节中加以说明)。 ·mcs-51的指令时序: mcs-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式: ·单字节指令单机器周期 ·单字节指令双机器周期 ·双字节指令单机器周期 ·双字节指令双机器周期 ·三字节指令双机器周期 ·单字节指令四机器周期(如单字节的乘除法指令) 下图是mcs-51系列单片机的指令时序图: 上图是单周期和双周期取指及执行时序,图中的ale脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ale信号两次有效,第一次在s1p2和s2p1期间,第二次在s4p2和s5p1期间。 接下来我们分别对几个典型的指令时序加以说明。 ·单字节单周期指令: 单字节单周期指令只进行一次读指令操作,当第二个ale信号有效时,pc并不加1,那么读出的还是原指令,属于一次无效的读操作。 ·双字节单周期指令: 这类指令两次的ale信号都是有效的,只是第一个ale信号有效时读的是操作码,第二个ale信号有效时读的是操作数。 ·单字节双周期指令: 两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。 单字节双周期指令有一种特殊的情况,象movx这类指令,执行这类指令时,先在rom中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。在第二个指令周期时,则访问外部数据存储器,这时,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对外部数据存储的访问是对