51单片机之存储器
51單片機之存儲器
- 51單片機結構:
- 程序存儲器ROM:
- 片內ROM:
- 片外ROM:
- 片內ROM和片外ROM的區分:
- 程序存儲器ROM中的7個特殊地址:
- 數據存儲器RAM:
- 片內RAM:
- 片外RAM:
51單片機結構:
思維結構很重要:
由上圖可知,51單片機的存儲器分為倆大部分:程序存儲器ROM和數據存儲器RAM,這一點有別與計算機
程序存儲器ROM:
1、 程序存儲器ROM顧名思義,存放程序的地方,程序指令指導單片機完成設定的功能
2、 51單片機專門設置一個16位的PC,用于指示下一時刻CPU將要執行的程序指令在ROM中的位置,由于PC指針長度位16位,所以單片機的程序存儲器ROM空間大小為2^16 = 64Kb,從0000~FFFFH
3、 ROM還可以細分為片內ROM和片外ROM
片內ROM:
8051片內有4KB ROM,地址范圍從0000H~0FFFH
片外ROM:
片外可擴展,一般從1000H~FFFFH ,64KB
PS:那么問題來了,51單片機是如何區分是片內ROM還是片外ROM呢?
片內ROM和片外ROM的區分:
在單片機既有片內ROM又有片外ROM時,會產生一部分重復的地址范圍,
為了解決區分片內和片外ROM的問題,51單片機設置了一根控制線EA(低電平有效),所以
EA = 0 => 有效 => 訪問片內存儲器
EA = 1 => 無效 => 片內存儲器被忽略
本質的原理:
就是當PC的值大于了某個值時將訪問外部存儲器,PC的值小于了某個值時將訪問內部存儲器。這個值由存儲器容量的大小絕定,在8051單片機中,片內ROM = 4KB,所以當PC小于0FFFH時,訪問片內ROM。
具體的執行過程:
當EA = 0,毫不猶豫直接從0000H開始訪問片外ROM
當EA = 1,PC從0000H開始訪問片內ROM,當PC大于0FFFH時,轉向訪問 片外ROM,如圖:
程序存儲器ROM中的7個特殊地址:
即7個外部中斷的入口地址,每個地址相隔8個地址單元,存放終端服務程序顯然不夠,所以一般在這7個特殊地址中存放跳轉指令,跳轉到相應的中斷服務程序。
數據存儲器RAM:
1、 RAM存儲器一般存放單片機運行期間所需要的的數據和臨時生成的數據,需要能夠快速的讀寫。掉電丟失。
2、 同ROM相同,RAM也分為片內RAM和片外RAM
片內RAM:
1、 00H~1FH:工作寄存器區,又稱通用寄存器,32字節,8字節為一組共4組。
在特殊功能寄存器篇說到標志寄存器PSW的RS0、RS1位來選擇工作的4組寄存器中的一組,即選擇的就是這個位置中的某一組
2、 20H~2FH:位尋址區,16字節,128位,這個地址空間中的128位可以按位訪問,每一位都有一個地址,尋址空間為00H ~ 7FH ,如圖:
在20H~2FH空間中,重新為每一位地址分配一個地址00H ~ 7FH,從而實現按位訪問。
3、 一般RAM區:又稱用戶RAM區,80字節,對于52系列,一般從30H~FFH 供用戶使用,對于前倆個區中未使用的地址單元也可以作為用戶單元使用
4、 堆棧區與堆棧指針
一般設置在2FH單元以后,避開工作寄存器區和位尋址區,典型應用就是子函數調用:
片外RAM:
同ROM相似,通過外部總線擴展RAM從而獲得更大的存儲空間,由于外部總線寬度為16位,所以片外擴展最多64KB,地址范圍0000H~FFFFH
總結
- 上一篇: Js 中常用方法
- 下一篇: android — JNI注册方法说明