51單片機訪(fǎng)問(wèn)大容量存儲器的實(shí)現
1 引言
MCS-51系列單片機有著(zhù)優(yōu)越的性?xún)r(jià)比,因此應用面寬,使用量也非常大;然而它只有16位地址線(xiàn),最大能訪(fǎng)問(wèn)的存儲空間為64K,且擴展接口與存儲器統一編址,擴展接口會(huì )占用大量的地址空間,致使該系列單片機在數據量大的數據采集系統中,存儲空間明顯不足。
筆者最近在開(kāi)發(fā)一數據采集系統時(shí),經(jīng)分析、探索,找到了解決的辦法。
2 使用大容量存儲器的原理
2.1 使擴展接口不占用單片機的存儲地址空間
由于MCS-51單片機的擴展接口與存儲器統一編址,采用常規的方法擴展接口時(shí)會(huì )占用大量的地址空間,而多數應用系統均會(huì )要求擴展接口(本例有七段LED的段輸出口、位輸出口、鍵盤(pán)口各一個(gè)),為此,使擴展接口不占用單片機的存儲地址空間對于要求大容量數據存儲器的系統是必要的。
如圖1,用P1口的一位,只要確保寫(xiě)數據到顯示的段口時(shí),使用一空余(或專(zhuān)門(mén)預留)的地址(如0000H),即可使擴展接口不占用單片機的存儲地址空間且不會(huì )相互干擾、發(fā)生沖突,同時(shí)還可保證有足夠的響應速度。
2.2 外部數據存儲采用大容量存貯芯片,分段使用
如圖示,MCS-51的16位地址線(xiàn)作為存儲芯片的低位地址,可訪(fǎng)問(wèn)64K的存儲空間(作為一段);再用P1口的D1、D0位作為存儲芯片的高位地址(段地址),則可把存儲器分為4段,最大訪(fǎng)問(wèn)能力可達256K(見(jiàn)下表),若使用更多的位,則訪(fǎng)問(wèn)能力可更大。編程時(shí)只要確保高位地址(A16~A19)在訪(fǎng)問(wèn)存儲芯片的指令執行前確定,即可實(shí)現存儲芯片全部空間的訪(fǎng)問(wèn)。
3 編程實(shí)現
3.1 訪(fǎng)問(wèn)擴展接口
...
CLR P1.7
MOV DPTR,#0000H ??;專(zhuān)門(mén)預留的一個(gè)地址MOV A,?。ATA1
MOVX ?。繢PTR,A ??;數據輸出到顯示的段口SETB P1.7
MOV A,#DATA2MOVX@DPTR,A ??;數據輸出到顯示的位口
...
SETB P1.7
MOV DPTR,#0000H ??;專(zhuān)門(mén)預留的一個(gè)單 元地址
MOVX A,@DPTR ??;讀鍵盤(pán)口數據到ACC
...
3.2 訪(fǎng)問(wèn)存儲器
程序中要訪(fǎng)問(wèn)存儲器時(shí),只需按如下順序編寫(xiě)程序即可:設定片選(CLR P1.7);設定存儲器的段位置;用MOVX讀寫(xiě)存儲器
例:
...
CLR P3.0 ??;使存儲芯片的片選有效CLR P1.0
CLR P1.1 ??;選取0FFFFH~00000H存儲區間MO DPTR,#ADDR1
MOV A,#DATA1 ??;數據寫(xiě)到ADDR1單元MOVX@DPTR,AMOV DPTR,#ADDR2
MOVX A,@DPTR ??;讀ADDR2單元的數據到A
4 結束語(yǔ)
使用本方法可輕易地為MCS-51單片機擴展大容量的數據存儲器,這對于數據量大的數據采集系統有著(zhù)非常大的意義。
評論