登录站点

用户名

密码

MCS-51单片机的指令时序设计

已有 149 次阅读  2013-04-16 14:53
时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。电子园51单片机学习网Ag:@Z @ ?d

K? gpm9L44606 电子园51单片机学习网c.bb"LeStx0Pb5y



  •     节拍与状态:
    $f%DL(WYK7a5S44606    我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。

0tsXxB0Pz44606 电子园51单片机学习网G]M5T P1TZ5rG



  •    机器周期:
    kT9Y#?Bxd44606    MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHz的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是1us。
电子园51单片机学习网;@a'g.P}HC*K

 

{(N6W7`s![ T$p44606

  •     指令周期:
    -v}[&qnQ44606    执行一条指令所需要的时间称为指令周期,MCS-51的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期(这些内容,我们将在下面的章节中加以说明)。

8\? bM(\3ZOk-S44606 电子园51单片机学习网qjd_ JHj:`4C2b

电子园51单片机学习网R](cftH

    MCS-51的指令时序:

M9z2x.rJ$m44606 电子园51单片机学习网*z;He+rC WwepE7e

电子园51单片机学习网3i IDxr!h&x
    MCS-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:电子园51单片机学习网:O+|Q8GI!?+?



  •     单字节指令单机器周期
  •     单字节指令双机器周期
  •     双字节指令单机器周期
  •     双字节指令双机器周期
  •     三字节指令双机器周期
  •     单字节指令四机器周期(如单字节的乘除法指令)

!w,E F;U @c~ Kk44606 电子园51单片机学习网8q_]\ aR }C)u


7I7W}:[k;I;e*g[?4Be2P44606    下图是MCS-51系列单片机的指令时序图:
"]6C6HS7e44606  

/y wEdqKCs44606 电子园51单片机学习网U?J2X o*d Vw

电子园51单片机学习网:C0K1nj!b!]W-nG4w
     上图是单周期和双周期取指及执行时序,图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE信号两次有效,第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间。 电子园51单片机学习网%Sy-AJ2D],E
    接下来我们分别对几个典型的指令时序加以说明。

/Y6A lLyX7ZaXP44606 电子园51单片机学习网k@#TlU\*X OE

 电子园51单片机学习网#{f t2O/F0\ @



  •     单字节单周期指令:电子园51单片机学习网s.GB?tC2Q@
        单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。
  •     双字节单周期指令:电子园51单片机学习网ww_n9T_j/@
        这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。
  •    单字节双周期指令:电子园51单片机学习网 }Y)l \Y.f
        两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
    -I!H-ET5I$Z44606    单字节双周期指令有一种特殊的情况,象MOVX这类指令,执行这类指令时,先在ROM中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
电子园51单片机学习网U,}-hi&{Q }d

 

:a)e$@\zr [r c"H44606

9D"N/C [-BO44606    上页的时序图中,我们只描述了指令的读取状态,而没有画出指令执行时序,因为每条指令都包含了具体的操作数,而操作数类型种类繁多,这里不便列出,有兴趣的读者可参阅有关书籍。

:ac{~a2vRDL44606 电子园51单片机学习网9dX(fbm,L1_7Y

 

q0C}8\f F)q44606 电子园51单片机学习网/a/h O3~1it \

    外部程序存储器(ROM)读时序电子园51单片机学习网(q7aw1W:X|l'N;y{R1e


d7L#W/E5j9B p44606
(y|v/fal&U44606 

#`[Ota)J? {7f44606

Fn0}%Jqh44606电子园51单片机学习网 C%xJq#r8j7Nh ~
    图8051外部程序存储器读时序图,从图中可看出,P0口提供低8位地址,P2口提供高8位地址,S2结束前,P0口上的低8位地址是有效的,之后出现在P0口上的就不再是低8位的地址信号,而是指令数据信号,当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求,在S2其间必须把低8位的地址信号锁存起来,这时是用ALE选通脉冲去控制锁存器把低8位地址予以锁存,而P2口只输出地址信号,而没有指令数据信号,整个机器周期地址信号都是有效的,因而无需锁存这一地址信号。 

6~6D YD.gv[44606

;zW2jF$UeVt44606电子园51单片机学习网2s._7?H~C4}
     从外部程序存储器读取指令,必须有两个信号进行控制,除了上述的ALE信号,还有一个PSEN(外部ROM读选通脉冲),上图显然可看出,PSEN从S3P1开始有效,直到将地址信号送出和外部程序存储器的数据读入CPU后方才失效。而又从S4P2开始执行第二个读指令操作。电子园51单片机学习网7R*z,s!^OnJ6C G"m T


fk uN {,_6s ?3v44606 

$[3b&Ah i/E)_yG44606 电子园51单片机学习网 Z+e.l_$ud N0A

    外部数据存储器(RAM)读时序

f1ei,Gg^g44606

!Y!TQMjdz-oe44606
!?gFX_,p GZF44606 

5n4In6G2G;uUB b44606

R`:W7|i%]44606
c9z5{6Z Z4\,k/nRik44606
    上图8051外部数据存储器读写时序图,从ROM中读取的需执行的指令,而CPU对外部数据存储的访问是对RAM进行数据的读或写操作,属于指令的执行周期,值得一提的是,读或写是两个不同的机器周期,但他们的时序却是相似的,我们只对RAM的读时序进行分析。

;Eng*oD2p44606

mX2G[,e3L B]44606
)F(K T)T$H44606    上一个机器周期是取指阶段,是从ROM中读取指令数据,接着的下个周期才开始读取外部数据存储器RAM中的内容。 

^&iUGM44606

D@;[A?H44606
&ee(V z*rz44606     在S4结束后,先把需读取RAM中的地址放到总线上,包括P0口上的低8位地址A0-A7和P2口上的高8位地址A8-A15。当RD选通脉冲有效时,将RAM的数据通过P0数据总线读进CPU。第二个机器周期的ALE信号仍然出现,进行一次外部ROM的读操作,但是这一次的读操作属于无效操作。电子园51单片机学习网^e2yFcWkQ


#QMA2^W8hb44606
ms3F6PXu D8z/Q44606    对外部RAM进行写操作时,CPU输出的则是WR(

上一篇: stm32应用例程 下一篇: 51 单片机模拟 SPI 总线的方法

分享 举报