<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機擴展外部RAM

          51單片機擴展外部RAM

          作者: 時間:2016-11-27 來源:網絡 收藏
          今天這個是是以前做過的,沒做成,擴展ROM的時候失敗了~~

          不過今天主要的就是擴展外部的RAM,這個相對比較簡單點,不想外部的ROM還要設置太多的編譯器~~

          本文引用地址:http://www.ex-cimer.com/article/201611/322138.htm

          單片機擴展外部RAM

          一、擴展總線

          1、簡介(這種擴展是基于總線擴展的,所以,P0、P2口就已經不可以再做它用了)

          1)數(shù)據(jù)總線寬度為8位,由P0口提供;

          2)地址總線寬度為16位,可尋址范圍2的16次,也就是64K。低8位A7~A0由P0口經地址鎖存器提供,高8位A15~A8由P2口提供。由于P0口是數(shù)據(jù)、地址分時復用,所以P0口輸出的低8位必須用地址鎖存器進行鎖存;

          3)控制總線由RD、WR、PSEN、ALE和EA等信號組成,用于讀/寫控制、片外RAM選通、地址鎖存控制和片內、片外RAM選擇。

          地址鎖存器一般選用帶三態(tài)輸出緩沖輸出的8D鎖存器74LS373。

          2、片外RAM的操作時序

          進行RAM的擴展,其擴展方法較為簡單容易,這是由單片機的優(yōu)良擴展性能解決的。單片機的地址總線為16位,擴展的片外RAM的做大容量為64KB,地址為0000H~FFFFH。

          1)由于51單片機采用不同的控制信號指令,盡管RAM和ROM地址是重疊的,也不會發(fā)送混亂。

          2)51單片機對片內和片外ROM的訪問使用相同的指令,兩者的選擇是由硬件實現(xiàn)的(就是不用咱們關心的,還有他們的存儲也是硬件自動實現(xiàn)的,你只要連接好引線就哦了~~~剩下的就是寫點指令控制控制了)

          3)芯片選擇現(xiàn)在多采用線選法,地址譯碼法用的漸少。ROM和RAM共享數(shù)據(jù)總線和地址總線。

          二、RAM的擴展原理

          外部RAM的擴展是由P2口提供高8位地址,P0口分時地址作為第八位地址線和8位雙向數(shù)據(jù)線

          外部RAM的讀時序為(這個是不用關心的,只要能看懂就哦了~~你只要寫出你想要的語句來,由于單片機P0口有A/D功能,所以只要連接好硬件,還有就是知道我之前在計算機語言欄目里寫過的那篇文章(貌似是~C51的運算量)里面的那些絕對地址的訪問啊~還有存儲器類型~~)



          外部RAM的讀時序為:

          這里稍微說說吧:

          51單片機的CPU在訪問片外RAM的一個機器周期中,信號ALE出現(xiàn)兩次(正脈沖),RAM選通信號也兩次有效,這說明在一個機器周期內,CPU兩次訪問片外RAM,也即在一個機器周期內可以處理兩個字節(jié)的指令代碼,所以在51單片機指令系統(tǒng)中有很多單周期雙字節(jié)指令。


          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();