80C51單片機(jī)指令的取指、執(zhí)行時(shí)序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
使用ALE信號(hào)作為低8位地址的鎖存控制信號(hào)。ALE接到外部鎖存器時(shí),高電平期間,51的p0輸出地址,低電平時(shí)鎖存器將地址鎖存,在ALE低電平時(shí),(PSEN為低)p0口可以傳輸數(shù)據(jù)(指令),這樣就可以地址/數(shù)據(jù)復(fù)用了。
以PSEN信號(hào)作為擴(kuò)展程序存儲(chǔ)器的讀選通信號(hào),在讀外部ROM是PSEN是低電平有效,以實(shí)現(xiàn)對(duì)ROM 的讀操作。
以EA信號(hào)作為內(nèi)外程序存儲(chǔ)器的選擇控制信號(hào),當(dāng)其為低電平時(shí),對(duì)ROM的讀操作限定在外部的程序存儲(chǔ)器,當(dāng)其為高電平時(shí), 對(duì)ROM的讀操作是從內(nèi)部存儲(chǔ)器開始的,并可延至外部程序存儲(chǔ)器.
由RD和WR信號(hào)作為擴(kuò)展數(shù)據(jù)存儲(chǔ)器和I/O口的讀選通、寫選通信號(hào)。
EA信號(hào)是表示是當(dāng)前指令是讀內(nèi),還是外存儲(chǔ)器的控制信號(hào)。如:當(dāng)選用無(wú)片內(nèi)存儲(chǔ)器的單片機(jī),或者不打算用片內(nèi)存儲(chǔ)器時(shí),EA必須接低電平,此外,片外程序存儲(chǔ)器的起始地址應(yīng)該安排在片內(nèi)存儲(chǔ)器之后。
RD和WR信號(hào)就相對(duì)好理解,就是當(dāng)讀數(shù)據(jù)時(shí)(不分內(nèi)外、RAM、ROM)它就有效。WR也是這樣的。
80C51單片機(jī)指令的取指、執(zhí)行時(shí)序
現(xiàn)按4類指令介紹CPU時(shí)序。因?yàn)镃PU工作的過(guò)程就是取指令與執(zhí)行指令的過(guò)程,所以CPU必須先取出指令,然后才能執(zhí)行指令。
1.雙字節(jié)單周期指令
由于雙字節(jié)單周期指令必須在一個(gè)周期內(nèi)取機(jī)器碼二次,所以必須在一個(gè)機(jī)器周期內(nèi)安排二次讀操作碼的操作,分別發(fā)生在S1P2與S4P2。在S1P2讀入機(jī)器碼74并送入指令寄存器IR,在S4P2讀入數(shù)據(jù)03送入累加器A,即讀2取2。在指令的執(zhí)行過(guò)程中,P0口要分時(shí)傳送地址與數(shù)據(jù),因此當(dāng)操作碼的地址從P0口輸出后,必須發(fā)地址鎖存信號(hào)ALE給74LS373鎖存器,將地址鎖存在74LS373內(nèi),騰出P0口讀入機(jī)器碼74。在取數(shù)據(jù)03時(shí)同樣要發(fā)ALE信號(hào)。因此,在一個(gè)機(jī)器周期內(nèi)地址鎖存信號(hào)二次有效,見80C51時(shí)序圖2-13。
2.單字節(jié)單周期指令
對(duì)單字節(jié)單周期指令,由于操作碼只有一個(gè)字節(jié),因此第一次讀操作碼有效,而第二次讀的操作碼將被丟棄,即:讀1丟1,且程序計(jì)數(shù)器PC不加1。
3.單字節(jié)雙周期指令
對(duì)單字節(jié)雙周期指令,由于操作碼只有一個(gè)字節(jié),而執(zhí)行時(shí)間長(zhǎng)達(dá)2個(gè)機(jī)器周期,因此除第1次讀操作碼有效外,其余三次讀的操作碼均被放棄,即:讀1丟3。
4.訪問(wèn)外部存儲(chǔ)器指令MOVX
執(zhí)行訪問(wèn)外部存儲(chǔ)器指令MOVX時(shí),首先從程序存儲(chǔ)器中取出指令,然后從外部數(shù)據(jù)存儲(chǔ)器中取出數(shù)據(jù),因此該指令執(zhí)行時(shí)序圖與前三類指令不同。由于MOVX是單字節(jié)雙周期指令,所以在取指令階段(即第一個(gè)機(jī)器周期的S1P1到S4P2)是讀1丟1,而在執(zhí)行指令讀數(shù)據(jù)階段(即第一個(gè)機(jī)器周期的S5到第二個(gè)機(jī)器周期的S3)所完成的操作如下:
(1)先將外部數(shù)據(jù)存儲(chǔ)單元的地址ADDR由DPTR從P0與P2口輸出,即時(shí)序圖中的S5P1到S6P2階段。并在S4P2到S5P2階段,發(fā)ALE信號(hào)將地址鎖存。
(2)在第二個(gè)機(jī)器周期S1P2到S2P2內(nèi)取消ALE與程序選通信號(hào)PSEN (即取消取指操作),使P0口專門用于傳送數(shù)據(jù)。同時(shí)發(fā)讀信號(hào),通過(guò)P0口將外部數(shù)據(jù)存儲(chǔ)單元中的數(shù)據(jù)傳送到累加器A中。即:時(shí)序圖的S6P2到S4P1階段。
(3)由于鎖存的地址為外部數(shù)據(jù)存儲(chǔ)單元的地址,所以在第二個(gè)機(jī)器周期S4取消取指令的操作,即:不再發(fā)程序選通信號(hào)PSEN 。
注:由于執(zhí)行MOVX指令時(shí),在第二個(gè)機(jī)器周期中要少發(fā)一次ALE信號(hào),所以ALE的頻率是不穩(wěn)定的。
擴(kuò)展閱讀:MCS-51單片機(jī)的指令時(shí)序