ALE/RD/WR/擴展存儲器


 

糾結了這么久,現在總算有點兒頭緒了,先把它整理到這里先,有幾點還是j經常被弄糊塗:地址和數據,地址/數據復用,地址的計算,總線的概念,執行指令跟脈沖的關系,哎呀呀,看來計算機組成和原理不看不行啊,得找個時間瞧瞧,過把癮了解了解。。。

 

使用ALE信號作為低8位地址的鎖存控制信號。 以PSEN信號作為擴展程序存儲器的讀選通信號,在讀外部ROM是PSEN是低電平有效,以實現對ROM 的讀操作。

 

由RD和WR信號作為擴展數據存儲器和I/O口的讀選通、寫選通信號。

 

 

ALE/PROG: 當訪問外部存儲器時,地址鎖存允許的輸出電平用於鎖存地址的地位字節。

 

在FLASH編程期間,此引腳用於輸入編程脈沖。

在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振盪器頻率的1/6。因此它可用作對外部輸出的脈沖或用於定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。

 

當訪問外部存儲器時,ALE作為鎖存擴展地址的低8位字節的控制信號。

當訪問外部數據存儲器時,ALE以十二分之一振盪頻率輸出正脈沖,同時這個引腳也是EPROM編程時的編程脈沖輸入端。]

 

當非訪問外部數據存儲器時,ALE以六分之一振盪頻率固定輸出正脈沖, 8051一個機器周期=6個狀態周期=12個振盪周期,若采用6MHz的晶體振盪器,則ALE會發出1MHz的固定的正脈沖。因此它可以用來做外部時鍾或定時。如果我們把這個功能應用與實際,可能給我們的設計帶來簡化,降低生產成本。

 

ALE腳是在使用MOVX、MOVC指令時才會變成有效(這些指令都使用到外部RAM或ROM的地址。這些指令都有一個特點:地址和數據分時出現在P0口)。使用C寫程序時,要使用它有效,可用訪問內部RAM地址的方法。如:uVariable=*((char *)0x12C),把0x12C地址的內容給uVariable變量。這個過程有效的腳為ALE、RD。

 

這個信號線的信號生成是MCU硬件電路實現的,不可以人工控制。
在某些內置TOM的MCU里,可以關閉ALE信號輸出,以降低EMI。 

 

ALE/PROG(30腳):

   以系統時鍾 fosc  的1/6的頻率,周期性輸出方波脈沖。

  1. 系統擴展時,作為外部存儲器低八位地址的鎖存信號;
  2. 可為系統提供一個頻率為 fosc/6 的方波信號;

EPROM型單片機編程時編程輸入脈沖(第二功能)

PSEN(29腳):外部程序程序存儲器的選通輸出信號。

       當單片機使用外部程序存儲器時,此腳在一個機器周期內產生兩次負脈沖,作為外部程序存儲器ROM的選通信號;

       訪問外部數據存儲器 RAM 時,此信號無效。

 

關於出棧和進棧

 

關於外部數據存儲器:

WR:外部數據存儲器寫信號

RD:外部數據存儲器讀信號

 

怎么來擴展存儲器呢?

首先必須知道的是總線結構擴展系統:

 

先看看怎么擴展外部程序存儲器的擴展:

鎖存地址芯片74ls273(低8位地址不能保持一個機器周期,所以要用到鎖存器,而高8為能保持一個機器周期):

瞧瞧簡單的擴展外部ROM的電路圖(PSEN在一個機器周期內產生兩次負脈沖,作為外部程序存儲器ROM的選通信號,訪問外部數據存儲器 RAM 時,此信號無效):

訪問外部ROM的時序圖(P0口呢在一個機器周期內時,首先在第一次ALE下降沿送P0的地址(有74ls373鎖存能保持一個機器周期),在第二次ALE下降沿鎖存數據,而高8位地址在P2口,能保持一個機器周期,所以不用鎖存器):

想想PSEN就是在B時間段拉低的,故就能把數據給送出去了(O(∩_∩)O哈哈哈~,真NB,誰設計的啊,贊一個,嗯,了解硬件內部結構很重要,所以不要僅僅局限於軟件的編程,更需要在有硬件思維的基礎上編程)

 

 

 

兩片構成64KROM的方法:

 

 

多片擴展跟多的ROM呢,沒錯就是用到了譯碼器:

 

懂了擴展ROM,擴展RAM也是一樣的;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM