- 單片機C語言程序設計實訓100例:基于STC8051+Proteus仿真與實戰
- 彭偉
- 889字
- 2022-05-05 20:18:19
1.3 數據與程序內存
8051單片機存儲器結構如圖1-10所示。存儲器分為4KB片內程序存儲器(片內ROM)、64KB片外程序存儲器(片外ROM)、256B片內數據存儲器(片內RAM)、64KB片外數據存儲器(片外RAM)4部分。

圖1-10 8051單片機存儲器的結構
在8051單片機存儲器中,片內ROM用于存放8051單片機控制程序,并可擴展至64KB,地址范圍為0000H~0FFFH,與4KB片內ROM地址重疊,使用過程中要用對其進行區分。對于帶片內ROM的8051單片機,當
引腳為高電平時,程序運行時將從片內ROM的0000H地址開始執行,當程序計數器(PC)的值超過0FFFH時,自動轉換到片外ROM的1000H~FFFFH地址空間執行。
8051單片機片內RAM空間中,00H~7FH的128B空間是真正的RAM區,可讀/寫各種數據;片內RAM 80H~FFH的128B空間大部分被專門用于特殊功能寄存器(Special Function Register,SFR),8051單片機在這個空間安排了21個特殊功能寄存器(SFR)。無論是用匯編語言還是用C語言編寫單片機程序,都要熟練掌握這些特殊功能寄存器。
STC15系列單片機片內數據存儲器(SRAM)及其擴展空間如表1-2所示。
表1-2 STC15系列單片機片內數據存儲器(SRAM)及其擴展空間

片內RAM共256B,可分為3個部分:低128B RAM(與8051單片機兼容)、高128B RAM及特殊功能寄存器區(SFR)。其中,低128B數據存儲器可直接或間接尋址;高128B RAM與特殊功能寄存器區都使用地址80H~FFH,但在物理上二者是獨立的,使用時通過不同的尋址方式加以區分,高128B RAM只能間接尋址,特殊功能寄存器區只可直接尋址。STC15系列單片機存儲器結構如圖1-11所示。

圖1-11 STC15系列單片機存儲器的結構
根據表1-2可知,STC15除了集成256B片內RAM外,還集成了3840B擴展RAM,地址范圍為0000H~0EFFH,訪問擴展片內RAM的方法和8051單片機訪問擴展片外RAM的方法相同,但是不影響P0(數據總線和低8位地址總線)、P2(高8位地址總線)、WR/P4.2、RD/P4.4和ALE/P4.5。
對于擴展的片內RAM,是否允許被訪問受輔助寄存器AUXR(地址為8EH)中的EXTRAM位控制。EXTRAM位默認為0,表示擴展的片內RAM可以被存取。以STC15W4K32S4單片機為例,訪問00H~0EFFH單元(3840B)要使用MOVX @DPTR指令;0F00H及以上單元均指片外RAM,而MOVX @Ri指令只能訪問0F00H~0FFFH單元。將EXTRAM位置1時,禁止訪問擴展的片內RAM,此時MOVX @DPTR/MOVX @Ri指令的使用與普通8052單片機相同,且訪問的均為擴展的片外RAM。STC15W4K32S4單片機擴展片外RAM的應用電路如圖1-12所示。

圖1-12 STC15W4K32S4單片機擴展片外RAM的應用電路
- JavaScript:Functional Programming for JavaScript Developers
- Apache Spark 2.x Machine Learning Cookbook
- Web Application Development with R Using Shiny(Second Edition)
- concrete5 Cookbook
- Learn React with TypeScript 3
- Android底層接口與驅動開發技術詳解
- Python之光:Python編程入門與實戰
- Python程序設計與算法基礎教程(第2版)(微課版)
- 寫給程序員的Python教程
- 區塊鏈國產化實踐指南:基于Fabric 2.0
- 代碼閱讀
- Python商務數據分析(微課版)
- SFML Game Development
- C/C++代碼調試的藝術
- Java Web應用開發