




已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu) 3 1存儲(chǔ)器的分類存儲(chǔ)器的的作用是用來存放程序和數(shù)據(jù) 存儲(chǔ)器可分為磁存儲(chǔ)和半導(dǎo)體存儲(chǔ)器 半導(dǎo)體存儲(chǔ)器按功能又可分為只讀存儲(chǔ)器ROM和隨機(jī)存儲(chǔ)器RAM 如圖3 1所示 單片機(jī)存儲(chǔ)器結(jié)構(gòu)中都采用半導(dǎo)體存儲(chǔ)器 1 只讀存儲(chǔ)器ROM只讀存儲(chǔ)器在正常工作狀態(tài)下只能從中讀出數(shù)據(jù) 用戶不能快速地隨時(shí)修改或者重新寫入數(shù)據(jù) 數(shù)據(jù)可長(zhǎng)時(shí)間的保存 1 可編程ROM 可通過專用設(shè)備 編程器 將數(shù)據(jù)寫入ROM PROM 用戶可一次編程 EPROM 紫外線擦除 電改寫 多次 EEPROM 電擦除 電改寫 多次 FLASHROM 閃存 多次 2 掩膜ROM用戶不能將數(shù)據(jù)寫入 由廠家寫入數(shù)據(jù) 由于上述特點(diǎn) 所以在單片機(jī)中一般做為程序存儲(chǔ)器 2 隨機(jī)存取存儲(chǔ)器RAM在加電期間 可以隨時(shí)向存儲(chǔ)器里寫入數(shù)據(jù)或從中讀出數(shù)據(jù) 但掉電后 數(shù)據(jù)丟失 SRAM 靜態(tài)存儲(chǔ)器 加電期間數(shù)據(jù)可以長(zhǎng)久保存 掉電信息丟失 DRAM 動(dòng)態(tài)存儲(chǔ)器 即使在加電期間數(shù)據(jù)也會(huì)丟失 數(shù)據(jù)要刷新 由于上述特點(diǎn) 所以在單片機(jī)中一般作為數(shù)據(jù)儲(chǔ)存器 3 2計(jì)算機(jī)中儲(chǔ)存器的兩種結(jié)構(gòu)在計(jì)算機(jī)中存儲(chǔ)器的用途是存放程序和數(shù)據(jù) 它有兩種結(jié)構(gòu) 馮 諾伊曼結(jié)構(gòu)和哈佛結(jié)構(gòu) 馮 諾伊曼結(jié)構(gòu) 程序和數(shù)據(jù)共用一個(gè)存儲(chǔ)器邏輯空間 統(tǒng)一編址 哈佛結(jié)構(gòu) 程序與數(shù)據(jù)分為兩個(gè)獨(dú)立存儲(chǔ)器邏輯空間 分開編址 注 個(gè)人電腦 PC機(jī) 采用的是馮 諾伊曼結(jié)構(gòu) 單片機(jī)一般采用哈佛結(jié)構(gòu) 8051 8051 80C51 單片機(jī) 數(shù)據(jù)存儲(chǔ)器用的是SRAM程序存儲(chǔ)器用的是ROM 3 380C51單片機(jī)的儲(chǔ)存器3 3 18051 80C51 系列存儲(chǔ)器結(jié)構(gòu)1 物理空間有四個(gè)部分 1 內(nèi)部數(shù)據(jù)存儲(chǔ)器 128BSRAM 2 外部擴(kuò)展數(shù)據(jù)存儲(chǔ)器 最大64KRAM 3 內(nèi)部程序存儲(chǔ)器 4KFlashROMAT89S51 4 外部擴(kuò)展程序存儲(chǔ)器 最大64KRAM 2 邏輯空間有三個(gè)部分 1 程序存儲(chǔ)器ROM 包括內(nèi)部和外部 共用一個(gè)64K的尋址空間 2 內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM 128B 獨(dú)立的一個(gè)128B的尋址空間 3 外部數(shù)據(jù)存儲(chǔ)器RAM 64K 獨(dú)立的一個(gè)64K的尋址空間 如圖3 2所示 內(nèi)部數(shù)據(jù)存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器相互之間獨(dú)立編址 內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器統(tǒng)一編址 共用一個(gè)64K的尋址空間 3 3 2數(shù)據(jù)儲(chǔ)存器數(shù)據(jù)存儲(chǔ)器是采用了靜態(tài)隨機(jī)存儲(chǔ)器 SRAM 的結(jié)構(gòu) 掉電信息丟失 故用于暫存數(shù)據(jù)及運(yùn)算的中間結(jié)果 1 內(nèi)部數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu)內(nèi)部數(shù)據(jù)儲(chǔ)存器它由工作寄存器區(qū) 位尋址區(qū) 用戶區(qū)三個(gè)部分組成 地址范圍00H 7FH 共128個(gè)單元 用戶對(duì)這些單元的訪問 可以用 直接尋址 的方法 即在指令中用 direct 表示 指的就是00H 7FH這128個(gè)地址單元 指令中直接給出操作數(shù)所在單元地址的這種尋址方式稱之為 直接尋址 何為尋址方式 即尋找操作數(shù)的方法 圖3 3內(nèi)部數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu) 1 工作寄存器區(qū) 00H 1FH 共32個(gè)單元 又分為4組 每組8個(gè)單元 都用R0 R7表示 如圖3 4所示 個(gè)寄存器對(duì)應(yīng)的地址見表3 1所示在內(nèi)部工作寄存器中的地址是唯一 但寄存器名重名 一個(gè)寄存器名對(duì)應(yīng)有4個(gè)單元 為了解決重名問題 單片機(jī)用特殊功能寄存器PSW中的RS1 RS0來選擇 也就是說 單片機(jī)在工作時(shí)不會(huì)同時(shí)使用這4組寄存器 在某一時(shí)刻 只能選擇其中的一組 在指令系統(tǒng)中對(duì)于這些空間的訪問有以下方法 直接使用地址 在指令系統(tǒng)中用 direct 表示 這種方式稱之為直接尋址 如 指令MOVA direct 指令中的 direct 就是指內(nèi)部數(shù)據(jù)存儲(chǔ)器中的地址 00H 7FH 該指令就是把direct這個(gè)單元中的操作數(shù)傳送到A中 操作數(shù)是指指令中參與操作的數(shù)據(jù) 指令系統(tǒng)中出現(xiàn)的 direct 在實(shí)際編程的過程中不能出現(xiàn) 必須寫對(duì)應(yīng)的實(shí)際地址 00H 7FH 這一點(diǎn)非常重要 如 MOVA 30H 就是將30H中的數(shù)送給A 直接使用寄存器名R0 R7 指令系統(tǒng)中用 Rn 表示這8個(gè)寄存器 這種方式的尋址稱之為 寄存器尋址 就是操作數(shù)放在寄存器中 如 指令MOVA Rn 指令中的 Rn 就是指工作寄存器R0 R7 該指令就是把Rn中的操作數(shù)傳送到A中 指令系統(tǒng)中出現(xiàn)的 Rn 在實(shí)際編程的過程中不能出現(xiàn) 必須寫對(duì)應(yīng)的寄存器 R0 R7 如 MOVA R3 就是將工作寄存器R3中的數(shù)傳送到A中 R0和R1這兩個(gè)寄存器還有一種用法 稱之為 寄存器間接尋址 用 Ri 表示 i 0 1 R0和R1存放的是操作數(shù)所在單元的地址 如 MOVA Ri 指令中的 Ri 就是指工作寄存器R0和R1 該指令就是把Ri中的數(shù)取出作為所取數(shù)據(jù)的單元地址 指令系統(tǒng)中出現(xiàn) Ri 在實(shí)際編程的過程中不能出現(xiàn) 必須寫 R0或 R1 如 MOVA R0 就是將R0中的數(shù)取出 作為所取數(shù)據(jù)的地址 將該地址單元的數(shù)取出送到A中 如圖3 5所示 R0所指的操作數(shù)就是10101010B AAH 3 5所示 指令MOVA R0操作示意 可以用 R0 40H AAH表示 注 在寄存器尋址中 Rn 這4組寄存器 由用戶使用中通過PSW中的RS1和RS0的設(shè)定 來確定用戶使用的組 這32個(gè)單元可以使用 直接尋址 方式 也可使用 寄存器尋址 方式來進(jìn)行訪問 4組中的R0和R1除了 直接尋址 和 寄存器尋址 外 還可采用 寄存器間接尋址 方式來訪問 2 位尋址區(qū) 20H 2FH 這16個(gè)RAM單元具有雙重功能 它們既可以像普通RAM單元一樣按字節(jié)存取 即 直接尋址 direct 也可以對(duì)每個(gè)RAM單元中的任何一個(gè)二進(jìn)制位單獨(dú)存取 這就是位尋址 bit 80C51單片機(jī)為這些區(qū)域?qū)iT設(shè)置了位處理器 一個(gè)1位的CPU 用于這些空間的訪問 如圖3 6所示 圖3 6 位地址表 在指令系統(tǒng)中對(duì)于這些空間的訪問有以下方法 可以采用 直接尋址 的方式去訪問這16個(gè)單元 如 MOVA 20H MOVA direct 也可以采用 位尋址 bit 的方式去訪問這128個(gè)二進(jìn)制位 如 MOVC 00H MOVC bit 該指令就是把00H中的一個(gè)二進(jìn)制數(shù)送到C中 指令中 bit 指的就是位地址 00H 7FH 注 字節(jié)地址 20H 2FH 位地址 00H 7FH 為了區(qū)分位地址 00H 7FH 和內(nèi)部數(shù)據(jù)存儲(chǔ)器的地址 00H 7FH 提到位尋址區(qū)中的位地址時(shí) 必須注明位地址 單元地址 稱之為字節(jié)地址 也可簡(jiǎn)稱地址 3 數(shù)據(jù)緩沖區(qū) 用戶區(qū) 30H 7FH 數(shù)據(jù)緩沖區(qū)共有80個(gè)RAM單元 用于存放用戶數(shù)據(jù)或作堆棧區(qū)使用 也稱用戶RAM區(qū) 80C51對(duì)用戶RAM區(qū)中每個(gè)RAM單元只能按字節(jié)存取的 不可位尋址 在指令系統(tǒng)中對(duì)于這些空間的訪問只有一種方法 即直接尋址 direct 如 MOVA 40H MOVA direct 內(nèi)部數(shù)據(jù)存儲(chǔ)器小結(jié) 內(nèi)部數(shù)據(jù)存儲(chǔ)器中所有的單元 128B 都可以用直接尋址的方法來進(jìn)行訪問 direct 工作寄存器區(qū)也可以用寄存器尋址 Rn 的方法來訪問 指令系統(tǒng)中一般都用寄存器尋址 Rn 的方法來訪問該空間 除了寄存器尋址的方式 R0和R1也可采用寄存器間接尋址 Ri的方式 在使用中R0和R1必須先滿足間接尋址方式 有多余的可用于寄存器尋址方式 位尋址區(qū) 對(duì)這16個(gè)單元可以使用直接尋址方式 這16個(gè)單元中的128個(gè)位 都有位地址 還可以用位尋址的方式來訪問 用戶區(qū)只能用直接尋址的方式來訪問 指令系統(tǒng)中所有的數(shù)據(jù)處理 運(yùn)算都是在內(nèi)部數(shù)據(jù)存儲(chǔ)器中完成 所以指令系統(tǒng)也是非常豐富的 大部分指令都是針對(duì)該空間 2 外部數(shù)據(jù)存儲(chǔ)器當(dāng)內(nèi)部數(shù)據(jù)存儲(chǔ)器不夠用時(shí) 在單片機(jī)的外總線上可以最大擴(kuò)展64K的RAM 可獨(dú)立尋址 有專用指令系統(tǒng) MOVX傳送指令 不能用于數(shù)據(jù)的運(yùn)算及處理 所以僅有4條指令 兩條讀 兩條寫 用于一般數(shù)據(jù)的存放 地址為0000H FFFFH 尋址方式采用寄存器間接尋址的方式 如MOVXA DPTR 指令中DPTR 開辟在特殊功能寄存器 SFR 中 是一個(gè)16位的數(shù)據(jù)存儲(chǔ)器 數(shù)據(jù)指針 用于訪問外部數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器 一般用于存放的是外部數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器的地址 外部數(shù)據(jù)存儲(chǔ)器的地址也是16位 存儲(chǔ)器結(jié)構(gòu)見圖3 7所示 圖3 7外部數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu) 3 3 3特殊功能寄存器 SFR 80C51系列單片機(jī)內(nèi)的鎖存器 定時(shí)器 串行口 數(shù)據(jù)緩沖器及各種控制寄存器 狀態(tài)寄存器都以特殊功能寄存器 SFR 的形式出現(xiàn) 它們離散地分布在高128位片內(nèi)RAM80H FFH中 51子系列共有18個(gè)特殊功能寄存器 占用21個(gè)單元 其余107個(gè)單元用戶不好使用 AT89C51 表3 2SFR地址映像表 這18個(gè)特殊功能寄存器 其中有15個(gè)特殊功能寄存器占用1個(gè)單元 另外3個(gè)特殊功能寄存器占用2個(gè)單元 這就是為什么18個(gè)特殊功能寄存器占用21個(gè)單元的原因 這18個(gè)特功能寄存器我們先學(xué)5個(gè) 其余的放在以后學(xué)習(xí) 1 累加器ACC E0H 累加器ACC是80C51型單片機(jī)中最常用的寄存器 許多指令的操作數(shù)取自ACC 許多運(yùn)算的結(jié)果存放在ACC中 乘除法指令必須通過ACC進(jìn)行 累加器ACC的指令助記符為 簡(jiǎn)單的講就是一個(gè)8位的存儲(chǔ)器 使用非常頻繁 很多指令中必須用到ACC 在指令系統(tǒng)中 可直接使用寄存器名ACC A 和字節(jié)地址E0H對(duì)這八個(gè)二進(jìn)制位進(jìn)行操作 前者稱之為寄存器尋址 后者稱之為直接尋址 direct 用戶一般使用寄存器尋址 即寄存器尋址 在特殊條件下才會(huì)使用直接尋址 累加器ACC也是一個(gè)可以對(duì)8個(gè)二進(jìn)制位進(jìn)行位尋址的寄存器 8個(gè)二進(jìn)制位都有唯一的位地址 指令中只能使用位地址 bit 也稱之為位尋址 若使用位編號(hào) 編譯軟件會(huì)將位編號(hào)轉(zhuǎn)換成位地址 再進(jìn)行編譯 最后形成目標(biāo)文件 2 寄存器 F0H 80C51單片機(jī)乘除法指令中要用到寄存器 用于存放操作數(shù)和操作結(jié)果 也可作為通用存儲(chǔ)器器使用 在乘除指令中 直接使用寄存器名B 稱之為寄存器尋址 用作通用存儲(chǔ)器時(shí)只能使用地址F0H稱之為直接尋址 若用寄存器名B 編譯軟件會(huì)將其轉(zhuǎn)換成地址F0H來使用 寄存器B是可以進(jìn)行位尋址的單元 8個(gè)二進(jìn)制位都有唯一的位地址 在對(duì)二進(jìn)制位尋址時(shí) 指令中只能使用位地址 bit 稱之為位尋址 若使用位編號(hào) 編譯軟件會(huì)將位編號(hào)轉(zhuǎn)換成位地址 再進(jìn)行編譯 最后形成目標(biāo)文件 見圖3 9所示 3 程序狀態(tài)字寄存器PSW D0H 程序狀態(tài)字寄存器PSW也稱為標(biāo)志寄存器 存放各有關(guān)標(biāo)志和對(duì)工作寄存器的選擇設(shè)置 其結(jié)構(gòu)和定義如圖3 10所示 在指令系統(tǒng)中該單元只能使用字節(jié)地址D0H來訪問 稱之為直接尋址 direct 若用寄存器名PSW 編譯軟件會(huì)將其轉(zhuǎn)換成地址D0H來使用 程序狀態(tài)字寄存器PSW是可以進(jìn)行位尋址的單元 8個(gè)二進(jìn)制位都有唯一的位地址 在對(duì)二進(jìn)制位尋址時(shí) 指令中只能使用位地址 bit 稱之為位尋址 若使用位定義或位編號(hào) 編譯軟件會(huì)將位定義和位編號(hào)轉(zhuǎn)換成位地址 再進(jìn)行編譯 最后形成目標(biāo)文件 該單元各位的定義如下 CY 進(jìn) 借 位標(biāo)志位 有進(jìn) 借 位 CY 1 否則 CY 0 主要用于加減運(yùn)算中 AC 輔助進(jìn) 借 位標(biāo)志位 低四位向高四位的進(jìn) 借 位 有進(jìn) 借 AC 1 否則 AC 0 主要用于加減運(yùn)算中 RS1 RS0 工作寄存器組的選擇位 見表3 3所示 OV 溢出標(biāo)志位 80C51單片機(jī)CPU的位數(shù)是8位 則表示帶符號(hào)數(shù)的位數(shù)只能是8位 最高位是符號(hào)位 數(shù)據(jù)位只有7位 數(shù)的范圍在 128 127之間 若運(yùn)算的結(jié)果超出這個(gè)范圍 溢出 結(jié)果出錯(cuò) 計(jì)算機(jī)中判斷結(jié)果溢出的算法是公式 OV Cy6 Cy7 式中 Cy6表示D6位向D7位的進(jìn)位或借位 Cy7表示D6位向CY的進(jìn)位或借位 F0 用戶位 用戶可以作為一般的一位二進(jìn)制數(shù)的存儲(chǔ)器使用 P 奇偶標(biāo)志位 累加器A中1的個(gè)數(shù)為奇數(shù)時(shí) P 1 否則 P 0 只要A中的數(shù)值發(fā)生變化 就影響P 實(shí)時(shí)反映累加器A中1的個(gè)數(shù)的奇偶性 注 CY AC OV P這4個(gè)標(biāo)志位由指令運(yùn)行后 對(duì)其產(chǎn)生影響 由硬件產(chǎn)生各標(biāo)志 主要用于算術(shù)運(yùn)算類指令 除了CY一般這3位不會(huì)用于數(shù)據(jù)的存儲(chǔ) CY也是位處理器 1位的CPU 中的累加器 在位操作中使用較為頻繁 P在任何一條指令中 只要有累加器A出現(xiàn)并且A中的值發(fā)生變化 就會(huì)影響P RS1 RS0是工作寄存器組的選擇位 由用戶根據(jù)需要通過指令來設(shè)定 去選擇寄存器組 軟件設(shè)定 例1 X 13 Y 6 求X Y的補(bǔ)碼運(yùn)算 解 X 補(bǔ)碼 F3H Y 補(bǔ)碼 FAH X Y 補(bǔ)碼 則 X 補(bǔ)碼 11110011B Y 補(bǔ)碼 11111010B X 補(bǔ)碼 Y 補(bǔ)碼 111101101B在單片機(jī)中 上述運(yùn)算后 CY 1 AC 0 OV Cy6 Cy7 1 1 0 結(jié)果正確 P 0 4 數(shù)據(jù)指針DPTR 83H 82H 數(shù)據(jù)指針DPTR是一個(gè)16位的特殊功能寄存器 不可位尋址 由兩個(gè) 位寄存器DPH 83H 和DPL 82H 組成 DPH是DPTR的高 位 DPL是DPTR的低 位 DPTR既可合并作為一個(gè)16位寄存器 又可分開按 位寄存器單獨(dú)操作 見圖3 11所示 在指令中一般都是以一個(gè)16位的寄存器DPTR使用 用于存放外部數(shù)據(jù)存儲(chǔ)器的地址和程序程序器的地址 訪問外部數(shù)據(jù)存儲(chǔ)器是用 DPTR 稱之為寄存器間接尋址 訪問程序存儲(chǔ)器是用 A DPTR 稱之為變址尋址 作為兩個(gè)獨(dú)立的8位寄存器 DPH DPL 使用時(shí) 只能使用其地址 在指令系統(tǒng)中會(huì)詳解 5 堆棧指針SP 81H 堆棧是CPU用于暫時(shí)存放部分?jǐn)?shù)據(jù)的 倉庫 它的作用是用來保護(hù)現(xiàn)場(chǎng)和保護(hù)斷點(diǎn) 在80C51中 由內(nèi)部數(shù)據(jù)存儲(chǔ)器中若干存儲(chǔ)單元組成 可由用戶自定義單元地址 一般開辟在內(nèi)部數(shù)據(jù)存儲(chǔ)器30H 7FH這個(gè)空間 存儲(chǔ)單元的個(gè)數(shù)稱為堆棧的深度 可理解為倉庫容量 為了實(shí)現(xiàn)上述數(shù)據(jù)保護(hù)的需要 數(shù)據(jù)的存取 要遵循先進(jìn)后出 后進(jìn)先出的原則 80C51單片機(jī)中用堆棧指針SP 81H 來實(shí)現(xiàn)數(shù)據(jù)的先進(jìn)后出 后進(jìn)先出 即不可位尋址 它開辟在特殊功能寄存器81H中 沒有位地址 即不可位尋址 如圖3 12所示 堆棧指針SP是用來存放堆棧數(shù)據(jù)區(qū)的地址 如圖3 13所示 一般為了書寫方便 堆棧的示意圖 如圖3 14所示 堆棧數(shù)據(jù)的存取又稱之為進(jìn)棧和出棧 進(jìn)棧時(shí) 首先堆棧指針加1 即 SP SP 1 然后數(shù)據(jù)進(jìn)棧 出棧時(shí) 先取堆棧的數(shù)據(jù) 然后堆棧指針減1 即 SP SP 1 數(shù)據(jù)的進(jìn)棧和出棧 又有兩種操作形式 一是硬件操作 計(jì)算機(jī)執(zhí)行某個(gè)操作時(shí) 硬件自動(dòng)進(jìn)棧 中斷 調(diào)用 和出棧 返回指令 用于保護(hù)斷點(diǎn) 二是軟件操作 由指令PUSHdirect 進(jìn)棧 和指令POPdirect 出棧 來實(shí)現(xiàn) 不管是硬件操作還是軟件操作 進(jìn)棧時(shí) 首先堆棧指針加1 然后數(shù)據(jù)進(jìn)棧 出棧時(shí) 先取堆棧的數(shù)據(jù) 然后堆棧指針減1 下面以軟件操作加以說明 例2 已知 SP 2FH 40H 22H 41H 33H執(zhí)行下列程序 PUSH40HPUSH41HPOP40HPOP41H解 根據(jù)初始條件 得示意圖 存儲(chǔ)器中沒有提到單元的數(shù)據(jù)為任意值 執(zhí)行第一條指令PUSH40H 首先 SP SP 1 2FH 1 30H 然后將40H中的數(shù)據(jù)22H 送入堆棧指針SP指向的單元30H中 如圖3 16 a 所示 第一個(gè)進(jìn)棧的數(shù)據(jù)不是堆棧指針指向的初始單元 在計(jì)算機(jī)中數(shù)據(jù)的傳送 不是完全給予的意思 而是復(fù)制 40H單元數(shù)據(jù)進(jìn)棧后 影響了堆棧指針指向的單元 但不影響40H這個(gè)單元的原始數(shù)據(jù) 所以40H的數(shù)據(jù)仍為22H 執(zhí)行第二條指令PUSH41H 進(jìn)棧過程同第一條指令 進(jìn)棧后 示意圖如圖3 16 b 所示 執(zhí)行第三條指令POP40H 首先是取堆棧指針指向單元的數(shù)據(jù)給40H 則40H的數(shù)據(jù)為33H 然后將 SP SP 1 31H 1 30H 執(zhí)行完后 示意圖如圖3 16 c 所示 執(zhí)行第四條指令POP41H 出棧過程同第四條指令 示意圖如圖3 16 d 所示 當(dāng)數(shù)據(jù)取出后 堆棧指針又回到初始狀態(tài) 如圖3 15所示 但原來進(jìn)棧的數(shù)還存于堆棧中 直到下次進(jìn)棧的數(shù)據(jù)將其覆蓋 該程序 是將40H和41H的數(shù)據(jù)交換 進(jìn)棧兩次 出棧兩次 所以堆棧指針SP的值 仍為初始值2FH 堆棧指針的初始值指向的單元 是不能用于存放堆棧數(shù)據(jù)的 第一個(gè)入棧的數(shù)據(jù) 是該單元的地址加1單元 系統(tǒng)復(fù)位時(shí)堆棧指示器的值為07H 即指向的是工作寄存器區(qū)0組的R7單元 如圖3 17所示 第一個(gè)入棧的數(shù)放于08H單元 但堆棧一般開辟在用戶區(qū) 30H 7FH 中 堆棧的深度是由數(shù)據(jù)連續(xù)進(jìn)棧的次數(shù)來決定的 若根據(jù)某個(gè)程序設(shè)計(jì)的需要 需要16個(gè)單元堆棧來存儲(chǔ)數(shù)據(jù) 堆棧開辟在40H到4FH單元 則堆棧指示器SP的初始值應(yīng)付3FH 第一個(gè)入棧的數(shù)放入40H中 在程序的設(shè)計(jì)中 40H 41H中不能用于其它的數(shù)據(jù)的存放 否則數(shù)據(jù)被覆蓋 若實(shí)際進(jìn)棧的數(shù)據(jù)超出了16個(gè)單元 則堆棧溢出 溢出的單元在50H以上 這些單元沒有數(shù)據(jù) 則沒有影響 否則影響原有數(shù)據(jù) 堆棧指針始終指向的是堆棧的棧頂位置 注 51子系列中 共有18個(gè)SFR 特殊功能寄存器 占用21個(gè)單元 我們先學(xué)5個(gè)SFR 共6個(gè)單元 其余SFR在后面的學(xué)習(xí)中 會(huì)逐步的給大家介紹 這18個(gè)SFR 21個(gè)單元中 字節(jié)地址能被8整除的單元是可以進(jìn)行位尋址的 也就是說字節(jié)地址的后面一位是0或者8 都是可以進(jìn)行位尋址的 bit 可位尋址的單元 可以用位地址 位編號(hào)或位定義 在尋址中都稱之為位尋址 bit 系統(tǒng)復(fù)位后 各寄存器的值如表3 4所示 3 3 4程序存儲(chǔ)器程序存儲(chǔ)器的作用是用來存放程序和數(shù)表 固定不變的常數(shù) AT89S51單片機(jī)內(nèi)部有4K的程序存儲(chǔ)器FlashROM 外部最多可擴(kuò)展64K的程序存儲(chǔ)器 內(nèi)外程序存儲(chǔ)器采用統(tǒng)一編址的方法 即共用64K的地址 地址范圍0000H FFFFH 不管是內(nèi)部還是外部都是用指令MOVC來訪問 如圖3 18所示 1 程序存儲(chǔ)器的結(jié)構(gòu) 8051 80C51 系列有64KROM的尋址區(qū) 地址范圍0000H FFFFH 用于存放程序 其中低4K 0000H 0FFFH 的地址區(qū)可以為片內(nèi)ROM和片外ROM共用 但不能同時(shí)使用 由外引腳決定 高60K 1000H FFFFH 的地址區(qū)為片外ROM所專用 注 低4K共用地址 這樣出現(xiàn)一個(gè)地址兩個(gè)單元 地址不能唯一 這在計(jì)算機(jī)中是不允許的 解決方法 通過單片機(jī)的外引腳來實(shí)現(xiàn) a 當(dāng) 0時(shí) CPU直接訪問外ROM 0000H FFFFH 內(nèi)部不用 b 當(dāng) 1時(shí) CPU先訪問內(nèi)部ROM 0000H 0FFFH 結(jié)束后 再去訪問外部ROM 1000H FFFFH 外部低4K不用 也就是說外部低4K無需擴(kuò)展 這種情況下 外部最多可擴(kuò)展6
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年考試心理輔導(dǎo)師資格考試試卷及答案
- 2025年環(huán)境科學(xué)實(shí)驗(yàn)技能測(cè)評(píng)卷及答案
- 2025年公共衛(wèi)生人群健康考試試題及答案
- 2025年公共交通管理考試試題及答案的技巧
- 分?jǐn)?shù)的運(yùn)算性質(zhì)及應(yīng)用題解析:小學(xué)數(shù)學(xué)教案
- 音樂理論作曲與創(chuàng)作技巧測(cè)試卷
- 完形填空練習(xí)題與答案解析
- 自然的力量環(huán)保話題作文(15篇)
- 餐飲服務(wù)員考試卷
- 公交之星活動(dòng)方案
- 頸椎病課件完整版
- 專題四第1課二、《智能家居系統(tǒng)》說課稿 2023-2024學(xué)年青島版(2018)初中信息技術(shù)八年級(jí)上冊(cè)
- 精神科日常護(hù)理記錄模板
- 2024年江蘇蘇州高新現(xiàn)代服務(wù)業(yè)招商中心有限公司招聘筆試真題
- 2025屆江蘇省徐州市區(qū)部分重點(diǎn)中學(xué)中考生物押題卷含解析
- 2025海南省交通投資控股限公司招聘30人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《中國(guó)文化導(dǎo)論》課程考試復(fù)習(xí)題庫及答案
- 《江蘇省民用建筑工程消防驗(yàn)收常見問題解析及防治指南》2023版
- 咖啡廳食品安全與衛(wèi)生管理
- DB3701T 29-2022 智慧中藥房建設(shè)與運(yùn)行規(guī)范
- 2024-2025學(xué)年上學(xué)期廣州六年級(jí)英語期末模擬卷1
評(píng)論
0/150
提交評(píng)論