51單片機當中的存儲器從功能性上來劃分可以分為程序存儲器與數(shù)據(jù)存儲器。一般來說單片機存儲器的存儲空間是能夠進行存儲空間拓展的,但是如何進行拓展則需要根據(jù)不同的存儲器類型進行選擇,本文就將為大家針對這個問題進行講解。
訪問存儲空間時,需要用到兩個指針變量,為dptr和pc。其中pc為程序計數(shù)器,指向下一條需要執(zhí)行的指令的地址,dptr為數(shù)據(jù)指針寄存器,這兩個變量的長度都為16位,這是51單片機內(nèi)部結(jié)構(gòu)決定的,無法改變。所以這兩個指針的尋址能力都為64k。這樣看來,兩類存儲器的擴展能力都為64k。但是,如果實際擴展過存儲器,就可以發(fā)現(xiàn)程序存儲器的擴展能力并沒有64k。
為什麼會這個樣子呢?這得從51單片機的存儲空間的編址說起。這里僅作簡單說明,具體可以看教科書。簡單地說,內(nèi)部程序存儲器和外部程序存儲器是一起編址的,它們分別占用64k地址的一部分,所以外部擴展時要減去內(nèi)部的地址空間,當然要小于64k。而數(shù)據(jù)存儲器是內(nèi)外部分別編址,內(nèi)外部數(shù)據(jù)存儲器用不同的指令進行訪問,所以不用擔心單片機會混淆內(nèi)外部數(shù)據(jù)存儲器,所以外部數(shù)據(jù)存儲器擴展能力有64k。