基于AT89S51的程序存儲(chǔ)器的操作時(shí)序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1.訪問程序存儲(chǔ)器的控制信號(hào)
AT89S51單片機(jī)訪問片外擴(kuò)展的程序存儲(chǔ)器時(shí),所用的控制信號(hào)有以下3種。
(1) ALE——用于低8位地址鎖存控制。
(2) PSEN(的反)——片外程序存儲(chǔ)器“讀選通”控制信號(hào)。它接外擴(kuò)EPROM的OE(的反)引腳。
(3) EA(的反)——片內(nèi)、片外程序存儲(chǔ)器訪問的控制信號(hào)。當(dāng)EA(的反)=1時(shí),在單片機(jī)發(fā)出的地址小于片內(nèi)程序存儲(chǔ)器最大地址時(shí),訪問片內(nèi)程序存儲(chǔ)器;當(dāng)EA(的反)=0時(shí),只訪問片外程序存儲(chǔ)器。
如果指令是從片外EPROM中讀取的,除了ALE用于低8位地址鎖存信號(hào)之外,控制信號(hào)還有PSEN(的反),PSEN(的反)接外擴(kuò)EPROM的OE(的反)腳。此外,還要用到PO口和P2口,PO口分時(shí)用作低8位地址總線和數(shù)據(jù)總線,P2口用作高8位地址線。
2.操作時(shí)序
AT89S51單片機(jī)對(duì)片外ROM的操作時(shí)序分兩種,即執(zhí)行非MOVX指令的時(shí)序和執(zhí)行MOVX指令的時(shí)序,如下圖所示。
(1)應(yīng)用系統(tǒng)中無片外RAM 硬件系統(tǒng)中無片外RAM(或I/O)時(shí),則不用執(zhí)行MOVX指令。在執(zhí)行非MOVX指令時(shí),操作時(shí)序如下圖(a)所示。PO口作為地址/數(shù)據(jù)復(fù)用的雙向總線,用于輸入指令或輸出程序存儲(chǔ)器的低8位地址PCL。P2口專門用于輸出程序存儲(chǔ)器的高8位地址PCH。P2口具有輸出鎖存功能。由于PO口是分時(shí)復(fù)用,故首先要用ALE將PO口輸出的低8位地址PCL鎖存在鎖存器中,然后PO口再作為數(shù)據(jù)口。在每個(gè)機(jī)器周期中,允許地址鎖存兩次有效,ALE在下降沿時(shí),將PO口上的低8位地址PCL鎖存在鎖存器中。同時(shí),PSEN(的反)也是每個(gè)機(jī)器周期中兩次有效,用于選通片外程序存儲(chǔ)器,將指令讀入片內(nèi)。
系統(tǒng)無片外RAM(或I/O)時(shí),此ALE有效信號(hào)以振蕩器頻率的1/6出現(xiàn)在引腳上,它可以用作外部時(shí)鐘或定時(shí)脈沖信號(hào)。
(2)應(yīng)用系統(tǒng)中接有片外RAM 在執(zhí)行訪問片外RAM(或I/O)的MOVX指令時(shí),程序存儲(chǔ)器的操作時(shí)序有所變化。其主要原因在于,執(zhí)行MOVX指令時(shí),16位地址應(yīng)轉(zhuǎn)而指向數(shù)據(jù)存儲(chǔ)器,操作時(shí)序如下圖(b)所示。在指令輸入以前,P2口輸出的地址PCH、PCL指向程序存儲(chǔ)器;在指令輸入并判定是MOVX指令后,ALE在該機(jī)器周期S5狀態(tài)鎖存的是PO口發(fā)出的片外RAM(或I/O)低8位地址。若執(zhí)行的是“MOVX A,@DPTR”或是“MOVX @DPTR,A”指令,則此地址就是DPL(數(shù)據(jù)指針低8位);同時(shí),在P2口上出現(xiàn)的是DPH(數(shù)據(jù)指針的高8位)。若執(zhí)行的是“MOVX A,@R/”或“MOVX @R/,A”指令,則R/的內(nèi)容為低8位地址,而P2口線上將是P2口鎖存器的內(nèi)容。在同一機(jī)器周期中將不再出現(xiàn)PSEN有效取指信號(hào),下一個(gè)機(jī)器周期中ALE的有效鎖存信號(hào)也不再出現(xiàn);而當(dāng)RD/WR有效時(shí),PO口將讀/寫數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)。
由上圖(b)可以看出:
(1)將ALE用作定時(shí)脈沖輸出時(shí),執(zhí)行一次MOVX指令就會(huì)丟失一個(gè)ALE脈沖。
(2)只有在執(zhí)行MOVX指令時(shí)的第二個(gè)機(jī)器周期中,才對(duì)數(shù)據(jù)存儲(chǔ)器(或I/O)進(jìn)行讀/寫,地址總線才由數(shù)據(jù)存儲(chǔ)器使用。