『壹』 為什麼要對單片機系統進行存儲器擴展
如果單片機系統原有的資源不夠充足、不能滿足應用所需的要求,那麼就需要進行存儲器的擴展。
可能需要擴展片外的程序存儲器,也可能需要擴展片外的數據存儲器,某些情況下還需要結合軟體進行更復雜的存儲器介面擴展(例如大容量的SPI Flash或者走SPI子協議的SD卡等等)。
『貳』 單片機存儲器擴展問題
單片機使用地址鎖存器進行擴展時,需要ALE做為地址鎖存的選通信號,以實現低8位地址的鎖存。
P0口送出低8位有效地址信號是在ALE信號變高的同時出現,並在ALE由高變低時,將出現在P0口的地址信號鎖存到地址鎖存器中,直到下一次ALE信號變高時,地址才會發生變化。
固定脈沖也是有高低電平變化的。
『叄』 在MCS-51單片機存儲器擴展中,區分擴展的是片外程序存儲器還是片外數據存儲器的最可靠的方法是
硬體上,控制信號不一樣:片外程序存儲器工作,要PSEN信號有效;片外數據存儲器工作,要RD或WR信號有效;
軟體上,定址不一樣,片外程序存儲器工作,要用MOVC,
片外數據存儲器工作,要用MOVX;
雖然說他們的地址都是0000H~FFFFH,不會發生沖突的
『肆』 51單片機的外部存儲器擴展
不對啊。外部存儲器可以存放不同的程序。比如在同一個系統中使用不同的程序會完成不同的工作,直接換外部程序存儲器就能很方便的換程序而不用換晶元或再燒寫。
『伍』 51單片機存儲器擴展地址問題
對於一個擴展地址 如 FFE0來說,可能是數據RAM的地址,也可能是程序ROM的地址
由於是採用不同的指令來訪問,所以是不會有沖突的
訪問片外RAM用: MOVX
訪問片外ROM用:MOVC
『陸』 51單片機程序儲存器擴展。
你定義一個xdata類型的變數就可以了。
例
unsigned char xdata *p;//p就是你的RAM地址,
你要取地址為addr的數據,你可以這樣。
p=addr;
temp=*p;
『柒』 單片機程序存儲器擴展的問題
單片機在置位或者重啟時,會根據EA端是否接低電平來選擇片內還是片外,如果片內存儲器已滿,則自動跳轉到片外程序存儲器,此時EA控制信號就不起作用了。
比如說51系列單片機,片內只有4KB的容量,如果EA接的是高電平,則選用內部程序存儲器,當超出4KB,PC計數器自動轉到片外60KB的范圍繼續讀程序(程序計數器PC為16位,可定址空間為64KB),而且片內ROM和ROM地址是不重復的。
這樣說你明白了嗎?
『捌』 如何確定單片機外部存儲器擴展的地址范圍
地址線,地址線的作用就是確定內存空間的
『玖』 單片機存儲器擴展
不應該這樣問。。
首先51肯定是可以接flash存儲器的。
容易最大是不是64K ,,看你問的具體意思
如果說指的是擴展的是程序存儲器或者數據存儲器呢。
那麼確實是64K。
如果你那些所謂存儲器。。想存的不是 代碼而是一下 圖片什麼的資源
那麼擴展到1M那也是可以的。
因為51是16位地址線 。所以程序數據存儲器只能擴展到64K
c8051這種。他做了內部擴展。。屬於非標準的51了
如果是單單是存儲器。那些指用來存資源用的。。像電腦的硬碟一樣。
什麼時候用什麼時候去讀取的這種。
那麼你擴個1M的 flash也沒人說你。。只要你能買到1m的串口flash就可以了。
呵呵 o(∩_∩)o...哈哈
如果是程序存儲器。。要1M 那麼你也是n人了。
1024*1024/2 = 大約500,000行代碼。。