7A文單片機(jī)程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間詳解_第1頁
7A文單片機(jī)程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間詳解_第2頁
7A文單片機(jī)程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間詳解_第3頁
7A文單片機(jī)程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間詳解_第4頁
7A文單片機(jī)程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間詳解_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 單片機(jī)程序程序存儲(chǔ)空間( ROM )和數(shù)據(jù) 存儲(chǔ)空間 (RAM) 詳解 問題 : STC89C52RC 單片機(jī) :8K 字節(jié)程序存儲(chǔ)空間 ,512 字節(jié)數(shù)據(jù)存儲(chǔ)空間 ,內(nèi)帶 2K 字節(jié) EEPROM 存儲(chǔ)空間 ;它們分別存的是什么? 8K 的程序存儲(chǔ)空間是存儲(chǔ)代碼,也就是你寫的程序生成的 HEG 文件的,相當(dāng)于電腦系統(tǒng) 的 C 盤。 512 字節(jié)相當(dāng)于內(nèi)存, 存儲(chǔ)空間存儲(chǔ)變量, 像 u8G,y,z,u32a 之類的臨時(shí)變量掉電后數(shù)據(jù)丟失。 2Keeprom 相當(dāng)于電腦系統(tǒng)的硬盤, 數(shù)據(jù)寫入后掉電不丟失。 主要是單片機(jī)在運(yùn)行的過程中 寫入數(shù)據(jù)或者讀取數(shù)據(jù)。

2、像設(shè)置的鬧鈴值, 設(shè)置好了就不用每次都去設(shè)置了, 保存在單片機(jī) 里面,即使掉電了,設(shè)置的數(shù)據(jù)也不會(huì)丟失,只需單片機(jī)上電再讀取就好了。 單片機(jī)原理及系統(tǒng)結(jié)構(gòu) 在此先詳細(xì)分析 51 單片的存儲(chǔ)器結(jié)構(gòu)和尋址方法,再分析片外存儲(chǔ)器的擴(kuò)展,最后給出設(shè) 計(jì)原理并分析系統(tǒng)結(jié)構(gòu)。 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 【MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 圖一:存儲(chǔ)空間分布 51 單片機(jī)存儲(chǔ)器結(jié)構(gòu)分析 8051 單片機(jī)的存儲(chǔ)器在物理結(jié)構(gòu)上分為程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間,共有 4 個(gè)存儲(chǔ) 空間:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器以及片內(nèi)數(shù)據(jù)存儲(chǔ)器、片外數(shù)據(jù)存儲(chǔ)器空間。 這種程序存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開的結(jié)構(gòu)形式被稱

3、為哈佛結(jié)構(gòu)。MCS-51 使用哈弗結(jié)構(gòu),它的程 序空間和數(shù)據(jù)空間是分開編址的, 即各自有各自的地址空間, 互不重疊。 所以即使地址一樣, 但因?yàn)榉珠_編址,所以依然要說哪一個(gè)空間內(nèi)的某地址。而ARM (甚至是 G86)這種馮諾 依曼結(jié)構(gòu)的 MCU/CPU ,它的地址空間是統(tǒng)一并且連續(xù)的,代碼存儲(chǔ)器 /RAM/CPU 寄存器, 甚至 PC機(jī)的顯存, 都是統(tǒng)一編址的, 只是不同功能的存儲(chǔ)器占據(jù)不同的地址塊, 各自為政。 MCS-51單片機(jī)存儲(chǔ)器的配置特點(diǎn) 內(nèi)部集成了 4K 的程序存儲(chǔ)器 ROM; 內(nèi)部具有 256B 的數(shù)據(jù)存儲(chǔ)器 RAM(用戶空間 +SFR 空間); 可以外接 64K 的程序存儲(chǔ)器

4、ROM 和數(shù)據(jù)存儲(chǔ)器 RAM。 從物理結(jié)構(gòu)的角度講, 51單片機(jī)的存儲(chǔ)系統(tǒng)可以分為四個(gè)存儲(chǔ)空間: 既片內(nèi) ROM,RAM 和片外 ROM、 RAM。 從邏輯結(jié)構(gòu)上看(既編程的角度) ,可以分為三個(gè)不同的空間: (1)片內(nèi)、片外統(tǒng)一編址的 64KB 的程序存儲(chǔ)器地址空間: 0000HFFFFH( 用16位地址 );, 其中 0000H0FFFH 為片內(nèi) 4KB 的 ROM 地址空間,1000HFFFFH 為外部 ROM 地址空間; (2)256B 的內(nèi)部數(shù)據(jù)存儲(chǔ)器地址空間( 用 8位地址 ),00HFFH ,分為兩大部分,其中 00H7FH (共 128B 單元)為內(nèi)部靜態(tài) RAM 的地址空間,

5、 80HFFH 為特殊功能寄存器的 地址空間, 21 個(gè)特殊功能寄存器離散地分布在這個(gè)區(qū)域; (3)64KB 的外部數(shù)據(jù)存儲(chǔ)器地址空間 (用16 位地址 ): 0000HFFFFH ,包括擴(kuò)展 I/O 地址 空間。 上述 4 個(gè)存儲(chǔ)空間地址是重疊的,如圖 1 所示。 8051 的指令系統(tǒng)設(shè)計(jì)了不同的數(shù)據(jù)傳送指 令以區(qū)別這 4個(gè)不同的邏輯空間: CPU 訪問片內(nèi)、片外 ROM 指令用 MOVC ,訪問片外 RAM 指令用 MOVG ,訪問片內(nèi) RAM 指令用 MOV 。 程序存儲(chǔ)器用于存放編好的程序和表格常數(shù)。程序通過 16 位程序計(jì)數(shù)器尋址,尋址能 力為 64KB 。這使得指令能在 64KB

6、的地址空間內(nèi)任意跳轉(zhuǎn),但不能使程序從程序存儲(chǔ)器空 間轉(zhuǎn)移到數(shù)據(jù)存儲(chǔ)器空間。 程序存儲(chǔ)器 ROM 的片內(nèi)和片外尋址 1. 程序存儲(chǔ)器 ROM 用于存放程序、常數(shù)或表格。 2. 在51單片機(jī)中,由引腳 /EA 上的電平選擇內(nèi)、外 ROM:EA=1 時(shí),CPU 執(zhí)行片內(nèi)的 4KROM 中的程 序;EA=0 時(shí), CPU選擇片外 ROM中的程序。 3. 無論是使用片內(nèi)還是使用片外 ROM,程序的起始地址都是從 ROM 的0000H 單元開始。 4. 盡管系統(tǒng)可以同時(shí)具備片內(nèi) ROM和外部 ROM,但是在一般正常使用情況下,通過 /EA 的設(shè)定來選 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 MeiWei81

7、- 優(yōu)質(zhì)實(shí)用版文檔】 擇其一(或者使用內(nèi)部 ROM,或者使用外部 ROM) 5. 如果 EA=1(執(zhí)行片內(nèi)程序存儲(chǔ)器中程序時(shí) ):如果程序計(jì)數(shù)器的指針 PC值超過 0FFFH(4K)時(shí),單 片機(jī)就要自動(dòng)的轉(zhuǎn)向片外的 ROM 存儲(chǔ)器且從 1000H 單元開始執(zhí)行程序(無法使用片外 ROM 的低4K 空間)。 6. 當(dāng)程序超過 4K 時(shí),有兩種使用程序存儲(chǔ)器 ROM 的方法: 設(shè)置 EA=0 ,使用外部 ROM。從地址 =0000H 開始; 設(shè)置 EA=1 ,使用內(nèi)部的 4KROM 和外部 ROM(地址從 1000H 開始的單元) 8051 從片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器取指時(shí)的執(zhí)行速度相同。

8、程序存儲(chǔ)器六個(gè)特殊的單元 : 在 ROM 中有六個(gè)單元具有特定功能。 0000H 單元:復(fù)位時(shí)程序計(jì)數(shù)器 PC 所指向的單元,因此用來存放程序中的第一條指令; 0003H 單元:外部中斷 /INT0 的矢量入口地址; 000BH 單元:定時(shí)器 T0 溢出中斷的矢量入口地址; 0013H 單元:外部中斷 /INT1 的矢量入口地址; 001BH 單元:定時(shí)器 T1 的溢出中斷矢量入口地址; 0023H 單元:串行口接收、傳送的中斷矢量入口地址。 矢量入口單元:在編寫中斷程序時(shí),寫入對(duì)應(yīng)的“跳板指令” MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 單片機(jī)第一條指令的兩

9、個(gè)特征: 0100H 單元。 存放在 ROM 的0000H 單元; 必須是“跳轉(zhuǎn)指令”以跳過下面的 5個(gè)中斷矢量,轉(zhuǎn)到后面的真正的主程序入口 ORG0000HLJMP0100H ORG0100H START:MOVA,#00H END 外部程序存儲(chǔ)器: 當(dāng)單片機(jī)使用外 ROM存儲(chǔ)器時(shí)(擴(kuò)展系統(tǒng)) ,必須設(shè)定 /EA=0 ,此時(shí)單片機(jī)的端口功能就要發(fā)生相應(yīng) 的改變: MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 P0、 P2作為外部 ROM的地址和數(shù)據(jù)總線; 使用引腳 /psen 信號(hào)來選通外部 ROM 的數(shù)據(jù)三態(tài)輸出 程序存儲(chǔ)器 RAM 的片內(nèi)和片外尋址 無論在物

10、理上還是邏輯上,系統(tǒng)中 RAM 都可分為兩個(gè)獨(dú)立空間:內(nèi)部和外部 RAM。由不同的指令來 訪問。 1. 訪問內(nèi)部數(shù)據(jù)存儲(chǔ)單元時(shí),使用 MOV 指令; 2. 訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),使用 MOVG指令。內(nèi)部 RAM從功能上將 256B空間分為二個(gè)不同的塊: 1.低128B 的 RAM 塊; 2. 高128B 的 SFR(SpecialFunctionRegister )塊。 在低128B 的 RAM 存儲(chǔ)單元中又可劃分為: 1.工作寄存器區(qū); 2.位尋址區(qū); 3. 通用存儲(chǔ)數(shù)據(jù)的“便簽區(qū)”。 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 高 128B 的專用寄存器區(qū) MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】

11、SFR中僅僅使用了 21寄存器( 51系列),其它 107個(gè)單元不能使用 一般的教科書里 RAM 大小是指默認(rèn)用戶 RAM ,但是很少有特別說明的 C51 :片內(nèi)用戶 RAM 有128字節(jié)(位于片內(nèi)所有 RAM 的低128B,高128B 是 SFR) 訪問 RAM 可以使用直接或者間接尋址方式,地址為 00H-7FH ,在 80H-FFH 的空間分配給 了 SFR ,只能使用直接尋址方式。 C52 :片內(nèi)用戶 RAM 為256字節(jié)(位于片內(nèi)所有 RAM 的低128B,高128B 是SFR 和用戶 RAM ) 低128 字節(jié)( 00H-7FH )的訪問方式為直接和間接尋址方式; 高128 字節(jié)(

12、地址 80H-FFH )只能使用間接尋址方式。 SFR 的地址也為 80H-FFH ,但只能使用直接尋址方式。 也就是說, C52的高128B 是用戶 RAM 和 SFR 統(tǒng)一編制,共享地址,通過指令的尋址方式 不同來進(jìn)行區(qū)分。 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 對(duì)于數(shù)據(jù)存儲(chǔ)器,分為內(nèi)部數(shù)據(jù)存儲(chǔ)器( IDATA/RAM )和外部數(shù)據(jù)存儲(chǔ)器( GDATA )兩個(gè) 部分,但這兩個(gè)存儲(chǔ)器就不像 code 存儲(chǔ)器那樣共享地址空間的了。一般的 8051 芯片,內(nèi) 部 RAM 只有 128B ,從 0G00-0G7F ,而從 0G80-0GFF 則是 SFR (

13、CPU 工作寄存器和各 種外設(shè)寄存器都在此)的區(qū)域。對(duì)于 8052 來說,內(nèi)部 RAM 有 256B ,所以 0G80-0GFF 是 高 128B 的 RAM 在使用??蛇@部分不是 SFR 專用的嗎?是 SFR 專用,但注意, SFR 的訪 問只能使用“直接尋址方式”(使用特定的匯編指令來實(shí)現(xiàn)) ,區(qū)別就在這里。只有通過直 接尋址訪問的地址才是 SFR ,否則就是普通的 RAM 。 至于外擴(kuò)的 RAM ( GDATA ),地址也是從 0G0000-0GFFFF 的,而且這里的 0G0000 和內(nèi) 部 RAM 的 0G00 是不同的, 是完全獨(dú)立的兩個(gè)空間。 他們的訪問方法也是不同的。 MCS-

14、51 使用 MOVG 指令,來讀寫 GDATA 區(qū)。而且,訪問 GDATA 區(qū),是需要 DPTR 寄存器來輔 助的。因?yàn)橹挥?DPTR 才能裝得下十六位的 GDATA 地址。 所以說, MCS-51 讀寫 IDATA 區(qū)的速度是最快的,而且訪問方法也是最多的。訪問 GDATA 區(qū)的速度相對(duì)就要慢很多。 用 P0 口作地址 / 數(shù)據(jù)復(fù)用總線,用 P2 口的口線作高位地址線,最多可以擴(kuò)展開關(guān)電源 模塊 64KB 的存儲(chǔ)器??刂菩盘?hào)線包括:使用 ALE 作為地址鎖存的選通信號(hào),以實(shí)現(xiàn)低 8 位地址的鎖存 ;以PSEN 信號(hào)作為擴(kuò)展程序存儲(chǔ)器的讀選通信號(hào) ;以 EA信號(hào)作為內(nèi)、外程序 MeiWei81

15、- 優(yōu)質(zhì)實(shí)用版文檔】 MeiWei81- 優(yōu)質(zhì)實(shí)用版文檔】 存儲(chǔ)器的選擇信號(hào) ;以 EA 和作為擴(kuò)展數(shù)據(jù)存儲(chǔ)器和 I/O 端口的讀、 寫選通信號(hào)。 執(zhí)行 MOVG 指令時(shí),RD 和 WR 信號(hào)分別自動(dòng)有效。 片外數(shù)據(jù)存儲(chǔ)器 RAM 的讀和寫由 8051 的 RD(P3.7) 和 WR(P3.6) 信號(hào)控制,而片外程序存儲(chǔ)器的輸出允許 (OE) 由讀選通 PSEN 信號(hào)控制。 盡管片外數(shù)據(jù)存儲(chǔ)器和片外程序存儲(chǔ)器共處同一地址空間, 但由于控制信號(hào)及使用的數(shù) 據(jù)傳送指令不同,故不會(huì)發(fā)生總線沖突。 圖 2 數(shù)據(jù)擴(kuò)展圖 由于現(xiàn)在以 8051 為內(nèi)核的單片機(jī)幾乎都帶有內(nèi)部的 FLASH 程序存儲(chǔ)器。如本設(shè)計(jì)中 要用到的開關(guān)電源模塊 AT89C51 或 AT89S51 均自帶 4KB 的 FLASH 程序存儲(chǔ)器, 有的單片 機(jī)帶有 20KB 甚至更大容量的程序存儲(chǔ)器。 因此在單片機(jī)開發(fā)中, 很少用專門的程序存儲(chǔ)器 芯片來擴(kuò)展外部程序存儲(chǔ)器,通常也沒有必要。 尋址空間為什么會(huì)最大 64KB 程序存儲(chǔ)? 單片機(jī)的 P0.0 做為 低位地址線,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論