新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機訪問大容量存儲器的實現(xiàn)

51單片機訪問大容量存儲器的實現(xiàn)

作者: 時間:2012-10-12 來源:網(wǎng)絡(luò) 收藏

1 引言
  MCS-51系列單片機有著優(yōu)越的性價比,因此應(yīng)用面寬,使用量也非常大;然而它只有16位地址線,最大能訪問的存儲空間為64K,且擴展接口與存儲器,擴展接口會占用大量的地址空間,致使該系列單片機在數(shù)據(jù)量大的數(shù)據(jù)采集系統(tǒng)中,存儲空間明顯不足。
  筆者最近在開發(fā)一數(shù)據(jù)采集系統(tǒng)時,經(jīng)分析、探索,找到了解決的辦法。
2 使用的原理
2.1 使擴展接口不占用單片機的存儲地址空間
  由于MCS-的擴展接口與存儲器,采用常規(guī)的方法擴展接口時會占用大量的地址空間,而多數(shù)應(yīng)用系統(tǒng)均會要求擴展接口(本例有七段LED的段輸出口、位輸出口、鍵盤口各一個),為此,使擴展接口不占用單片機的存儲地址空間對于要求大容量數(shù)據(jù)存儲器的系統(tǒng)是必要的。
  如圖1,用P1口的一位,只要確保寫數(shù)據(jù)到顯示的段口時,使用一空余(或?qū)iT預(yù)留)的地址(如0000H),即可使擴展接口不占用單片機的存儲地址空間且不會相互干擾、發(fā)生沖突,同時還可保證有足夠的響應(yīng)速度。

51單片機訪問大容量存儲器的實現(xiàn)
51單片機訪問大容量存儲器的實現(xiàn)

2.2 外部數(shù)據(jù)存儲采用大容量存貯芯片,分段使用

如圖示,MCS-51的16位地址線作為存儲芯片的低位地址,可訪問64K的存儲空間(作為一段);再用P1口的D1、D0位作為存儲芯片的高位地址(段地址),則可把存儲器分為4段,最大訪問能力可達256K(見下表),若使用更多的位,則訪問能力可更大。編程時只要確保高位地址(A16~A19)在訪問存儲芯片的指令執(zhí)行前確定,即可實現(xiàn)存儲芯片全部空間的訪問。

51單片機訪問大容量存儲器的實現(xiàn)
51單片機訪問大容量存儲器的實現(xiàn)

3 編程實現(xiàn)
3.1 訪問擴展接口   
...
CLR P1.7
MOV DPTR,#0000H ?。粚iT預(yù)留的一個地址MOV A,?。ATA1
MOVX  ?。繢PTR,A  ;數(shù)據(jù)輸出到顯示的段口SETB   P1.7
MOV A,#DATA2MOVX@DPTR,A ??;數(shù)據(jù)輸出到顯示的位口  
...

SETB P1.7
MOV DPTR,#0000H ??;專門預(yù)留的一個單  元地址
MOVX A,@DPTR   ?。蛔x鍵盤口數(shù)據(jù)到ACC  
...

3.2 訪問存儲器
程序中要訪問存儲器時,只需按如下順序編寫程序即可:設(shè)定片選(CLR P1.7);設(shè)定存儲器的段位置;用MOVX讀寫存儲器

例:  
...
CLR  P3.0 ?。皇勾鎯π酒钠x有效CLR P1.0
CLR P1.1 ??;選取0FFFFH~00000H存儲區(qū)間MO DPTR,#ADDR1
MOV  A,#DATA1 ??;數(shù)據(jù)寫到ADDR1單元MOVX@DPTR,AMOV DPTR,#ADDR2
 MOVX A,@DPTR  ;讀ADDR2單元的數(shù)據(jù)到A
4 結(jié)束語
  使用本方法可輕易地為MCS-擴展大容量的數(shù)據(jù)存儲器,這對于數(shù)據(jù)量大的數(shù)據(jù)采集系統(tǒng)有著非常大的意義。




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉