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