配套課件-單片微型計算機(jī)原理及應(yīng)用(第二版)1_第1頁
配套課件-單片微型計算機(jī)原理及應(yīng)用(第二版)1_第2頁
配套課件-單片微型計算機(jī)原理及應(yīng)用(第二版)1_第3頁
配套課件-單片微型計算機(jī)原理及應(yīng)用(第二版)1_第4頁
配套課件-單片微型計算機(jī)原理及應(yīng)用(第二版)1_第5頁
已閱讀5頁,還剩943頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第1章 單片機(jī)基礎(chǔ)1.1 概述1.2 MCS51系列單片機(jī)基本結(jié)構(gòu)1.3 中央處理器CPU1.4 MCS51單片機(jī)存儲器及存儲空間1.5 并行輸入/輸出接口1.6 CPU時序與復(fù)位 1.1 概述 1.1.1 單片機(jī)的產(chǎn)生與發(fā)展 單片機(jī)出現(xiàn)的歷史并不長, 但發(fā)展十分迅猛。 它的產(chǎn)生與發(fā)展和微處理器的產(chǎn)生與發(fā)展大體同步, 自1971年美國Intel公司首先推出4位微處理器以來, 它的發(fā)展到目前為止大致可分為5個階段: 第1階段(19711976): 單片機(jī)發(fā)展的初級階段。 1971年11月Intel公司首先設(shè)計出集成度為2 000只晶體管/片的4位微處理器Intel 4004, 并配有RAM、 R

2、OM和移位寄存器, 構(gòu)成了第一臺MCS4微處理器, 而后又推出了8位微處理器Intel 8008, 以及其它各公司相繼推出的8位微處理器。 第2階段(19761980): 低性能單片機(jī)階段。 以1976年Intel公司推出的MCS48系列為代表, 采用將8位CPU、 8位并行I/O接口、 8位定時/計數(shù)器、 RAM和ROM等集成于一塊半導(dǎo)體芯片上的單片結(jié)構(gòu), 雖然其尋址范圍有限(不大于4 KB), 也沒有串行I/O, RAM、 ROM容量小, 中斷系統(tǒng)也較簡單, 但功能可滿足一般工業(yè)控制和智能化儀器、 儀表等的需要。 第3階段(19801983): 高性能單片機(jī)階段。 這一階段推出的高性能8位

3、單片機(jī)普遍帶有串行口, 有多級中斷處理系統(tǒng), 多個16位定時器/計數(shù)器。 片內(nèi)RAM、 ROM的容量加大,且尋址范圍可達(dá)64 KB, 個別片內(nèi)還帶有A/D轉(zhuǎn)換接口。 第4階段(198380年代末): 16位單片機(jī)階段。 1983年Intel公司又推出了高性能的16位單片機(jī)MCS96系列, 由于其采用了最新的制造工藝, 使芯片集成度高達(dá)12萬只晶體管/片。 第5階段(90年代): 單片機(jī)在集成度、 功能、 速度、 可靠性、 應(yīng)用領(lǐng)域等全方位向更高水平發(fā)展。 隨著半導(dǎo)體制造工藝的不斷改進(jìn)與發(fā)展,芯片集提高,單片機(jī)系統(tǒng)正在逐步添加更多新的特性。(1)單片機(jī)的CPU核仍以復(fù)雜指令集(CISC)為主,但

4、向精簡指令集(RISC)演化以提升指令執(zhí)行速度,且系統(tǒng)結(jié)構(gòu)也有所改進(jìn)。(2) 低功耗。MCSCD*251系列的8031推出時的功耗達(dá)630 mW,而現(xiàn)在的單片機(jī)功耗普遍都在100 mW左右。隨著對單片機(jī)功耗要求越來越低,各個制造商基本都采用了CMOS(互補金屬氧化物半導(dǎo)體工藝)、HMOS(高密度金屬氧化物半導(dǎo)體工藝)CHMOS(互補高密度金屬氧化物半導(dǎo)體工藝)。CMOS雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而CHMOS則是CMOS和HMOS的結(jié)合,既保持了HMOS高速度和高密度的特點,還具有CMOS的低功耗的特點,即同時具備高速和低功耗的特點。同時,新型單片機(jī)還增加了等待、暫停、

5、休眠、空閑、節(jié)電等工作模式,以降低功耗。 (3) 低噪聲與強抗干擾。為了使產(chǎn)品能適應(yīng)惡劣的工作環(huán)境,滿足電磁兼容性方面更高標(biāo)準(zhǔn)的要求,各單片機(jī)生產(chǎn)廠商在單片機(jī)內(nèi)部電路中分別采用了一些新型的EFT(Electrical Fast Transient)抗干擾技術(shù)、低噪音布線及驅(qū)動方式、低頻時鐘、降噪器件等措施,以提高單片機(jī)的抗電磁干擾能力和可靠性,降低系統(tǒng)噪音。(4) 連接性。目前,有的單片機(jī)內(nèi)部含有控制器區(qū)域網(wǎng)(Controller Area Network,CAN),它是一種可靠、廉價、快速、靈活的串行總線系統(tǒng),用來在高噪聲環(huán)境中進(jìn)行實時數(shù)據(jù)交換工作,以構(gòu)成控制網(wǎng)絡(luò)或形成局部網(wǎng),提高系統(tǒng)與其他

6、系統(tǒng)在本地或遠(yuǎn)程的連接能力。另外,還增加了USB、Bluetooth、Ethernet接口,已解決與PC等環(huán)境的標(biāo)準(zhǔn)連接,允許把較多的外圍器件連接到一個公共界面上。(5) Flash Memory。MCU的Flash版本逐步替代原來的一次性可編程(One Time Programable,OTP)、EPROM、EEPROM等版本,可降低成本,提高編程和生產(chǎn)的靈活性及效率。(6) 顯示器。將使用內(nèi)置的QVGA(Quarter VGA)技術(shù),以提供便于連接到大型顯示器的接口。(7) 用戶接口。用戶操作由旋鈕和按鈕向觸摸感測轉(zhuǎn)變。(8) 支撐系統(tǒng)。為縮短產(chǎn)品的上市時間,單片機(jī)制造商會提供更卓越的開發(fā)

7、工具鏈,包括編譯器、集成開發(fā)環(huán)境(IDE)、調(diào)試器、實時系統(tǒng)內(nèi)核(RTOS)、圖形工具(GUI)、參考設(shè)計以及代碼庫等。1.1.2 單片機(jī)主要生產(chǎn)廠商及系列 1. 歐美地區(qū)(1) Motorola系列 (2) Philips系列 (3) Microchip系列 (4) Scenix系列 (5) Atmel系列 (6) TI(美國德克薩斯儀器儀表)系列、NS(美國國家半導(dǎo)體)系列 2. 亞洲1) 日本(1) TOSHIBA系列 (2) NEC 系列 (3) FUJITSU系列 (4) EPSON(愛普生)系列、HITACHI(日立)系列、OKI(沖電氣工業(yè)株式會社)系列 2) 我國臺灣地區(qū) (1

8、) SUNPLUS系列 (2) EMC系列 (3) HOLTEK系列 (4) Winbond系列 3) 韓國 (1) SAMSUNG系列 (2) HYUNDAI系列 1.1.3 單片機(jī)的應(yīng)用領(lǐng)域與形式 由于單片機(jī)具有體積小、 重量輕、 價格便宜、 功耗低, 控制功能強及運算速度快等特點, 因而在國民經(jīng)濟(jì)建設(shè)、 軍事及家用電器等各個領(lǐng)域均得到了廣泛的應(yīng)用。 按照單片機(jī)的特點, 其應(yīng)用形式可分為單機(jī)應(yīng)用與多機(jī)應(yīng)用。 1. 單機(jī)應(yīng)用 在一個應(yīng)用系統(tǒng)中, 只使用1片單片機(jī)稱為單機(jī)應(yīng)用, 這是目前應(yīng)用最多的一種方式。 單機(jī)應(yīng)用的主要領(lǐng)域有: (1) 測控系統(tǒng)。 用單片機(jī)可以構(gòu)成各種不太復(fù)雜的工業(yè)控制系統(tǒng)

9、、 自適應(yīng)控制系統(tǒng)、 數(shù)據(jù)采集系統(tǒng)等, 達(dá)到測量與控制的目的。 (2) 智能儀表。 用單片機(jī)改造原有的測量、 控制儀表, 促進(jìn)儀表向數(shù)字化、 智能化、 多功能化、 綜合化、 柔性化方向發(fā)展。 (3) 機(jī)電一體化產(chǎn)品。 單片機(jī)與傳統(tǒng)的機(jī)械產(chǎn)品相結(jié)合, 使傳統(tǒng)機(jī)械產(chǎn)品結(jié)構(gòu)簡化, 控制智能化。 (4) 智能接口。 在計算機(jī)控制系統(tǒng), 特別是在較大型的工業(yè)測、 控系統(tǒng)中, 用單片機(jī)進(jìn)行接口的控制與管理, 加之單片機(jī)與主機(jī)的并行工作, 大大提高了系統(tǒng)的運行速度。 (5) 智能民用產(chǎn)品。如在洗衣機(jī)、電冰箱、空調(diào)、微波爐、電視機(jī)、手機(jī)、玩具、 游戲機(jī)、 聲像設(shè)備、 電子秤、 收銀機(jī)、 辦公設(shè)備、 廚房設(shè)備等

10、許多產(chǎn)品中, 單片機(jī)控制器的引入, 不僅使產(chǎn)品的功能大大增強, 性能得到提高, 而且獲得了良好的使用效果。 2. 多機(jī)應(yīng)用 單片機(jī)的多機(jī)應(yīng)用系統(tǒng)可分為功能集散系統(tǒng)、 并行多機(jī)處理及局部網(wǎng)絡(luò)系統(tǒng)。 (1) 功能集散系統(tǒng)。 多功能集散系統(tǒng)是為了滿足工程系統(tǒng)多種外圍功能的要求而設(shè)置的多機(jī)系統(tǒng)。 (2) 并行多機(jī)控制系統(tǒng)。 并行多機(jī)控制系統(tǒng)主要解決工程應(yīng)用系統(tǒng)的快速性問題, 以便構(gòu)成大型實時工程應(yīng)用系統(tǒng)。 (3) 局部網(wǎng)絡(luò)系統(tǒng)。 1.2 MCS51系列單片機(jī)基本結(jié)構(gòu) 1.2.1 MCS51單片機(jī)系列 MCS51系列單片機(jī)雖已有10多種產(chǎn)品, 但可分為兩大系列: MCS51子系列與MCS52子系列。 M

11、CS51子系列中主要有8031、 8051、 8751 三種類型。 而MCS52子系列也有三種類型8032、 8052、 8752。 各子系列配置見表11所示。 表11 MCS51系列單片機(jī)配置一覽表 表11中列出了MCS51系列單片機(jī)的兩個子系列, 在4個性能上略有差異。 由此可見, 在本子系列內(nèi)各類芯片的主要區(qū)別在于片內(nèi)有無ROM或EPROM; MCS51與MCS52子系列間所不同的是片內(nèi)程序存儲器ROM從4 KB增至8 KB; 片內(nèi)數(shù)據(jù)存儲器由128個字節(jié)增至256個字節(jié);定時器/計數(shù)器增加了一個; 中斷源增加了12個。 另外, 對于制造工藝為CHMOS的單片機(jī), 由于采用CMOS技術(shù)制

12、造, 因此具有低功耗的特點, 如8051功耗約為630 mW, 而80C51的功耗只有120 mW。 1.2.2 MCS51系列單片機(jī)內(nèi)部結(jié)構(gòu)及功能部件 MCS51系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖如圖11所示。 分析圖11, 并按其功能部件劃分可以看出, MCS51系列單片機(jī)是由8大部分組成的。圖12為按功能劃分的MCS51系列單片機(jī)內(nèi)部結(jié)構(gòu)簡化框圖。 這8大部分是: (1) 一個8位中央處理機(jī)CPU。 (2) 128個字節(jié)(MCS52子系列為256字節(jié))的片內(nèi)數(shù)據(jù)存儲器RAM。 (3)4 KB(MCS52子系列為8 KB)的片內(nèi)程序只讀存儲器ROM或EPROM(8031和8032無)。 (4)18個

13、(MCS52子系列為21個)特殊功能寄存器SFR。 (5)4個8位并行輸入輸出I/O接口: P0口、 P1口、 P2口、 P3口(共32線), 用于并行輸入或輸出數(shù)據(jù)。 (6)1個串行I/O接口。 (7)2個(MCS52子系列為3個)16位定時器/計數(shù)器。 (8)1個具有5個(MCS52子系列為6個或7個)中斷源, 可編程為2個優(yōu)先級的中斷系統(tǒng)。 它可以接收外部中斷申請, 定時器/計數(shù)器中斷申請和串行口中斷申請。 圖11 MCS51系列單片機(jī)內(nèi)部結(jié)構(gòu)框圖 圖12 MCS51系列單片機(jī)內(nèi)部結(jié)構(gòu)簡化框圖 1.2.3 單片機(jī)外部引腳 MCS51系列單片機(jī)芯片均為40個引腳, HMOS工藝制造的芯片采

14、用雙列直插(DIP)方式封裝, 其引腳示意及功能分類如圖13所示。 CMOS工藝制造的低功耗芯片也有采用方型封裝的, 但為44個引腳, 其中4個引腳是不使用的。 圖13 MCS51系列單片機(jī)引腳及總線結(jié)構(gòu) (a) 管腳圖; (b) 引腳功能分類 1. 主電源引腳Vcc和Vss VCC(40腳): 接+5 V電源正端; VSS(20腳): 接+5 V電源地端。 2. 外接晶體引腳XTAL1和XTAL2 XTAL1(19腳): 接外部石英晶體的一端。 在單片機(jī)內(nèi)部, 它是一個反相放大器的輸入端, 這個放大器構(gòu)成了片內(nèi)振蕩器。 當(dāng)采用外部時鐘時, 對于HMOS單片機(jī), 該引腳接地; 對于CHMOS單

15、片機(jī), 該引腳作為外部振蕩信號的輸入端。 XTAL2(18腳): 接外部晶體的另一端。 在單片機(jī)內(nèi)部, 接至片內(nèi)振蕩器的反相放大器的輸出端。 當(dāng)采用外部時鐘時, 對于HMOS單片機(jī), 該引腳作為外部振蕩信號的輸入端; 對于CHMOS芯片, 該引腳懸空不接。 3. 控制信號或與其它電源復(fù)用引腳 控制信號或與其它電源復(fù)用引腳有RST/VPD、 、 和 等4種形式。 (1) RST/VPD(9腳): RST即為RESET, VPD為備用電源, 所以該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。 (2) (30腳): 當(dāng)訪問外部存儲器時, ALE(允許地址鎖存信號)以每機(jī)器周期兩次的信號輸出, 用于鎖存出現(xiàn)在

16、P0口的低8位地址。 (3) (29腳): 片外程序存儲器讀選通信號輸出端, 低電平有效。 (4) (31腳): 為訪問外部程序存儲器控制信號, 低電平有效。 4. 輸入/輸出(I/O)引腳P0口、 P1口、 P2口及P3口 (1) P0口(39腳32腳): P0.0P0.7統(tǒng)稱為P0口。 (2) P1口(1腳8腳): P1.0P1.7統(tǒng)稱為P1口, 可作為準(zhǔn)雙向I/O接口使用。 (3) P2口(21腳28腳): P2.0P2.7統(tǒng)稱為P2口, 一般可作為準(zhǔn)雙向I/O接口。 (4) P3口(10腳17腳): P3.0P3.7統(tǒng)稱為P3口。 表12 P3口第2功能表 1.3 中央處理器CPU 中

17、央處理器是單片機(jī)內(nèi)部的核心部件, 它決定了單片機(jī)的主要功能特性。 它由運算部件和控制部件兩大部分組成。 1.3.1 運算部件 運算部件是以算術(shù)邏輯單元ALU為核心, 加上累加器A、 寄存器B、 暫存器TMP1和TMP2、 程序狀態(tài)寄存器PSW及專門用于位操作的布爾處理機(jī)組成的(見圖11), 它能實現(xiàn)數(shù)據(jù)的算術(shù)邏輯運算, 位變量處理和數(shù)據(jù)傳送操作。 1. 算術(shù)邏輯單元ALU與累加器ACC、 寄存器B 算術(shù)邏輯單元ALU不僅能完成8位二進(jìn)制數(shù)的加(帶進(jìn)位加)、 減(帶借位減)、 乘、 除、 加1、 減1及BCD加法的十進(jìn)制調(diào)整等算術(shù)運算, 還能對8位變量進(jìn)行邏輯“與”、 “或”、 “異或”、 求補

18、、 清零等邏輯運算, 并具有數(shù)據(jù)傳送, 程序轉(zhuǎn)移等功能。 累加器ACC簡稱累加器A, 為一個8位寄存器, 它是CPU中使用最頻繁的寄存器。 2. 程序狀態(tài)字 程序狀態(tài)字寄存器PSW(8位)是一個標(biāo)志寄存器, 它保存指令執(zhí)行結(jié)果的特征信息, 以供程序查詢和判別。 其程序狀態(tài)字格式及含義如下: CY(PSW.7)進(jìn)位標(biāo)志位。 AC(PSW.6)輔助進(jìn)位(或稱半進(jìn)位)標(biāo)志。 F0(PSW.5)由用戶定義的標(biāo)志位。 RS1(PSW.4)、 RS0(PSW.3)工作寄存器組選擇位。 OV(PSW.2)溢出標(biāo)志位。 由硬件置位或清零。 PSW.1未定義位。 P(PSW.0)奇偶標(biāo)志位。 3. 布爾處理機(jī)

19、布爾處理(即位處理)是MCS51單片機(jī)ALU所具有的一種功能。 單片機(jī)指令系統(tǒng)中的布爾指令集(17條位操作指令), 存儲器中的位地址空間, 以及借用程序狀態(tài)標(biāo)志寄存器PSW中的進(jìn)位標(biāo)志CY作為位操作“累加器”, 構(gòu)成了單片機(jī)內(nèi)的布爾處理機(jī)。 1.3.2 控制部件及振蕩器 控制部件是單片機(jī)的神經(jīng)中樞, 它包括定時和控制電路、 指令寄存器、 譯碼器以及信息傳送控制等部件。 單片機(jī)的定時控制功能是由片內(nèi)的時鐘電路和定時電路來完成的, 而片內(nèi)的時鐘產(chǎn)生有兩種方式: 一種是內(nèi)部時鐘方式; 一種是外部時鐘方式, 如圖14(a)、 (b)所示。 圖14 HMOS型MCS51單片機(jī)時鐘產(chǎn)生方式 (a) 內(nèi)部振

20、蕩器方式; (b) 外部振蕩器方式 采用內(nèi)部時鐘方式時, 如圖14(a)所示。 片內(nèi)的高增益反相放大器通過XTAL1、 XTAL2外接作為反饋元件的片外晶體振蕩器(呈感性)與電容組成的并聯(lián)諧振回路構(gòu)成一個自激振蕩器, 向內(nèi)部時鐘電路提供振蕩時鐘。 振蕩器的頻率主要取決于晶體的振蕩頻率, 一般晶體可在1.212 MHz之間任選, 電容C1、 C2可在530 pF之間選擇, 電容的大小對振蕩頻率有微小的影響, 可起頻率微調(diào)作用。 1.4 MCS51單片機(jī)存儲器及存儲空間 1.4.1 MCS51單片機(jī)存儲器分類及配置 MCS51單片機(jī)存儲器的分類從物理結(jié)構(gòu)上可分為: 片內(nèi)、 片外程序存儲器(8031

21、和8032沒有片內(nèi)程序存儲器)與片內(nèi)、 片外數(shù)據(jù)存儲器4個部分; 從尋址空間分布可分為: 程序存儲器、 內(nèi)部數(shù)據(jù)存儲器和外部數(shù)據(jù)存儲器3大部分; 從功能上可分為: 程序存儲器、 內(nèi)部數(shù)據(jù)存儲器、 特殊功能寄存器、 位地址空間和外部數(shù)據(jù)存儲器5大部分。 MCS51系列單片機(jī)存儲器的配置除表11所示的片內(nèi)ROM(或EPROM)和RAM外, 另外還有128個字節(jié)的RAM區(qū)作為特殊功能寄存器(SFR)區(qū)。 片內(nèi)、 片外程序存儲器和數(shù)據(jù)存儲器各自總?cè)萘繛?4 KB。 MCS51系列單片機(jī)存儲器系統(tǒng)空間結(jié)構(gòu)如圖15所示。 圖15 MCS51單片機(jī)存儲器空間結(jié)構(gòu)圖(a) 程序存儲器; (b) 內(nèi)部數(shù)據(jù)存儲器

22、; (c) 外部數(shù)據(jù)存儲器 1.4.2 程序存儲器 1. 程序存儲器的編址 計算機(jī)的工作是按照事先編制好的程序命令一條條循序執(zhí)行的, 程序存儲器就是用來存放這些已編好的程序和表格常數(shù), 它由只讀存儲器ROM或EPROM組成。 2. 程序運行的入口地址 實際應(yīng)用時, 程序存儲器的容量由用戶根據(jù)需要擴(kuò)展, 而程序地址空間原則上也可由用戶任意安排。 但程序最初運行的入口地址, MCS51單片機(jī)是固定的, 用戶不能更改。 程序存儲器中有復(fù)位和中斷源共7個固定的入口地址,見表14。 表13 MCS51單片機(jī)復(fù)位、 中斷入口地址 單片機(jī)復(fù)位后程序計數(shù)器PC的內(nèi)容為0000H, 故必須從0000H單元開始取

23、指令來執(zhí)行程序。 0000H單元是系統(tǒng)的起始地址, 一般在該單元存放一條無條件轉(zhuǎn)移指令, 用戶設(shè)計的程序是從轉(zhuǎn)移后的地址開始存放執(zhí)行的。 1.4.3 內(nèi)部數(shù)據(jù)存儲器 1. 內(nèi)部數(shù)據(jù)存儲器的編址 MCS51系列單片機(jī)的內(nèi)部數(shù)據(jù)存儲器由讀寫存儲器RAM組成, 用于存儲數(shù)據(jù)。 它由RAM塊和特殊功能寄存器(SFR)塊組成, 其結(jié)構(gòu)如圖15(b)所示。 2. 內(nèi)部數(shù)據(jù)存儲器RAM塊 由圖15(b)可見, 內(nèi)部數(shù)據(jù)存儲器RAM塊共分為工作寄存器區(qū)、 位尋址區(qū)和數(shù)據(jù)緩沖區(qū)3個部分。 1) 工作寄存器區(qū) 內(nèi)部RAM塊的00H1FH區(qū), 共分4個組, 每組有8個工作寄存器R0R7, 共32個內(nèi)部RAM單元。

24、寄存器和RAM地址的對應(yīng)關(guān)系如表14所示。 表14 工作寄存器和RAM地址對照表 工作寄存器共有4組, 但程序每次只用1組, 其它各組不工作。 哪1組寄存器工作由程序狀態(tài)字PSW中的PSW.3(RS0)和PSW.4(RS1)兩位來選擇, 其對應(yīng)關(guān)系如表26所示。 CPU通過軟件修改PSW中RS0和RS1兩位的狀態(tài), 就可任選一個工作寄存器工作, 這個特點使MCS51單片機(jī)具有快速現(xiàn)場保護(hù)功能, 對于提高程序的效率和響應(yīng)中斷的速度是很有利的。 若程序中并不要4個工作寄存器組, 那么剩下的工作寄存器組所對應(yīng)的單元也可以作為一般的數(shù)據(jù)緩沖區(qū)使用。 表15 工作寄存器組的選擇表 2) 位尋址區(qū) 20H

25、2FH單元為位尋址區(qū), 這16個單元(共計128位)的每1位都有一個8位表示的位地址, 位地址范圍為00H7FH, 如表16所示。 位尋址區(qū)的每1位都可當(dāng)作軟件觸發(fā)器, 由程序直接進(jìn)行位處理。 通??梢园迅鞣N程序狀態(tài)標(biāo)志, 位控制變量存于位尋址區(qū)內(nèi)。 同樣, 位尋址的RAM單元也可以按字節(jié)操作作為一般的數(shù)據(jù)緩沖器使用。 表16 內(nèi)部RAM中位地址表 3) 數(shù)據(jù)緩沖區(qū) 30H7FH是數(shù)據(jù)緩沖區(qū), 也即用戶RAM區(qū), 共80個單元。 MCS52子系列片內(nèi)RAM有256個單元, 前兩個的單元數(shù)與地址都和MCS51子系列一致。 用戶RAM區(qū)從30HFFH, 共208個單元。 4)堆棧與堆棧指針 在程序

26、實際運行中, 往往需要一個后進(jìn)先出的RAM區(qū), 在子程序調(diào)用、 中斷服務(wù)處理等場合用以保護(hù)CPU的現(xiàn)場, 這種后進(jìn)先出的緩沖區(qū)稱為堆棧。 MCS51單片機(jī)堆棧區(qū)不是固定的, 原則上可設(shè)在內(nèi)部RAM的任意區(qū)域內(nèi), 但為了避開工作寄存器區(qū)和位尋址區(qū), 一般設(shè)在30H以后的范圍內(nèi), 棧頂?shù)奈恢糜蓪iT設(shè)置的堆棧指針寄存器SP(8位)指出。 MCS51單片機(jī)的堆棧屬向上生長型, 如圖16所示。 圖16 MCS51單片機(jī)堆棧 3. 特殊功能寄存器SFR塊 特殊功能寄存器SFR, 又稱為專用寄存器。 它專用于控制、 管理單片機(jī)內(nèi)算術(shù)邏輯部件、 并行I/O口鎖存器、 串行口數(shù)據(jù)緩沖器、 定時器/計數(shù)器、 中斷

27、系統(tǒng)等功能模塊的工作, SFR的地址空間為80HFFH。按地址排列的各特殊功能寄存器名稱、標(biāo)識符、地址等如表1-7所示。表17 特殊功能寄存器名稱、 標(biāo)識符、 地址一覽表 4. 位尋址空間 在MCS51單片機(jī)的內(nèi)部數(shù)據(jù)寄存器RAM塊和特殊功能寄存器SFR塊中, 有一部分地址空間可以按位尋址, 按位尋址的地址空間又稱之為位尋址空間。 位尋址空間一部分在內(nèi)部RAM的20H2FH的16個字節(jié)內(nèi), 共128位; 另一部分在SFR的80HFFH空間內(nèi), 凡字節(jié)地址能被8整除的專用寄存器都有位地址, 共93位。 因此, MCS51系列單片機(jī)共有221個可尋址位, 其位地址見表16、 表17所示。 1.4.

28、4 外部數(shù)據(jù)存儲器 外部數(shù)據(jù)存儲器一般由靜態(tài)RAM芯片組成。 擴(kuò)展存儲器容量的大小, 由用戶根據(jù)需要而定, 但MCS51單片機(jī)訪問外部數(shù)據(jù)存儲器可用1個特殊功能寄存器數(shù)據(jù)指針寄存器DPTR進(jìn)行尋址。 由于DPTR為16位, 可尋址的范圍可達(dá)64 KB, 所以擴(kuò)展外部數(shù)據(jù)存儲器的最大容量是64 KB。 1.5 并行輸入/輸出接口 1.5.1 P0口 1. P0口結(jié)構(gòu) P0口是一個三態(tài)雙向口, 可作為地址/數(shù)據(jù)分時復(fù)用口, 也可作為通用I/O接口。 其1位的結(jié)構(gòu)原理如圖17所示。 P0口由8個這樣的電路組成: 鎖存器起輸出鎖存作用, 8個鎖存器構(gòu)成了特殊功能寄存器P0; 場效應(yīng)管(FET)V1、

29、V2組成輸出驅(qū)動器, 以增大帶負(fù)載能力; 三態(tài)門1是引腳輸入緩沖器; 三態(tài)門2是用于讀鎖存器端口; 與門3、 倒相器4及模擬轉(zhuǎn)換開關(guān)構(gòu)成輸出控制電路。 圖17 P0口1位結(jié)構(gòu)原理圖 2. 地址/數(shù)據(jù)分時復(fù)用功能 當(dāng)P0口作為地址/數(shù)據(jù)分時復(fù)用總線時, 可分為兩種情況: 一種是從P0口輸出地址或數(shù)據(jù),另一種是從P0口輸入數(shù)據(jù)。 在訪問片外存儲器需從P0輸出地址或數(shù)據(jù)信號時, 控制信號應(yīng)為高電平1, 使轉(zhuǎn)換開關(guān)MUX把反向器4的輸出端與V1接通, 同時把與門3打開。 3. 通用I/O接口功能 當(dāng)P0口作為通用I/O接口使用, 在CPU向端口輸出數(shù)據(jù)時, 對應(yīng)的控制信號為0, 轉(zhuǎn)換開關(guān)把輸出級與鎖存

30、器 端接通, 同時因與門3輸出為0使V2截止, 此時, 輸出級是漏極開路電路。 當(dāng)P0口作為通用I/O接口時, 要注意兩點: 第一, 在輸出數(shù)據(jù)時, 由于V2截止, 輸出級是漏極開路電路, 要使“1”信號正常輸出, 必須外接上拉電阻。 第二, P0口作為通用I/O使用時是一準(zhǔn)雙向口。 4. 端口操作 MCS51單片機(jī)有不少指令可直接進(jìn)行端口操作, 例如: ANL P0, A ;(P0)(P0)(A)端口內(nèi)容“與”指令 ORL P0, data ; (P0)(P0) data端口內(nèi)容“或”指令 DELP0; (P0)(P0)1端口內(nèi)容減1指令 1.5.2 P1口 P1口為準(zhǔn)雙向口, 其1位的內(nèi)部

31、結(jié)構(gòu)如圖18所示。 它在結(jié)構(gòu)上與P0口的區(qū)別在于輸出驅(qū)動部分, 其輸出驅(qū)動部分由場效應(yīng)管V1與內(nèi)部上拉電阻組成。 當(dāng)其某位輸出高電平時, 可以提供拉電流負(fù)載, 不必象P0口那樣需要外接電阻。 從功能上來看P1只有一種功能(對MCS51子系列), 即通用輸入輸出I/O接口, 具有輸入、輸出、 端口操作3種工作方式, 每1位口線能獨立地用作輸入或輸出線。 圖18 P1口的結(jié)構(gòu)原理圖 1.5.3 P2口 P2口也是一準(zhǔn)雙向口, 其1位的內(nèi)部結(jié)構(gòu)如圖19所示。 它具有通用I/O接口或高8位地址總線輸出兩種功能, 所以其輸出驅(qū)動結(jié)構(gòu)比P1口輸出驅(qū)動結(jié)構(gòu)多了一個輸出模擬轉(zhuǎn)換開關(guān)MUX和反相器3。 圖19

32、P2口的結(jié)構(gòu)原理圖 當(dāng)作為準(zhǔn)雙向通用I/O接口使用時, 控制信號使轉(zhuǎn)換開關(guān)接向左側(cè), 鎖存器Q端經(jīng)反相器3接V1, 其工作原理與P1相同, 也具有輸入、 輸出、 端口操作三種工作方式, 負(fù)載能力也與P1口相同。 當(dāng)P2口作為準(zhǔn)雙向通用I/O接口使用時, 控制信號使轉(zhuǎn)換開關(guān)接向左側(cè), 鎖存器Q端經(jīng)反相器3接V1, 其工作原理與P1相同, 也具有輸入、輸出、端口操作三種工作方式, 負(fù)載能力也與P1口相同。 當(dāng)P2口作為外部擴(kuò)展存儲器的高8位地址總線使用時, 控制信號使轉(zhuǎn)換開關(guān)接向右側(cè), 由程序計數(shù)器PC來的高8位地址PCH, 或數(shù)據(jù)指針DPTR來的高8位地址DPH經(jīng)反相器3和V1原樣呈現(xiàn)在P2口的

33、引腳上, 輸出高8位地址A8A15。在上述情況下, 口鎖存器的內(nèi)容不受影響, 所以, 取指或訪問外部存儲器結(jié)束后, 由于轉(zhuǎn)換開關(guān)又接至左側(cè), 使輸出驅(qū)動器與鎖存器Q端相連, 引腳上將恢復(fù)原來的數(shù)據(jù)。 1.5.4 P3口 P3口的1位結(jié)構(gòu)如圖110所示。 它的輸出驅(qū)動由與非門3、 V1組成, 比P0、 P1、P2口結(jié)構(gòu)多了一個緩沖器4。 P3口除了可作為通用準(zhǔn)雙向I/O接口外, 每1根線還具有第2功能。 當(dāng)P3口作為通用I/O接口時, 第2功能輸出線為高電平, 使與非門3的輸出取決于口鎖存器的狀態(tài)。 在這種情況下, P3口仍是1個準(zhǔn)雙向口, 它的工作方式、 負(fù)載能力均與P1、 P2口相同。 當(dāng)P

34、3口作為第2功能(各引腳功能見表12)使用時, 其鎖存器Q端必須為高電平, 否則V1管導(dǎo)通, 引腳被箝位在低電平, 無法輸入或輸出第2功能信號。 當(dāng)Q端為高電平時, P3口的口線狀態(tài)就取決于第2功能輸出線的狀態(tài)。 圖110 P3口的結(jié)構(gòu)原理圖 1.6.1 CPU時序 計算機(jī)在執(zhí)行指令時, 通常將一條指令分解為若干基本的微操作, 這些微操作所對應(yīng)的脈沖信號在時間上的先后次序稱為計算機(jī)的時序。 為便于理解時序, 先介紹幾個常用名詞。 振蕩周期: 為單片機(jī)提供定時信號的振蕩源的周期(晶振周期或外加振蕩源周期)。 狀態(tài)周期: 2個振蕩周期為1個狀態(tài)周期, 用S表示。 1.6 CPU時序與復(fù)位 機(jī)器周期

35、: 1個機(jī)器周期含6個狀態(tài)周期, 用S1、 S2、 、 S6表示, 共有12個節(jié)拍。 指令周期: 完成一條指令所占用的全部時間, 它以機(jī)器周期為單位。MCS-51單片機(jī)大多數(shù)指令是單字節(jié)單周期指令, 另外, 還有單字節(jié)雙周期指令、雙字節(jié)單周期指令、雙字節(jié)雙周期指令, 而乘除法指令是單字節(jié)4周期指令。 例如: 外接晶振為12 MHz時, MCS51單片機(jī)的4個時間周期的具體值為: 振蕩周期=1/12 s; 狀態(tài)周期=1/6 s; 機(jī)器周期=1 s; 指令周期=14 s。 MCS51單片機(jī)的CPU取指令和執(zhí)行指令的時序如圖111所示。 圖111 MCS51單片機(jī)CPU取指/執(zhí)行時序 單周期指令的執(zhí)

36、行從S1P2開始, 在S1P2期間讀入操作碼并把它鎖存到指令寄存器中。 雙字節(jié)指令, 則在同一機(jī)器周期的S4期間讀出第2個字節(jié)。 對于單字節(jié)指令在S4處仍有一次讀操作, 但這時讀出的字節(jié)(下一條指令的操作碼)是不予考慮的, 而且程序計數(shù)器PC也不加1。 對于單周期指令, 在上述任何情況下, 指令都在S6P2期間完成操作。 圖111 中的(a )和(b)分別表示單字節(jié)單周期和雙字節(jié)單周期指令的執(zhí)行時序。 圖111(c)表示單字節(jié)雙周期指令的時序, 單字節(jié)雙周期指令在兩個機(jī)器周期內(nèi)作4次讀操作碼的操作, 由于是單字節(jié)指令, 后3次讀操作是無效的。 圖111(d)表示執(zhí)行訪問外部數(shù)據(jù)存儲器指令MOV

37、X的時序, 這是一條單字節(jié)雙周期指令,具有其特殊性。 1.6.2 復(fù)位電路與復(fù)位狀態(tài) 1. 復(fù)位電路 通過某種方式, 使單片機(jī)內(nèi)各寄存器的值變?yōu)槌跏紶顟B(tài)的操作稱為復(fù)位。 MCS51單片機(jī)在時鐘電路工作以后, 在RST/VPD端持續(xù)給出2個機(jī)器周期的高電平就可以完成復(fù)位操作(一般復(fù)位正脈沖寬度大于10 ms)。 復(fù)位分為上電復(fù)位和外部復(fù)位兩種方式。 圖112 MCS51單片機(jī)復(fù)位參考電路(a) 上電復(fù)位電路; (b) 上電/外部復(fù)位電路 2. 復(fù)位狀態(tài) MCS51單片機(jī)復(fù)位后, 程序計數(shù)器PC和特殊功能寄存器復(fù)位的狀態(tài)如表29所示。 復(fù)位不影響片內(nèi)RAM存放的內(nèi)容, 而ALE、 在復(fù)位期間將輸出

38、高電平。由表18可以看出: (1) (PC)=0000H 表示復(fù)位后程序的入口地址為0000H; (2)(PSW)=00H, 其中RS1(PSW.4)=0, RS0(PSW.3)=0, 表示復(fù)位后單片機(jī)選擇工作寄存器0組; (3) (SP)=07H 表示復(fù)位后堆棧在片內(nèi)RAM的08H單元處建立; (4) P0口P3口鎖存器為全1狀態(tài), 說明復(fù)位后這些并行接口可以直接作輸入口, 無須向端口寫1; (5) 定時器/計數(shù)器、 串行口、 中斷系統(tǒng)等特殊功能寄存器復(fù)位后的狀態(tài)對各功能部件工作狀態(tài)的影響, 將在后續(xù)有關(guān)章節(jié)介紹。 表18 PC與SFR復(fù)位狀態(tài)表 第2章 單片機(jī)指令系統(tǒng)2.1 MCS51單片

39、機(jī)匯編語言與指令格式2.2 尋址方式2.3 MCS51單片機(jī)指令系統(tǒng)2.1 MCS51單片機(jī)匯編語言與指令格式 2.1.1 單片機(jī)的匯編語言 由于構(gòu)成計算機(jī)的電子器件特性所決定, 計算機(jī)只能識別二進(jìn)制代碼。 這種以二進(jìn)制代碼來描述指令功能的語言, 稱之為機(jī)器語言, 用機(jī)器語言組成的程序, 稱為目標(biāo)程序。 計算機(jī)就是按照機(jī)器語言的指令來完成各種功能操作的, 它具有程序簡捷、 占用存儲空間小、 執(zhí)行速度快、 控制功能強等特點。 2.1.2 指令格式 MCS51單片機(jī)匯編語言指令的標(biāo)準(zhǔn)格式如下: 標(biāo)號: 操作碼 目的操作數(shù) , 源操作數(shù) ; 注釋 例如: LOOP: ADD# A, 10H ; (A

40、)(A)+10H (1) 方括號 表示該項是可選項, 可有可無。 (2) 標(biāo)號是用戶設(shè)定的符號, 它實際代表該指令所在的地址。 標(biāo)號必須以字母開頭, 其后跟18個字母或數(shù)字, 并以“:”結(jié)尾。 (3) 操作碼是用英文縮寫的指令功能助記符。 它確定了本條指令完成什么樣的操作功能。 如: ADD表示加法操作。 任何一條指令都必須有該助記符項, 不得省略。 (4) 目的操作數(shù)提供操作的對象, 并指出一個目標(biāo)地址, 表示操作結(jié)果存放單元的地址, 它與操作碼之間必須以一個或幾個空格分隔。 如上例中A表示操作對象是累加器A的內(nèi)容, 并指出操作結(jié)果又回送A存放。 (5) 源操作數(shù)指出的是一個源地址(或立即數(shù)

41、), 表示操作的對象或操作數(shù)來自何處。 它與目的操作數(shù)之間要用“,”號隔開。 (6) 注釋部分是在編寫程序時, 為了增加程序的可讀性, 由用戶擬寫對該條指令或該段程序功能的說明。 它以分號“;”開頭, 可以用中文、 英文或某些符號來表示, 顯然它不存入計算機(jī), 只出現(xiàn)在源程序中。 2.1.3 指令中常用符號 在分類介紹各類指令之前, 先對描述指令的一些符號意義進(jìn)行一些簡單約定: (1) Ri和Rn: R表示當(dāng)前工作寄存器區(qū)中的工作寄存器, i表示0或1, 即R0和R1。 n表示07, 即R0R7, 當(dāng)前工作寄存器的選定是由PSW的RS1和RS0位決定的。 (2) data: 表示立即數(shù), da

42、ta為8位常數(shù)。 data是指包含在指令中的8位立即數(shù)。 (3) data16: 包含在指令中的16位立即數(shù)。 (4) rel: 相對地址, 以補碼形式表示的地址偏移量, 范圍為-128+127, 主要用于無條件相對短轉(zhuǎn)移指令SJMP和所有的條件轉(zhuǎn)移指令中。 (5) addr16: 16位目的地址。 目的地址可在全部程序存儲器的64 KB空間范圍內(nèi), 主要用于無條件長轉(zhuǎn)移指令LJMP和子程序長調(diào)用指令LCALL中。 (6) addr11: 11位目的地址。 目的地址應(yīng)與下條指令處于相同的2 KB程序存儲器地址空間范圍內(nèi), 主要用于絕對轉(zhuǎn)移指令A(yù)JMP和子程序絕對調(diào)用指令A(yù)CALL指令中。 (7

43、) direct: 表示直接尋址的地址, 即8位內(nèi)部數(shù)據(jù)存儲器RAM的單元地址(0127/255), 或特殊功能寄存器SFR的地址。 對于SFR可直接用其名稱來代替其直接地址。 (8) bit: 內(nèi)部數(shù)據(jù)存儲器RAM和特殊功能寄存器SFR中的可直接尋址位地址。 (9) : 間接尋址寄存器或基地址寄存器的前綴, 如Ri, DPTR, 表示寄存器間接尋址。 (10) (X): 表示X中的內(nèi)容。 (11) (X): 表示由X尋址的單元中的內(nèi)容, 即(X)作地址, 該地址的內(nèi)容用(X)表示。 (12) / 和符號: /表示對該位操作數(shù)取反, 但不影響該位的原值。 表示指令操作流程, 將箭頭一方的內(nèi)容,

44、 送入箭頭另一方的單元中去。 2.2 尋址方式 2.2.1寄存器尋址 選定某寄存器, 自該寄存器中讀取或存放操作數(shù), 以完成指令規(guī)定的操作, 稱為寄存器尋址。 例如: MOV A, R0 ; (A)(R0) 該指令的功能是把工作寄存器R0中的內(nèi)容傳送到累加器A中, 如: R0內(nèi)容為FFH, 則執(zhí)該指令后A的內(nèi)容也為FFH。 在該條指令中, 源操作數(shù)和目的操作數(shù)是由尋址R0和A寄存器得到的, 故屬于寄存器尋址。 該指令為單字節(jié)指令, 機(jī)器代碼為E8H。 2.2.2 立即尋址 操作數(shù)直接出現(xiàn)在指令中, 它緊跟在操作碼的后面, 作為指令的一部分與操作碼一起存放在程序存儲器內(nèi), 可以立即得到并執(zhí)行,

45、不需要另去寄存器或存儲器等處尋找和取數(shù), 故稱為立即尋址。 該操作數(shù)稱為立即數(shù), 并在其前冠以“”號作前綴, 以表示并非地址。 立即數(shù)可以是8位或16位, 用十六進(jìn)制數(shù)表示。 例如: MOV A, 0FH ; (A)0FH 該指令的功能是將立即數(shù)0FH傳送到累加器A中, 對應(yīng)的機(jī)器碼為74H。 它隱含了寄存器尋址累加器A方式, 長一個字節(jié), 占用一個存儲單元; 立即數(shù)0FH緊跟在操作碼之后, 成為指令代碼的一部分, 長也是一個字節(jié), 占用緊跟在后面的另一個存儲單元。 故該指令為雙字節(jié)指令, 其機(jī)器碼為74H 0FH。 2.2.3 寄存器間接尋址 由指令指出某一個寄存器的內(nèi)容作為操作數(shù)地址的尋址

46、方法, 稱為寄存器間接尋址方法, 簡稱寄存器間址。 這里要強調(diào)的是: 寄存器的內(nèi)容不是操作數(shù)本身, 而是操作數(shù)地址。 寄存器間接尋址使用所選定寄存器區(qū)中的R0和R1作為地址指針(對堆棧操作時, 使用堆棧指針SP), 來尋址片內(nèi)數(shù)據(jù)存儲器RAM(00FFH)的256個單元, 但它不能訪問特殊功能寄存器SFR。 寄存器間接尋址也適用于訪問外部數(shù)據(jù)存儲器, 此時, 用R0、 R1或DPTR作為地址指針。 寄存器間接尋址用符號“”指明。 圖21 寄存器間接尋址示意圖 2.2.4 直接尋址 指令中直接給出操作數(shù)所在的存儲器地址, 以供尋址取數(shù)或存數(shù)的尋址方式稱為直接尋址。 例如: MOV A, 40H

47、; (A)(40H) 該指令的功能是把內(nèi)部數(shù)據(jù)存儲器RAM 40H單元內(nèi)的內(nèi)容送到累加器A。 指令直接給出了源操作數(shù)的地址40H。 該指令的機(jī)器碼為E5H 40H。 2.2.5 變址尋址 基址寄存器加變址寄存器間接尋址, 簡稱變址尋址。 它以數(shù)據(jù)指針DPTR或程序計數(shù)器PC作為基址寄存器, 累加器A作為變址寄存器, 兩者的內(nèi)容相加形成16位程序存儲器地址, 該地址就是操作數(shù)所在地址。 例如: MOVC A, A+DPTR ; (A)(A)+(DPTR) 該指令尋址及操作功能如圖22所示, 該指令為單字節(jié)指令, 機(jī)器代碼為93H。 這種尋址方式常用于訪問程序存儲器中的常數(shù)表。 圖22 變址尋址示

48、意圖 2.2.6 相對尋址 相對尋址是以當(dāng)前程序計數(shù)器PC值加上指令規(guī)定的偏移量rel , 而構(gòu)成實際操作數(shù)地址的尋址方法。 它用于訪問程序存儲器, 常出現(xiàn)在相對轉(zhuǎn)移指令中。 在使用相對尋址時要注意以下兩點: 第一, 當(dāng)前PC值是指相對轉(zhuǎn)移指令所在地址(一般稱為源地址)加上轉(zhuǎn)移指令字節(jié)數(shù)。 即: 當(dāng)前PC值 = 源地址 + 轉(zhuǎn)移指令字節(jié)數(shù)。 例如: JZ rel 是一條累加器A為零就轉(zhuǎn)移的雙字節(jié)指令。 若該指令地址(源地址)為2050H, 則執(zhí)行該指令時的當(dāng)前PC值即為2052H。 第二, 偏移量rel是有符號的單字節(jié)數(shù), 以補碼表示,其相對值的范圍是-128+127(即00HFFH), 負(fù)數(shù)

49、表示從當(dāng)前地址向上轉(zhuǎn)移, 正數(shù)表示從當(dāng)前地址向下轉(zhuǎn)移。 所以, 相對轉(zhuǎn)移指令滿足條件后, 轉(zhuǎn)移的地址(一般稱為目的地址)應(yīng)為: 目的地址 = 當(dāng)前PC值 + rel = 源地址 + 轉(zhuǎn)移指令字節(jié)數(shù) + rel 例如: 指令JZ 08H和JZ 0F4H 表示累加器A為零條件滿足后, 從源地址(2050H)分別向下、 向上轉(zhuǎn)移10個單元。 其相對尋址示意如圖23(a)、 (b)所示。 這兩條指令均為雙字節(jié)指令, 機(jī)器代碼分別為: 60H 08H和60H F4H。 圖23 相對尋址示意圖(a)指令JZ 08H尋址示意圖; (b)指令JZ F4H尋址示意圖 2.2.7 位尋址 MCS51系列單片機(jī)具有

50、位尋址的功能, 即指令中直接給出位地址, 可以對內(nèi)部數(shù)據(jù)存儲器RAM中的128位和特殊寄存器SFR中的93位進(jìn)行尋址, 并且位操作指令可對地址空間的每一位進(jìn)行傳送及邏輯操作。 例如: SETB PSW.3 ; (PSW.3)1 該指令的功能是給程序狀態(tài)字PSW中的RS0置1。 該指令為雙字節(jié)指令, 機(jī)器代碼為D2H D3H, 指令的第二字節(jié)直接給出位地址D3H(PSW.3的位地址)。 綜上所述, 在MCS51系列單片機(jī)的存儲空間中, 指令究竟對哪個存儲器空間進(jìn)行操作是由指令操作碼和尋址方式確定的。 7種尋址方式如表21所示。 表21 7 種尋址方式及使用空間 2.3 MCS51單片機(jī)指令系統(tǒng)

51、MCS51單片機(jī)指令系統(tǒng)分為: 數(shù)據(jù)傳送類指令、 算術(shù)運算類指令、 邏輯運算及移位類指令、 控制轉(zhuǎn)移類指令和位操作(布爾操作)指令5大類, 共計111條指令。 現(xiàn)按其分類分別介紹各條指令的格式、 功能、 對狀態(tài)標(biāo)志的影響以及應(yīng)用。 2.3.1 數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送類指令共29條, 它是指令系統(tǒng)中最活躍、 使用最多的一類指令。 一般的操作是把源操作數(shù)傳送到目的操作數(shù), 即指令執(zhí)行后目的操作數(shù)改為源操作數(shù), 而源操作數(shù)保持不變。 若要求在進(jìn)行數(shù)據(jù)傳送時, 不丟失目的操作數(shù), 則可以用交換型傳送指令。 數(shù)據(jù)傳送類指令不影響進(jìn)位標(biāo)志CY、 半進(jìn)位標(biāo)志AC和溢出標(biāo)志OV, 但當(dāng)傳送或交換數(shù)據(jù)后影響累

52、加器A的值時, 奇偶標(biāo)志P的值則按A的值重新設(shè)定。 按數(shù)據(jù)傳送類指令的操作方式, 又可把傳送類指令分為3種類型: 數(shù)據(jù)傳送、 數(shù)據(jù)交換和堆棧操作, 并使用8種助記符: MOV、 MOVX、 MOVC、 XCH、 XCHD、 SWAP、 PUSH及POP。 表22給出了各種數(shù)據(jù)傳送指令的操作碼助記符和對應(yīng)的操作數(shù)。 表22 數(shù)據(jù)傳送類指令助記符與操作 1. 內(nèi)部數(shù)據(jù)存儲器間數(shù)據(jù)傳送指令 內(nèi)部數(shù)據(jù)存儲器RAM區(qū)是數(shù)據(jù)傳送最活躍的區(qū)域, 可用的指令數(shù)也最多, 共有16條指令, 指令操作碼助記符為MOV。 內(nèi)部RAM之間源操作數(shù)傳遞關(guān)系如圖24所示。 為了便于理解指令功能, 我們按源操作數(shù)的尋址方式逐

53、一介紹各條指令。 (1) 立即尋址。 在該尋址方式下, 內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有如下5條指令。 圖24 內(nèi)部RAM間數(shù)據(jù)傳遞關(guān)系 操作碼助記符 目的操作數(shù) 源操作數(shù) 功能注釋 機(jī)器代碼(H) MOV A, data ; (A) data , 74 data MOV direct, data ; (direct) data , 75 direct data MOV Ri, data ; (Ri) data , 7677 data MOV Rn, data ; (Rn) data , 787F data MOV DPTR, data16 ; (DPTR) data16 , 90 data158d

54、ata70 這組指令表明, 8位立即數(shù)可以直接傳送到內(nèi)部數(shù)據(jù)區(qū)RAM的各個位置, 并且可把16位立即數(shù)直接裝入數(shù)據(jù)指針DPTR。 把立即數(shù)送入累加器A的傳送指令在2.2.2節(jié)中已作了介紹, 其它指令的功能及應(yīng)用舉例如下: MOV direct, data ; (direct) data # , 75 direct data 該指令的功能是把立即數(shù)傳送到內(nèi)部數(shù)據(jù)存儲器RAM的00H7FH, 以及特殊功能寄存器SFR的各單元中去, 它為三字節(jié)指令。 例如把立即數(shù)40H傳送到RAM的30H單元和P1口(口地址為90H), 可采用如下指令: MOV 30H, 40H ; (30H) 40H, 75 3

55、0 40 MOV P1, 40H ; (90H) 40H, 75 90 40 MOV Ri, data ; (Ri) data, 7677 data 該指令的功能是把立即數(shù)傳送到由R0和R1寄存器的內(nèi)容指出的片內(nèi)數(shù)據(jù)存儲器RAM的單元中去(MCS51系列為00H7FH, MCS52系列為00HFFH)。 MOV R0, 30H ; (R0) 30H , 78 30 MOV R0, 40H ; (R0) 40H , 76 40 MOV Rn, data ; (Rn) data , 787F data 該指令的功能是把立即數(shù)傳送到內(nèi)部寄存器R0R7中去,該指令為雙字節(jié)指令, 機(jī)器代碼為: MOV

56、DPTR, data16 ; (DPTR) data16 , 90 data 158 data 70 該指令的功能是把16位立即數(shù)裝入數(shù)據(jù)指針DPTR中去。 它是MCS51系列單片機(jī)指令系統(tǒng)中唯一的一條16位數(shù)據(jù)傳送指令。 該指令為三字節(jié)指令, 第一字節(jié)為90H, 第二字節(jié)為高8位立即數(shù), 第三字節(jié)為低8位立即數(shù)。 例如: MOV DPTR, 1234H指令執(zhí)行后, DPTR寄存器的高8位寄存器DPH的內(nèi)容為12H, 低8位寄存器DPL內(nèi)容為34H。 該指令的機(jī)器代碼為90H 12H 34H。 (2) 寄存器尋址。 在該尋址方式下, 內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有以下5條: MOV direct,

57、 A # ; (direct) (A) , F5 direct MOV Ri, A ; (Ri) (A) , F6F7 MOV Rn, A ; (Rn) (A) , F8FF MOV A, Rn ; (A) (Rn) , E8EF MOV direct, Rn ; (direct) (Rn) , 888F direct 這組指令的功能是把累加器A的內(nèi)容傳送到內(nèi)部數(shù)據(jù)區(qū)RAM的各個單元, 或者把指定工作寄存器R0R7中的內(nèi)容傳送到累加器A或direct所指定的片內(nèi)RAM的00H7FH單元或特殊功能寄存器SFR中去。 但不能用這類指令在內(nèi)部工作寄存器之間直接傳送。 例如: 不存在MOVR1, R2

58、這樣的指令。 (3) 直接尋址。 在該尋址方式下, 內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有如下4條指令: MOV A, direct ; (A) (direct) , E5 direct MOV Rn, direct ; (Rn) (direct) , A8AF direct MOV Ri, direct ; (Ri) (direct) , A6A7 direct MOV direct2, direct1; (direct2) (direct1) , 85 direct1 direct2 這組指令將直接地址所規(guī)定的內(nèi)部RAM單元(片內(nèi)RAM的00H7FH, SFR的80HFFH單元)內(nèi)容傳送到累加器A ,

59、 寄存器Rn, 并能實現(xiàn)內(nèi)部數(shù)據(jù)寄存器RAM之間、 特殊功能寄存器SFR之間或SFR與內(nèi)部RAM之間的直接數(shù)據(jù)傳遞。 直接傳遞不需要通過累加器A或者工作寄存器來間接傳送, 從而提高了數(shù)據(jù)傳送的效率。 例如: MOV P2 , P1 ; (P2) (P1) , 85 90 A0 該指令的功能是不通過其它寄存器, 直接把P1口(口地址90H)的內(nèi)容傳送到P2口(口地址A0H)輸出, 提高了效率。 該指令為三字節(jié)指令, 機(jī)器代碼為85H 90H A0H。 (4) 寄存器間接尋址。 在該尋址方式下, 內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有以下兩條: MOV A, Ri ; (A) (Ri) , E6E7 MOV

60、direct, Ri ; (direct) (Ri) , 8687 direct 這組指令把以Ri的內(nèi)容作為地址進(jìn)行尋址所得到單元的內(nèi)容, 傳送到累加器A或direct指定的片內(nèi)RAM區(qū)單元。 例如: 設(shè)內(nèi)部RAM (30H)=40H, (40H)=10H, (10H)=00H, 端口(P1)=CAH, 分析以下程序執(zhí)行后各單元及寄存器、 P2口的內(nèi)容。 MOV R0, 30H ; (R0) 30H , 78 30 MOV A, R0 ; (A) (R0) , E6 MOV R1, A ; (R1) (A) , F9 MOV B, R1 ; (B) (R1) , 87 F0 MOV R1, P

溫馨提示

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

最新文檔

評論

0/150

提交評論