單片機原理及應用(第二版) 課件 (柴鈺)第1-3章 單片機系統(tǒng)概述、單片機基礎(chǔ)知識、指令系統(tǒng)及匯編語言程序設(shè)計_第1頁
單片機原理及應用(第二版) 課件 (柴鈺)第1-3章 單片機系統(tǒng)概述、單片機基礎(chǔ)知識、指令系統(tǒng)及匯編語言程序設(shè)計_第2頁
單片機原理及應用(第二版) 課件 (柴鈺)第1-3章 單片機系統(tǒng)概述、單片機基礎(chǔ)知識、指令系統(tǒng)及匯編語言程序設(shè)計_第3頁
單片機原理及應用(第二版) 課件 (柴鈺)第1-3章 單片機系統(tǒng)概述、單片機基礎(chǔ)知識、指令系統(tǒng)及匯編語言程序設(shè)計_第4頁
單片機原理及應用(第二版) 課件 (柴鈺)第1-3章 單片機系統(tǒng)概述、單片機基礎(chǔ)知識、指令系統(tǒng)及匯編語言程序設(shè)計_第5頁
已閱讀5頁,還剩305頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章單片機系統(tǒng)概述1.1概述1.2單片機應用系統(tǒng)及設(shè)計簡介1.3單片機的學習方法習題1

1.1概述

1.1.1單片機及其發(fā)展

單片機全稱為單片微型計算機(SingleChipMicrocomputer,SCM),又稱微控制器(MicrocontrollerUnit,MCU)或嵌入式控制器(EmbeddedController)。在單片機誕生時,SCM是一個準確的稱謂。單片機是相對于單板機而言的,是指將CPU、并行I/O接口、定時/計數(shù)器、RAM、ROM等功能部件集成在一塊芯片上的計算機。

單片機技術(shù)的發(fā)展是與微電子技術(shù)和半導體技術(shù)的發(fā)展分不開的,大體分為五個階段。

第一階段(1971—1976年):初級階段。

第二階段(1976—1980年):低性能階段。

第三階段(1980—1983年):高性能階段。

第四階段(1983—1990年):16位機階段。

第五階段(1990年至今):新一代單片機階段。

1.1.2單片機的發(fā)展趨勢

1.低功耗

MCS-51系列的8031推出時的功耗達630mW,而目前的單片機隨著制造工藝、工作頻率、工作電壓等方面的改變,其功耗越來越低。NMOS工藝單片機逐漸被CMOS工藝單片機所代替,功耗得以大幅度下降。

2.多功能、微型化

目前的單片機功能強大,而且體積小、重量輕。常規(guī)的單片機普遍都是將中央處理器(CPU)、隨機存取數(shù)據(jù)存儲器(RAM)、只讀程序存儲器(ROM)、并行和串行通信接口、中斷系統(tǒng)、定時電路、時鐘電路集成在一塊單一的芯片上;增強型的單片機集成了如A/D轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)、WDT(看門狗)等功能模塊。

3.高速度

微處理器(MicroProcessorUnit,MPU)發(fā)展中表現(xiàn)出來的速度越來越快是以時鐘頻率越來越高為標志的,而單片機則有所不同。為提高單片機抗干擾能力,降低噪聲、降低時鐘頻率而不犧牲運算速度是單片機技術(shù)發(fā)展之追求。

4.多品種

現(xiàn)在,雖然單片機的品種繁多,各具特色,但仍以8051為核心的單片機占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有Philips公司的產(chǎn)品、Atmel公司的產(chǎn)品和中國臺灣的Winbond系列單片機。所以,8051為核心的單片機占據(jù)了半壁江山。

5.長壽命

這里所說的長壽命,一方面指用單片機開發(fā)的產(chǎn)品可以穩(wěn)定可靠地工作10到20年,另一方面指與微處理器相比,其壽命長。隨著半導體技術(shù)的飛速發(fā)展,MPU更新?lián)Q代的速度越來越快,以386、486、586為代表的MPU在很短的時間內(nèi)就被淘汰出局,而傳統(tǒng)的單片機,如68HC05、8051等面世已超過30年。

6.低噪聲與高可靠性技術(shù)

為提高單片機系統(tǒng)的抗電磁干擾能力,使產(chǎn)品能適應惡劣的工作環(huán)境,滿足電磁兼容性方面更高標準的要求,各單片機商家在單片機內(nèi)部電路中采取了一些新的技術(shù)措施。如美國國家半導體公司(NS)的COP8單片機內(nèi)部增加了抗EMI電路,增強了“看門狗”的性能;Motorola也推出了低噪聲的LN系列單片機。

7.?OTP與掩膜

OTP(OneTimeProgrammable)是一次性寫入的單片機。過去認為一個單片機產(chǎn)品的成熟是以投產(chǎn)掩膜型單片機為標志的。由于掩膜需要一定的生產(chǎn)周期,而OTP型單片機價格不斷下降,使得直接使用OTP完成最終產(chǎn)品制造更為流行。

8.?MTP向OTP挑戰(zhàn)

MTP是可多次編程的意思。一些單片機廠商以MTP的性能、OTP的價位推出他們的單片機,如Atmel的AVR單片機,片內(nèi)采用Flash存儲器,可多次編程;華邦(Winbond)公司生產(chǎn)的8051兼容的單片機也采用了MTP性能、OTP的價位。這些單片機都使用了ISP技術(shù),可先安裝到印刷板、線路板上以后再下載程序。

1.1.3單片機的應用

單片機有著一般微處理器(MPU)芯片所不具備的功能,它可單獨地完成現(xiàn)代工業(yè)控制所要求的智能化控制功能;能夠取代以前利用復雜電子線路或數(shù)字電路構(gòu)成的控制系統(tǒng)。

1.在智能儀表中的應用

智能儀表是單片機應用最多最活躍的領(lǐng)域之一。在各類儀器儀表中引入單片機,可使儀器儀表智能化,提高測試的自動化程度和精度,簡化儀器儀表的硬件結(jié)構(gòu),提高其性能價格比。

2.在人工智能方面的應用

人工智能是模擬人的感覺與思維的一門學科,單片機技術(shù)可以模擬人的視覺、聽覺、觸覺和聯(lián)想、啟發(fā)、推理及思維過程,例如特殊行業(yè)的機器人、醫(yī)療領(lǐng)域的專家診斷系統(tǒng)等,都是人工智能的應用范例。

3.在實時控制系統(tǒng)中的應用

單片機廣泛用于各種實時過程控制的系統(tǒng)中,例如工業(yè)過程控制、過程監(jiān)測、航空航天、尖端武器、機器人系統(tǒng)等各種實時控制系統(tǒng)。

4.在人們生活中的應用

目前,國內(nèi)外各種家電已經(jīng)普遍用單片機代替?zhèn)鹘y(tǒng)的控制電路,例如洗衣機、電冰箱、空調(diào)機、微波爐、電飯煲、收音機、音響、電風扇及許多高級電子玩具都配上了單片機。

5.在其他方面的應用

單片機還廣泛應用于辦公自動化、商業(yè)營銷、安全防衛(wèi)、汽車、通信系統(tǒng)、計算機外部設(shè)備、模糊控制等領(lǐng)域。

1.2單片機應用系統(tǒng)及設(shè)計簡介

1.2.1單片機應用系統(tǒng)及組成單片機應用系統(tǒng)是以單片機為核心,配以輸入、輸出、顯示、控制等外圍電路和軟件,能實現(xiàn)一種或多種功能的實用系統(tǒng)。單片機應用系統(tǒng)由硬件和軟件組成。硬件是應用系統(tǒng)的基礎(chǔ);軟件在硬件的基礎(chǔ)上對其資源進行合理調(diào)配和使用,從而完成應用系統(tǒng)所要求的任務。二者相互依賴,缺一不可。單片機應用系統(tǒng)的組成如圖1.1所示。

圖1.1單片機應用系統(tǒng)的組成

圖1.1中,硬件包括單片機最小系統(tǒng)、接口電路及外設(shè)(人機交互通道、輸入通道、輸出通道、通信及其他電路)等;軟件包括在硬件基礎(chǔ)上實現(xiàn)各種功能的應用程序。單片機最小系統(tǒng)由單片機、復位電路、時鐘電路以及擴展的程序、數(shù)據(jù)存儲器等組成。

輸出通道指由單片機對外部設(shè)備發(fā)出的各種輸出信號所經(jīng)過的途徑。在通道中可對信號進行各種處理,如隔離、放大(驅(qū)動)、轉(zhuǎn)換、濾波等。

1.2.2單片機應用系統(tǒng)的開發(fā)

一個單片機應用系統(tǒng)從提出任務到正式投入運行的過程,稱為單片機應用系統(tǒng)的開發(fā)。一般開發(fā)可按以下步驟進行:需求分析,可行性分析,系統(tǒng)總體方案設(shè)計,單元硬件/軟件設(shè)計及調(diào)試,系統(tǒng)調(diào)試及修改,完成產(chǎn)品。

1)需求分析。

(2)可行性分析。

(3)系統(tǒng)總體方案設(shè)計。

(4)單元硬件/軟件設(shè)計及調(diào)試。

(5)系統(tǒng)調(diào)試及修改。

(6)完成產(chǎn)品。

1.2.3單片機應用系統(tǒng)的設(shè)計原則

1.可靠性高

高可靠性是單片機系統(tǒng)應用的前提,在系統(tǒng)設(shè)計的每一個環(huán)節(jié),都應該將可靠性作為首要的設(shè)計準則。提高系統(tǒng)的可靠性通常從以下幾個方面考慮:

(1)使用可靠性高的元器件、典型的電路和成熟的技術(shù);

(2)采用冗余技術(shù);

(3)設(shè)計電路板時布線和接地要合理,嚴格按要求安裝硬件設(shè)備及電路;

(4)對供電電源采用抗干擾措施;

(5)輸入/輸出通道采用抗干擾措施;

(6)進行軟、硬件濾波;

(7)使系統(tǒng)具有自診斷功能。

2.操作維護方便

在進行系統(tǒng)的軟/硬件設(shè)計時,應從使用者的角度考慮,盡可能地方便用戶操作和維護,盡量減少對操作人員專業(yè)知識的要求,以利于系統(tǒng)的推廣。因此,在設(shè)計時,要盡可能減少人機交互接口,多采用操作內(nèi)置或簡化的方法。

3.性價比高

單片機除體積小、功耗低等特點外,最大的優(yōu)勢在于高性能價格比。一個單片機應用系統(tǒng)能否被廣泛使用,性價比是其中一個關(guān)鍵因素。

4.設(shè)計周期短

只有縮短設(shè)計周期,才能有效地降低設(shè)計費用,充分發(fā)揮新系統(tǒng)的技術(shù)優(yōu)勢和時效性,及早占領(lǐng)市場并具備一定的競爭力。

1.3單片機的學習方法

單片機是一門實踐性很強的實用技術(shù),實際應用時會涉及許多有關(guān)的知識(數(shù)電、模電、傳感器、控制、通信等知識),所以要求在學習過程中不但要掌握書中的內(nèi)容,還要通過各種實踐對單片機的內(nèi)容及有關(guān)其他課程的知識進一步加強、鞏固和融合,為今后單片機應用系統(tǒng)的分析和開發(fā)打好堅實的基礎(chǔ)。

在學習的各個階段應注意以下幾點:

(1)起步階段,主要是學習單片機的初期(第1章和第2章)。學習的內(nèi)容及要求主要是:了解單片機的情況,特別是目前和今后的發(fā)展情況;掌握單片機的結(jié)構(gòu)、基本性能及其工作原理;熟悉單片機的內(nèi)部資源的構(gòu)成、功能和工作原理。

(2)了解階段,主要是通過學習對單片機有一個較完整的了解(第3、4、5章)。學習的內(nèi)容及要求主要是:掌握單片機各個功能塊的組成、性能和作用;掌握單片機指令系統(tǒng)、指令的功能和編程方法,熟悉常用的基本指令;掌握常用系統(tǒng)擴展的基本方法和技術(shù),熟悉常用擴展芯片的結(jié)構(gòu)、工作原理和功能。

(3)入門階段,主要是通過對單片機的深入學習,對單片機應用系統(tǒng)建立一個初步的了解,具備初步的設(shè)計能力(第6、7章)。學習的內(nèi)容及要求主要是:掌握單片機應用系統(tǒng)的構(gòu)成;熟悉軟、硬件設(shè)計的一般原則和方法。

習題1

1.什么是微型計算機及系統(tǒng)?它是由哪幾部分組成的?2.什么是單片機?它由哪幾部分組成?什么是單片機應用系統(tǒng)?單片機和單片機應用系統(tǒng)之間是什么關(guān)系?3.說明微型計算機及系統(tǒng)與單片機及應用系統(tǒng)各自的特點,并說明二者的區(qū)別。4.除了附錄?Ⅲ?的網(wǎng)站,你能否再找到與單片機有關(guān)的其他網(wǎng)站?

5.到目前為止,你見過哪幾個公司的哪些型號的單片機?請羅列其中幾種,并說明其特點。

6.除了書中羅列的單片機應用領(lǐng)域外,請你再舉幾個應用單片機的例子。

7.請你舉出在你身邊都有哪些家電、設(shè)備中使用了單片機。

8.請列舉到目前為止你知道的具有中國自主知識產(chǎn)權(quán)的單片機,其特點是什么?

9.第一款單片機是哪個國家的哪個公司制造的?型號是什么?

10.請瀏覽本書的目錄,回答該課程的主要內(nèi)容是什么。你認為單片機的學習和哪些已經(jīng)學習過的課程或者知識有關(guān)?

11.你現(xiàn)在已有的單片機編程軟件是什么?

12.你知道什么是電路板嗎?你會手工制作電路板嗎?如果不知道請查閱資料,找到有關(guān)這方面的資料,了解這方面的情況,掌握制作的過程和方法。

13.你去過電子市場嗎?買過電子器件(電阻、電容、晶振、發(fā)光二極管等)嗎?如果沒有,請選擇兩個以上的電子市場,購買一些與單片機有關(guān)的電子元器件。請舉例說出你已去過的電子市場及買過的有關(guān)元器件(寫下名稱、型號、功能及性能等)。

14.你過去使用過示波器、信號發(fā)生器、直流電源等設(shè)備嗎?使用過萬用表、烙鐵等工具嗎?如果使用過,你對它們的功能、性能、結(jié)構(gòu)等了解程度如何?請舉幾個實例說明你基本掌握了它們的功能、性能、結(jié)構(gòu)等知識,并能熟練地使用。

15.單片機技術(shù)發(fā)展很快,查閱有關(guān)資料,說明目前單片機都有哪些更新的功能和更高的性能指標。

16.為了學習單片機原理,你目前有幾本參考書?其中有無原版的單片機手冊(廠家提供的)?

17.單片機和其他計算機一樣,其工作時內(nèi)部進行著大量的二進制數(shù)據(jù)的處理。二進制是最簡單的數(shù)據(jù)形式,但是通過單片機處理過后,其結(jié)果變化無窮,你能說明這是為什么嗎?

18.如果同樣的產(chǎn)品既可以用單片機設(shè)計、制作,同時也可以用傳統(tǒng)的電子器件設(shè)計、制作,你想用什么來設(shè)計呢?說出自己的看法。第2章單片機基礎(chǔ)知識2.1MCS-51系列單片機的基本結(jié)構(gòu)2.2中央處理器(CPU)2.3存儲器及存儲空間2.4并行I/O口及其結(jié)構(gòu)2.5時鐘電路與CPU時序2.6單片機的工作方式習題2

2.1MCS-51系列單片機的基本結(jié)構(gòu)

2.1.1MCS-51單片機系列MCS-51系列單片機分為51子系列和52子系列。51子系列為基本型,主要有8031、8051、8751三種類型;52子系列為增強型,主要有8032、8052、8752三種類型。這兩大系列單片機的主要硬件配置如表2.1所示。

AT89系列單片機分為低檔型、標準型和高檔型三種。各種不同型號的單片機,其主要差別在于片內(nèi)的Flash程序存儲器的容量大小、片內(nèi)數(shù)據(jù)存儲器的容量大小、并行I/O端口線以及中斷源個數(shù)不同。其常用產(chǎn)品特性如表2.2所示。

其中,“AT”是前綴,“89CXXXX”是型號,型號之后的“XXXX”是后綴。各部分含義如下所示。

(1)前綴:“AT”表示該器件是Atmel公司的產(chǎn)品。

(2)型號:可能是“89C2051”、“89LV51”、“89S52”等。

(3)后綴:由“XXXX”四個參數(shù)組成,每個參數(shù)所表示的意義不同。

2.1.2MCS-51系列單片機內(nèi)部結(jié)構(gòu)及功能部件

1.MCS-51系列單片機內(nèi)部結(jié)構(gòu)

MCS-51系列單片機內(nèi)部由中央處理器(CPU)、存儲器、輸入/輸出端口、定時/計數(shù)器、中斷系統(tǒng)以及系統(tǒng)總線等構(gòu)成,通過系統(tǒng)總線把各個部分連接起來。AT89系列單片機和MCS-51系列單片機的內(nèi)部結(jié)構(gòu)類似,AT89S51的內(nèi)部結(jié)構(gòu)框圖如圖2.1所示。圖2.1AT89S51內(nèi)部結(jié)構(gòu)框圖

2.MCS-51系列單片機功能部件

1)中央處理器(CPU)

CPU是單片機的核心部件,是一個8位二進制數(shù)的中央處理單元,主要負責控制、指揮和調(diào)度整個單片機系統(tǒng)協(xié)調(diào)工作,完成運算功能并控制輸入/輸出等操作。

2)程序存儲器(ROM)

程序存儲器主要用于存放用戶程序、原始數(shù)據(jù)或表格等。

3)數(shù)據(jù)存儲器(RAM)

數(shù)據(jù)存儲器主要用于存放運算的中間結(jié)果,進行數(shù)據(jù)暫存及數(shù)據(jù)緩沖等。

4)定時/計數(shù)器

MCS-51系列單片機有兩個16位可編程定時/計數(shù)器,通過編程可作為定時器或計數(shù)器使用,并有四種不同的工作模式。

5)并行輸入/輸出(I/O)接口

單片機對外部電路進行控制或交換信息是通過輸入/輸出(I/O)接口完成的,MCS-51系列單片機有四組8位的并行輸入/輸出(I/O)接口,分別為P0口、P1口、P2口和P3口,它們都是8位準雙向口,每次可以并行輸入或輸出8位二進制信息,也可以按位進行輸入或輸出信息操作。

6)全雙工串行接口

MCS-51系列單片機有一個全雙工串行通信接口,用于與外部設(shè)備進行串行信息傳送。該串行口可編程,有四種不同的工作模式,既可以作為異步通信收發(fā)器以與其他外部設(shè)備完成信息交換,也可以作為同步移位寄存器來擴展I/O接口電路。

7)中斷系統(tǒng)

中斷是指CPU暫停正在執(zhí)行的程序轉(zhuǎn)而處理中斷服務程序,在執(zhí)行完中斷服務程序之后再回到原來正在執(zhí)行的程序繼續(xù)執(zhí)行。

8)時鐘電路

單片機各部件之間有條不紊地協(xié)調(diào)工作,其控制信號是在一種基本節(jié)拍的指揮下按一定的時間順序發(fā)出的,這些控制信號在時間上的相互關(guān)系就是CPU時序。而產(chǎn)生這種時序的電路就是振蕩器和時鐘電路。

9)內(nèi)部總線

總線是用于傳送信息的公共途徑。根據(jù)總線上傳送的信息的不同,MCS-51系列單片機的內(nèi)部總線可分為數(shù)據(jù)總線、地址總線和控制總線。

2.1.3單片機外部引腳說明

使用HMOS制造工藝的MCS-51系列單片機大部分采用40引腳雙列直插式封裝(DIP)。CHMOS制造工藝的單片機有兩種封裝形式:雙列直插式和方形PLCC封裝,MCS-51系列單片機引腳圖如圖2.2所示。

圖2.2MCS-51系列單片機引腳圖

1.主電源線

VCC(40引腳):接+5V電源正端,正常操作和對EPROM編程及驗證時均接+5V電源。

GND(20引腳):接電源地端。

2.外接晶體線

XTAL1(19引腳):接外部晶體振蕩器的一端。

3.I/O端口線

MCS-51系列單片機共有四組并行I/O端口P0~P3,每個端口都有8條端口線,共有32條I/O端口線,每個接口的功能和用途有一定的差別。

(1)?P0口(32~39引腳):P0.0~P0.7統(tǒng)稱為P0口,是一個8位漏極開路型雙向I/O端口,其中P0.7為最高位。

(2)?P1口(1~8引腳):P1.0~P1.7統(tǒng)稱為P1口,是一個帶內(nèi)部上拉電阻的8位準雙向口,P1.7為最高位。

(3)?P2口(21~28引腳):P2.0~P2.7統(tǒng)稱為P2口,也是一個帶內(nèi)部上拉電阻的8位準雙向口,P2.7為最高位。

(4)?P3口(10~17引腳):P3.0~P3.7統(tǒng)稱為P3口,也是一個帶內(nèi)部上拉電阻的8位準雙向口,P3.7為最高位。

4.控制線

RST/VPD(9引腳):單片機復位/備用電源引腳。該引腳為單片機的上電復位或掉電保護端,該引腳上出現(xiàn)持續(xù)兩個機器周期的高電平就可實現(xiàn)復位操作,使單片機恢復到初始狀態(tài)。

MCS-51系列單片機功能多但引腳少。許多引腳具有雙重功能。這種雙重功能的設(shè)置為單片機系統(tǒng)擴展奠定了基礎(chǔ)。MCS-51系列單片機對外呈現(xiàn)三總線的形式,由P0口分時復用為8位數(shù)據(jù)總線,P0、P2構(gòu)成16位地址總線,由ALE、RST、、、

(P3.6)、(P3.7)等信號組成控制總線,MCS-51系列單片機總線結(jié)構(gòu)框圖如圖2.3所示。

圖2.3MCS-51系列單片機總線結(jié)構(gòu)框圖

2.2中央處理器(CPU)

2.2.1運算器運算器以算術(shù)邏輯單元(ALU)為核心,包括布爾處理器、累加器(ACC)、寄存器B、暫存器(TMP1、TMP2)、程序狀態(tài)字寄存器(PSW)等部件(見圖2.1),用來完成數(shù)據(jù)的算術(shù)邏輯運算、位變量處理和數(shù)據(jù)傳輸操作。

1.算術(shù)邏輯單元

ALU是由加法器和其他邏輯電路等組成的,是運算器的核心部件,可對數(shù)據(jù)進行算術(shù)四則運算和邏輯運算、移位操作、位操作等。

2.累加器

ACC是一個8位寄存器,簡稱A,用來存放參與算術(shù)運算和邏輯運算的一個操作數(shù)或運算結(jié)果,是CPU執(zhí)行指令時使用最頻繁的寄存器。

3.寄存器B

寄存器B是一個8位寄存器,是為ALU進行乘、除法運算而設(shè)置的。

4.暫存器

TMP1、TMP2用于為ALU暫存兩個8位的二進制操作數(shù),對用戶不開放。

5.程序狀態(tài)字寄存器

PSW是一個8位標志寄存器,用來存放程序運行中的各種狀態(tài)信息,以供程序查詢和判斷。PSW中各位的狀態(tài)通常是在操作過程中自動形成的,也可以由用戶根據(jù)需要按位進行操作。其各位的定義如下(PSW字節(jié)地址為D0H):

其各位的定義如下(PSW字節(jié)地址為D0H):

RS1、RS0狀態(tài)與工作寄存器組的對應關(guān)系如表2.4所示。

6.布爾處理器(位處理器)

布爾處理器是MCS-51單片機ALU具有的一種功能。單片機指令系統(tǒng)中的17條位處理指令、存儲器中的位地址空間以及借用程序狀態(tài)寄存器中的進位標志位Cy作為位操作累加器,構(gòu)成了單片機的布爾處理器。它可對直接尋址的位變量進行位處理,如置位、清零、取反以及邏輯與、或等操作,并可以方便地設(shè)置標志等。

2.2.2控制器

控制器是對來自存儲器中的指令進行譯碼,通過定時控制電路,在規(guī)定的時刻發(fā)出各種操作所需的全部內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的功能的器件。控制器主要由程序計數(shù)器(PC)、指令寄存器(IR)、指令譯碼器(ID)和定時控制邏輯電路等組成。

1.程序計數(shù)器

PC是一個16位的、具有自動加1功能的寄存器,用來存放下一條將要執(zhí)行指令的ROM地址值。

2.指令寄存器

IR是一個8位的寄存器,用于存放CPU根據(jù)PC地址從ROM中讀出的指令操作碼,等待譯碼。

3.指令譯碼器

ID用于對指令寄存器中的指令進行譯碼,將指令轉(zhuǎn)變?yōu)閳?zhí)行此指令所需要的電信號。

4.定時控制邏輯電路

定時部件用于產(chǎn)生脈沖序列和多種節(jié)拍脈沖;控制邏輯根據(jù)指令譯碼器產(chǎn)生的操作信號,按一定時間順序發(fā)出一系列節(jié)拍脈沖控制信號來完成指令所規(guī)定的全部操作。

2.2.3專用寄存器組

專用寄存器也稱為特殊功能寄存器(SFR),主要用來指示當前要執(zhí)行指令的內(nèi)存地址,存放特定的操作數(shù),指示指令的運行狀態(tài)等。MCS-51系列單片機共有21個特殊功能寄存器,離散地分布在片內(nèi)RAM的高128B地址中。前面介紹的A、B、PSW等都是特殊功能寄存器,但程序計數(shù)器不是特殊功能寄存器,不可訪問。

2.3存儲器及存儲空間

2.3.1存儲器空間MCS-51單片機的存儲器結(jié)構(gòu)框圖如圖2.4所示。

圖2.4MCS-51單片機存儲器結(jié)構(gòu)框圖

在物理結(jié)構(gòu)上,MCS-51系列單片機有四個存儲空間,分別為

(1)片內(nèi)程序存儲器。

(2)片外程序存儲器。

(3)片內(nèi)數(shù)據(jù)存儲器。

(4)片外數(shù)據(jù)存儲器(包括I/O地址空間)。

從用戶使用角度,即從邏輯上看,MCS-51系列單片機有三個存儲空間,分別為

(1)片內(nèi)、外統(tǒng)一編址的64KB程序存儲器(0000H~0FFFFH)。

(2)片內(nèi)數(shù)據(jù)存儲器(包含128B的SFR空間80H~0FFH)。

(3)?64KB的片外數(shù)據(jù)存儲器(包括I/O地址空間)。

2.3.2程序存儲器

程序存儲器一般用于存放程序、表格和常數(shù)。MCS-51單片機的程序存儲器空間最大為64KB(0000H~0FFFFH),其地址指針為16位的程序計數(shù)器PC,程序存儲器的地址是連續(xù)、統(tǒng)一的。

2.程序存儲器中的特殊單元

MCS-51單片機的程序存儲器中有一些特殊的存儲單元,這些存儲單元具有固定的用途,在使用中應加以注意。這些存儲單元分別為

?0000H:單片機上電或復位后PC的值,即程序必須從該地址開始執(zhí)行。

?0003H:外部中斷0入口地址。

?000BH:定時/計數(shù)器0溢出中斷入口地址。

?0013H:外部中斷1入口地址。

?001BH:定時/計數(shù)器1溢出中斷入口地址。

?0023H:串行口中斷入口地址。

?002BH:定時/計數(shù)器2溢出或T2EX(P1.1)端負跳變時的入口地址(僅52子系列有)。

2.3.3內(nèi)部數(shù)據(jù)存儲器

數(shù)據(jù)存儲器用于存放運算中間結(jié)果、數(shù)據(jù)暫存和緩沖、標志位等。MCS-51單片機片內(nèi)數(shù)據(jù)存儲器在物理上可分為兩個不同的區(qū),即為片內(nèi)RAM區(qū)和特殊功能寄存器區(qū)(SFR)。

1.片內(nèi)RAM

片內(nèi)RAM區(qū)從功能用途上又可分為三個不同的區(qū)域:工作寄存器區(qū)、位尋址區(qū)、通用RAM區(qū),如表2.5所示。

1)工作寄存器區(qū)

片內(nèi)RAM的00H~1FH區(qū)域設(shè)置為工作寄存器區(qū),該區(qū)域共有32個存儲單元,均勻地劃分為4組,每組由8個工作寄存器R0~R7構(gòu)成。工作寄存器組和RAM地址的對應關(guān)系如表2.6所示。

2)位尋址區(qū)

片內(nèi)RAM的20H~2FH的16個字節(jié)為位尋址區(qū)。這16個地址單元共有128位,每一位都有一個位地址,即為00H~7FH,每一位可以視為一個軟件觸發(fā)器,由程序直接進行位處理,通常用于存放各種程序的運行標志、位變量的狀態(tài)等。字節(jié)地址與位地址之間的關(guān)系如表2.7所示。

3)通用RAM區(qū)

片內(nèi)RAM的30H~7FH為通用RAM區(qū),用做堆?;驍?shù)據(jù)緩沖,只能按字節(jié)存取。在單片機的實際應用中,往往需要有一個連續(xù)的先進后出的RAM緩沖區(qū),用于保護臨時數(shù)據(jù),這種以先進后出原則存取數(shù)據(jù)的RAM緩沖區(qū)稱為堆棧。

向堆棧中存放(壓入)數(shù)據(jù)稱為入棧,從堆棧中取出(彈出)數(shù)據(jù)稱為出棧,堆棧只有這兩種操作。不論數(shù)據(jù)是入棧還是出棧,都是對棧頂?shù)膯卧M行操作,堆棧是向上生成的。

2.特殊功能寄存器(SFR)

所謂特殊功能寄存器,是區(qū)別于通用寄存器的寄存器。特殊功能寄存器的功能和用途有專門的規(guī)定,主要包括用于對片內(nèi)各功能模塊進行管理、控制、監(jiān)視的控制寄存器和狀態(tài)寄存器。

MCS-51子系列單片機共有21個SFR,其名稱和字節(jié)地址如表2.8所示。

52子系列中除了具有51子系列所有的21個SFR之外,還增加了5個,如表2.9所示。

AT89S51單片機除了具有51子系列的21個特殊功能寄存器以外,還增加了5個特殊功能寄存器,分別為AUXR、WDTRST、AUXR1、DP1L和DP1H。

(1)?AUXR輔助寄存器字節(jié)地址為8EH,其各位的定義如下:

(2)?AUXR1輔助寄存器用來選擇雙數(shù)據(jù)指針寄存器,其字節(jié)地址為A2H,各位定義如下:

(3)看門狗復位寄存器WDTRST的字節(jié)地址為A6H,該寄存器為只寫寄存器。當要打開WDT時,用戶必須按順序給該寄存器寫入1EH和0E1H。

(4)?DP1L和DP1H為16位數(shù)據(jù)指針寄存器DPTR1的低字節(jié)和高字節(jié)。

2.3.4外部數(shù)據(jù)存儲器

MCS-51單片機可通過外部擴展電路將RAM芯片和CPU相接,片外最大可以擴展64KB的數(shù)據(jù)存儲器。對片外RAM進行讀、寫時,由P0、P2口提供地址信號,只能采用寄存器間接尋址方式。間接尋址寄存器可使用的寄存器有通用寄存器R0、R1以及數(shù)據(jù)指針寄存器DPTR,當R0或R1作為間接尋址寄存器時,P0將R0或R1的內(nèi)容(8位)作為地址輸出,因此最大尋址空間為256B,地址范圍為00H~0FFH,與片內(nèi)RAM地址重疊,但由于訪問片內(nèi)和片外數(shù)據(jù)存儲器采用的尋址方式和指令不同,因此不會引起混亂。

MCS-51單片機對片外RAM和擴展的I/O端口進行統(tǒng)一編址,即外部擴展的任何I/O接口和外圍設(shè)備地址均占用片外RAM的地址,因此使用時要合理安排地址范圍。CPU對片外RAM和I/O端口操作使用相同的訪問指令和控制線。有關(guān)外部數(shù)據(jù)存儲器和I/O端口的擴展請參閱本書第5章。

2.4并行I/O口及其結(jié)構(gòu)2.4.1P0口的結(jié)構(gòu)與功能1.P0口的結(jié)構(gòu)P0口是一個三態(tài)雙向口,在系統(tǒng)擴展時,作為低8位地址線和數(shù)據(jù)總線的分時復用口;在其他狀態(tài)下可作為通用I/O接口。P0口一位的結(jié)構(gòu)框圖如圖2.5所示,它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器、一個輸出驅(qū)動電路和一個輸出控制電路組成。輸出驅(qū)動電路由一對FET(場效應管)VT1和VT2組成,其工作狀態(tài)受輸出控制電路的控制;輸出控制電路由一個與門電路、一個反相器和一個多路開關(guān)MUX組成。

圖2.5P0口一位的結(jié)構(gòu)框圖

2.P0口的功能

1)?P0口作為一般I/O口使用時

圖2.5中的多路開關(guān)MUX的位置由CPU發(fā)出的控制信號決定。當MCS-51片外無擴展存儲器系統(tǒng)時,P0口作為通用I/O口使用,此時CPU內(nèi)部發(fā)出控制電平“0”封鎖與門,使輸出上拉場效應管VT1截止,同時多路開關(guān)把輸出鎖存器端與輸出場效應管VT2的柵極接通。此時P0即作為一般的I/O口使用。

2)?P0口作為地址/數(shù)據(jù)總線使用時

當MCS-51片外擴展有RAM、I/O接口、ROM時,P0端口作為地址/數(shù)據(jù)總線使用,此時可分為兩種情況。一種是以P0口引腳輸出地址/數(shù)據(jù)信息,這時CPU內(nèi)部發(fā)出高電平的控制信號,打開與門,同時使多路開關(guān)MUX把CPU內(nèi)部地址/數(shù)據(jù)總線反相后與輸出驅(qū)動場效應管VT2的柵極接通。

2.4.2P1口的結(jié)構(gòu)與功能

P1口是一個準雙向口,用作通用I/O口,P1口一位的結(jié)構(gòu)框圖如圖2.6所示。Pl口通常作為通用I/O口使用,所以在電路結(jié)構(gòu)上與P0口有一些不同。首先它不再需要多路轉(zhuǎn)換開關(guān)MUX和控制電路部分;其次是輸出驅(qū)動電路部分只有一個FET,同時內(nèi)部有上拉電阻,此電阻直接與電源相連。當Pl口作為輸出口使用時,能向外部提供拉電流負載,無需再外接上拉電阻。

圖2.6P1口一位的結(jié)構(gòu)框圖

2.4.3P2口的結(jié)構(gòu)與功能

P2口也是一個準雙向I/O口,P2口一位的結(jié)構(gòu)框圖如圖2.7所示。P2口的電路結(jié)構(gòu)與P1口類似,驅(qū)動部分與P1口相同,但P2口具有通用I/O接口或高8位地址總線輸出兩種功能,因此其輸出驅(qū)動結(jié)構(gòu)相比P1口多了一個輸出轉(zhuǎn)換開關(guān)MUX和反相器。

圖2.7P2口一位的結(jié)構(gòu)框圖

2.4.4P3口的結(jié)構(gòu)與功能

P3口也是一個準雙向I/O口,P3口一位的結(jié)構(gòu)框圖如圖2.8所示。由圖可知,P3口每一位的輸出驅(qū)動由與非門、場效應管組成,比P0、P1、P2多了一個緩沖器。除了作為通用的I/O端口外,P3口的每一位均具有第二功能。

圖2.8P3口一位的結(jié)構(gòu)框圖

2.4.5I/O口的應用特性

1.使用原則

MCS-51單片機中的四個I/O接口在實際使用中一般遵循以下用法:P0口一般作為系統(tǒng)擴展地址低8位/數(shù)據(jù)口分時復用;P1口一般作為I/O口使用;P2口作為系統(tǒng)擴展地址高8位和I/O接口擴展用的地址譯碼器的輸入;P3口作為中斷輸入、串行口、定時/計數(shù)以及讀/寫控制信號使用。

2.端口負載能力和接口要求

P0口的輸出級與P1~P3口的輸出級在結(jié)構(gòu)上不相同,因此它們的帶負載能力和接口要求也各不相同。

(1)?P0口的每一位可驅(qū)動8個LSTTL輸入,當作通用I/O口使用時,輸出級是漏極開路電路,故需外接上拉電阻才能有高電平輸出;當作地址/數(shù)據(jù)總線用時,不需要外接上拉電阻,此時不能作通用的I/O口使用。

(2)?P1~P3口的輸出級都接有內(nèi)部上拉電阻,它們的每一位可以驅(qū)動4個LSTTL負載。

(3)?P0~P3口都是準雙向口,作輸入時,必須先向相應的端口鎖存器寫入1。當系統(tǒng)復位時,P0~P3口鎖存器全為1。

2.5時鐘電路與CPU時序

單片機內(nèi)各種操作都是按著節(jié)拍有序地進行的,控制各部件協(xié)調(diào)工作的控制信號也是在一種基本節(jié)拍的指揮下按一定的順序發(fā)出的。產(chǎn)生這種基本節(jié)拍的電路就是振蕩器和時鐘電路。控制信號在時間上的相互關(guān)系稱為CPU時序。

2.5.1時鐘電路

AT89S51單片機內(nèi)部有一個高增益反相放大器,引腳XTAL1、XTAL2分別為該反相放大器的輸入和輸出端。該反相放大器外接定時反饋元件組成振蕩器或通過外接時鐘源的方法,產(chǎn)生時鐘送至單片機內(nèi)部的各部件。時鐘頻率越高,單片機控制器的控制節(jié)拍越快,運算速度就越快。根據(jù)硬件電路的不同,單片機的時鐘電路可分為內(nèi)部時鐘和外部時鐘兩種方式。

1.內(nèi)部時鐘方式

AT89S51單片機內(nèi)部振蕩電路如圖2.9所示,但要形成時鐘還必須外接晶體或陶瓷諧振器(簡稱晶振),外接電路如圖2.10所示。

圖2.9AT89S51單片機內(nèi)部振蕩電路

圖2.10內(nèi)部時鐘方式的外接電路

2.外部時鐘方式

MCS-51單片機的內(nèi)部工作時鐘也可以由外部振蕩器產(chǎn)生,對于HMOS型和CHMOS型MCS-51單片機,它們的時鐘電路接法稍有不同,其電路連接方式如圖2.11所示。圖2.11外部時鐘連接方式

2.5.2CPU時序

單片機中一條指令的執(zhí)行可以分解為若干個基本的微操作,這些微操作是在單片機提供的時鐘脈沖信號作用下,嚴格按時間的先后次序執(zhí)行的,這些次序就是CPU的時序。

1.振蕩周期

振蕩周期是由單片機片內(nèi)或片外振蕩器所產(chǎn)生的,為單片機提供時鐘源信號的周期,其值為1/fosc。

2.時鐘周期

時鐘周期又稱為狀態(tài)周期S,由內(nèi)部時鐘電路產(chǎn)生,兩個振蕩周期為一個時鐘周期。

3.機器周期

機器周期是完成一個規(guī)定操作所需的時間,是單片機執(zhí)行一種基本操作的時間單位。

4.指令周期

執(zhí)行一條指令所占用的時間稱為指令周期,一個指令周期通常由1~4個機器周期組成,依據(jù)指令的不同而不同。指令的執(zhí)行速度和它所占用的機器周期數(shù)直接相關(guān),占用的機器周期數(shù)少則執(zhí)行速度快。

四種時序單位中,振蕩周期和機器周期是單片機內(nèi)計算其他時間值的基本時序單位。下面以單片機外接晶振頻率為12MHz為例,說明各種時序單位之間的關(guān)系。

5.CPU取指令、執(zhí)行指令時序

每一條指令的執(zhí)行都包括取指令和執(zhí)行指令兩個階段。在取指令階段,CPU從程序存儲器中取出指令操作碼和操作數(shù),在指令執(zhí)行階段執(zhí)行這條指令。MCS-51單片機指令系統(tǒng)中,指令字節(jié)長度為1~3個字節(jié),按指令字節(jié)數(shù)和執(zhí)行所需時間不同,可將指令分為單字節(jié)單周期指令、單字節(jié)雙周期指令、單字節(jié)四周期指令、雙字節(jié)單周期指令、雙字節(jié)雙周期指令和三字節(jié)雙周期指令。這些指令在執(zhí)行過程中的時序是不相同的。單周期和雙周期CPU取指/執(zhí)行時序如圖2.12所示。

圖2.12CPU取指/執(zhí)行時序

2.6單片機的工作方式

2.6.1復位方式復位是單片機的硬件初始化操作。復位的作用是使中央處理器CPU以及其他功能部件都恢復到一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。除此之外,當單片機程序運行出錯或系統(tǒng)處于死循環(huán)狀態(tài)等情況時,需要對單片機進行復位以重新啟動機器。復位后,程序計數(shù)器的內(nèi)容為0000H,使單片機從0000H開始執(zhí)行程序,其他特殊功能寄存器的復位狀態(tài)如表2.10所示。

除了看門狗WDT定時器可使單片機復位,MCS-51單片機的復位還可以靠外部電路實現(xiàn),信號由RST引腳輸入,高電平有效。當RST引腳上持續(xù)兩個機器周期以上的高電平時,單片機即完成復位。若使用頻率為6MHz的晶振,則復位信號持續(xù)時間應超過4?μs才能完成復位操作。常用復位電路有上電復位和手動復位(外部復位)兩種,如圖2.13所示。

圖2.13常用復位電路

2.6.2程序執(zhí)行方式

程序執(zhí)行方式是單片機的基本工作方式,即執(zhí)行用戶編寫好的、存放在程序存儲器中的程序。由于單片機復位后PC的值為0000H,因此程序執(zhí)行總是從地址0000H開始。但一般程序并不是真正從0000H開始,為此往往在0000H開始的單元中存放一條無條件轉(zhuǎn)移指令,以便跳轉(zhuǎn)到實際程序的入口去執(zhí)行。

2.6.3單步執(zhí)行方式

單步執(zhí)行方式是通過外來脈沖控制程序的執(zhí)行,每產(chǎn)生一個脈沖即執(zhí)行一條指令。而外來脈沖通常是通過按鍵產(chǎn)生的,因此實際上單步執(zhí)行就是按一次鍵執(zhí)行一條指令。單步執(zhí)行需要外部電路產(chǎn)生控制脈沖信號,通常可借助單片機的外部中斷來實現(xiàn)。假定利用外部中斷1來實現(xiàn)程序的單步執(zhí)行,則應事先做好以下兩項準備工作。

2.6.4低功耗方式

為了適應電源功耗要求低的應用場合,CHMOS型的MCS-51單片機設(shè)置了低功耗工作方式。另外,在掉電保護情況下,由備用電源為單片機進行低功耗供電,因此掉電保護方式實際上也是一種低功耗方式。故低功耗方式有兩種:空閑方式和掉電保護方式。

空閑方式和掉電保護方式是由電源控制寄存器PCON的有關(guān)位來控制的。電源控制寄存器是一個8位寄存器,不可位尋址,其格式如下:

?SMOD:串行口波特率系數(shù)控制位。在方式1、2和3時,串行通信的波特率與SMOD有關(guān)。當SMOD=1時,通信波特率乘2;當SMOD=0時,波特率不變。

?GF1:通用標志1。

?GF0:通用標志0。

?PD:掉電方式控制位,PD=1時,系統(tǒng)進入掉電方式。

?IDL:空閑方式控制位,IDL=1時,系統(tǒng)進入空閑方式。

顯然,要想使單片機進入空閑或掉電工作方式,只要執(zhí)行一條能使IDL或PD位為1的指令就可以了。

1.空閑方式

通過編程將電源控制寄存器PCON的IDL位置1,單片機即進入空閑方式。進入空閑方式后,振蕩器仍然運行,時鐘信號輸出到中斷系統(tǒng)、串行口以及定時/計數(shù)器模塊,但不向CPU提供時鐘,CPU停止工作。

2.掉電保護方式

進入掉電保護方式只需使用指令將PCON的PD位置為1即可。進入掉電保護方式,單片機的一切工作全部停止,只有片內(nèi)RAM和特殊功能寄存器中的內(nèi)容被保存,片內(nèi)其他功能部件都停止工作。

2.6.5掉電保護方式

單片機在系統(tǒng)運行過程中,如發(fā)生掉電故障,將會丟失RAM和寄存器中程序的數(shù)據(jù),其后果有時是很嚴重的。為此,MCS-51單片機設(shè)置有掉電保護措施,進行掉電保護處理。其具體做法是先將有用的信息轉(zhuǎn)存,再啟用備用電源維持供電。

2.接通備用電源

信息轉(zhuǎn)存后還應維持內(nèi)部RAM的供電,才能保護轉(zhuǎn)存的信息不被破壞。為此,系統(tǒng)應設(shè)置備用電源,并能在掉電后立即接通備用電源。備用電源由單片機的RST/VPD引腳接入。為了在掉電時能及時接通備用電源,系統(tǒng)中還需具有備用電源與Vcc的切換電路,如圖2.14所示。圖2.14備用電源與Vcc的切換電路

2.6.6Flash編程和校驗方式

AT89S51單片機內(nèi)部有4KB的Flash存儲器,允許用戶多次編輯和擦除,用戶可以很方便地進行程序和數(shù)據(jù)的修改。AT89S51工作在Flash編程和校驗方式下時,主要包括以下幾個過程:讀片內(nèi)簽名字節(jié)、Flash存儲器編程、程序校驗、程序加密和芯片擦除。

1.讀片內(nèi)簽名字節(jié)

簽名字節(jié)是生產(chǎn)廠家在生產(chǎn)產(chǎn)品時寫入到存儲器中的信息。

1)?Flash存儲器的并行編程

并行編程即通過傳統(tǒng)的EPROM編程器使用高電壓(+12V)和協(xié)調(diào)的控制信號進行編程。AT89S51單片機的代碼是逐一字節(jié)進行編程的。編程前,須按照圖2.15所示的Flash編程硬件邏輯電路圖連接好地址、數(shù)據(jù)和控制信號,編程方法如下:

(1)在地址線上加上要編程單元的地址信號。

(2)在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。

(3)激活相應的控制信號。

(4)將EA/VPP端加上?+12V編程電壓。

(5)每對Flash存儲器寫入一個字節(jié)或每寫入一個程序加密位,加上一個編程脈沖。圖2.15Flash編程硬件邏輯電路圖

2)?Flash存儲器的串行編程

串行編程將RST接至Vcc,通過串行ISP接口進行編程,串行接口包含SCK(串行時鐘)線P1.7、MOSI(輸入)線P1.5和MISO(輸出)線P1.6。將RST拉高后,在其他操作前必須發(fā)出編程使能指令,編程前需將芯片擦除。外部時鐘信號需接至XTAL1端或XTAL1和XTAL2接至晶體振蕩器,最高的串行時鐘(SCK)不超過1/6晶體時鐘。

編程方法如下:

(1)上電次序:將電源加在Vcc和GND引腳,RST置為高電平,如果XTAL1和XTAL2接至晶體或XTAL1接上3~33MHz的時鐘頻率,則需等候10ms。

(2)將編程使能指令發(fā)送到MOSI線,編程時鐘接至SCK,此頻率需小于晶體時鐘頻率的1/16。

(3)編程可選字節(jié)模式或頁模式,寫周期是自身定時的,一般不大于0.5ms(5V電壓時)。

(4)可回讀數(shù)據(jù)進行校驗。

(5)編程結(jié)束應將RST置為低電平以結(jié)束操作。

(6)斷電次序:如果需要斷電,若沒有使用晶體振蕩器,則應先將XTAL1置為低電平,再將RST置為低電平,關(guān)斷Vcc。

3.程序校驗

程序校驗是指讀出編程中寫入的程序代碼,并與程序?qū)懭肭暗拇a進行比較驗證。校驗只能在程序沒有被加密的情況下進行。

4.程序加密

程序加密是通過軟件對加密位進行編程來實現(xiàn)的。AT89S51有三個加密位,分別為LB1、LB2和LB3。通過對這3位進行操作可實現(xiàn)表2.11所示的功能。

習題2

1.51子系列單片機和52子系列單片機有何區(qū)別?

2.MCS-51系列單片機由哪幾部分組成?

3.MCS-51系列單片機控制線有幾根?每一根控制線的作用是什么?

4.中央處理器(CPU)由哪幾部分組成?各組成部分有什么作用?

5.MCS-51系列單片機片內(nèi)RAM的組成是如何劃分的?各有什么功能?

6.AT89S51單片機有多少個特殊功能寄存器?它們分布在何地址范圍?

7.DPTR是什么寄存器?它的作用是什么?它是由哪幾個寄存器組成的?

8.簡述程序狀態(tài)寄存器(PSW)各位的含義。單片機如何確定和改變當前的工作寄存器區(qū)?

9.什么是堆棧?堆棧指針寄存器(SP)的作用是什么?在堆棧中存取數(shù)據(jù)時的原則是什么?

10.在MCS-51型單片機ROM空間中,0003H~002BH有什么用途?用戶應怎樣合理安排?

11.詳細說明P0口、P1口、P2口、P3口的工作原理。

12.當單片機外部擴展RAM和ROM時,P0口、P1口、P2口、P3口各起何作用?

13.P0~P3口作為輸入或輸出口時,各有何要求?

14.P3口有哪些第二功能?實際應用中第二功能是怎么分配的?

15.畫出MCS-51型單片機時鐘電路,并指出石英晶體和電容的取值范圍。

16.什么是機器周期?機器周期和振蕩頻率有何關(guān)系?當振蕩頻率為6MHz時,機器周期是多少?

17.MCS-51型單片機常用的復位方法有幾種?應注意的事項有哪些?畫出電路圖說明其工作原理。

18.看門狗定時器有什么功能?怎樣啟動看門狗定時器?

19.AT89S51型單片機的工作方式有幾種?各種工作方式有什么區(qū)別?

20.怎樣將單片機從空閑模式或掉電模式中喚醒?第3章指令系統(tǒng)及匯編語言程序設(shè)計3.1單片機的匯編語言與指令格式3.2單片機的指令尋址方式3.3單片機的指令系統(tǒng)3.4匯編語言程序設(shè)計習題3

3.1單片機的匯編語言與指令格式

3.1.1匯編語言

在計算機中,指令都是以二進制數(shù)碼表示,并存放在程序存儲器中的。計算機按照程序規(guī)定的次序,依次從程序存儲器中取出要執(zhí)行的指令代碼,送到控制器的指令寄存器中對所取的指令進行分析,由控制器發(fā)出完成操作所需的一系列控制電平,指揮計算機有關(guān)部件完成相應操作。我們稱這種用二進制代碼描述指令功能的、能被計算機直接識別的語言為機器語言(MachineLanguage)。

為了既能保持機器語言的特點,又能方便編寫程序和閱讀程序,人們采用助記符號來代替機器指令代碼,助記符號與機器指令代碼一一對應,我們把這種編程語言稱為匯編語言(AssemblyLanguage)。需要說明的是,匯編語言是面向機器的程序設(shè)計語言,對于每種計算機,都有自己的匯編語言;匯編語言中由于使用了助記符號,因此將由匯編語言編制的程序輸入計算機后,計算機不能像識別機器語言編寫的程序一樣直接識別和執(zhí)行匯編語言程序,必須通過預先放入計算機的“匯編程序”的加工和翻譯,才能把匯編語言程序變成能夠被計算機識別和處理的二進制代碼程序。

3.1.2匯編語言的指令格式

MCS-51匯編語言的指令格式為

[標號:]操作碼助記符[目的操作數(shù)][,源操作數(shù)][;注釋]

其中:

[]:方括號表示該項是可選項,根據(jù)指令要求確定。

標號:用符號標明該指令所在程序存儲器的地址,并以“:”結(jié)尾,設(shè)計者根據(jù)實際需要設(shè)置。

操作碼助記符:用來規(guī)定指令所完成的操作,用英文縮寫的指令功能助記符表示。該項不得省略。

目的操作數(shù):表示操作的對象,是一個目標地址,也是存放操作結(jié)果的地址。目的操作數(shù)與操作碼助記符之間必須用一個以上的空格分隔。

源操作數(shù):表示操作的對象或者是操作數(shù)的來源,可以是一個地址或者一個立即數(shù)。源操作數(shù)與目的操作數(shù)中間用逗號分隔。

注釋:是對指令或者程序段的解釋說明,用以提高程序的可讀性,注釋前必須加分號。

3.1.3匯編語言中常用符號約定

為了便于指令的描述,對指令中常用的符號有如下約定:

(1)?Rn:表示當前工作寄存器中的R0~R7,其中n=0~7。當前工作寄存器組由程序狀態(tài)寄存器PSW的RS1和RS0位決定。

(2)?Ri:表示當前工作寄存器中的R0~R1,其中i取值為0或1。

(3)?direct:表示對內(nèi)部單元直接尋址的8位地址,可以是內(nèi)部RAM區(qū)的某一單元或某一特殊功能寄存器的地址,變化范圍為00H~FFH。

(4)?@:表示間接尋址寄存器及地址寄存器的前綴。

(5)?DPTR:表示16位數(shù)據(jù)指針。

(6)?#data:表示指令中的8位立即數(shù),其中#是立即數(shù)標識符,data表示8位數(shù),取值范圍為00H~FFH。

(7)?#data16:表示指令中的16位立即數(shù),取值范圍為0000H~FFFFH。

(8)?PC:表示16位程序計數(shù)器。

(9)?addr11:表示短轉(zhuǎn)移的11位地址,用于2KB范圍內(nèi)尋址。

(10)?addr16:表示長轉(zhuǎn)移的16位地址,用于64KB范圍內(nèi)尋址。

(11)?rel:表示相對轉(zhuǎn)移的地址偏移量。

(12)?bit:表示位尋址區(qū)的直接尋址位。

(13)?(x):表示x地址單元中的內(nèi)容。

(14)?((x)):表示將x地址單元中的內(nèi)容作為地址單元中的內(nèi)容。

(15)?←:表示操作數(shù)據(jù)的流向,用箭頭后面的內(nèi)容替代前面的內(nèi)容。

(16)?/:表示取反操作。

3.2單片機的指令尋址方式

3.2.1立即數(shù)尋址立即數(shù)尋址是指將操作數(shù)直接寫在指令中,不需要從其他的存儲空間中尋找和獲取。指令中立即數(shù)可以是8位或者16位,并且要在其前冠以“#”前綴,以區(qū)別于地址,主要用于賦值操作。該尋址方式只能用于源操作數(shù)。例如:MOVA,#00H;(A)←00H

該指令執(zhí)行的操作是將立即數(shù)00H送到累加器A中,該指令就是立即數(shù)尋址。#00H中的“H”是說明該立即數(shù)是以十六進制表示的,實際編程時也可以用其他進制來表示。立即數(shù)尋址示意圖如圖3.1所示。圖3.1立即數(shù)尋址示意圖

3.2.2直接尋址

直接尋址是指把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中。在MCS-51單片機中,可以直接尋址的存儲器主要有內(nèi)部RAM區(qū)和特殊功能寄存器(SFR)區(qū)。例如:

MOVA,50H;(A)←(50H)

該指令執(zhí)行的操作是將內(nèi)部RAM中地址為50H單元的內(nèi)容傳送到累加器A中,其操作數(shù)50H就是存放數(shù)據(jù)的單元地址。所以該指令是直接尋址。若50H單元中的內(nèi)容是55H,則該指令執(zhí)行后A的內(nèi)容就是55H。直接尋址示意圖如圖3.2所示。

圖3.2直接尋址示意圖

3.2.3寄存器尋址

寄存器尋址是指將操作數(shù)存放于寄存器中。寄存器包括工作寄存器R0~R7、累加器A、通用寄存器B、數(shù)據(jù)指針寄存器DPTR。例如:

MOVA,R0;(A)←(R0)

該指令執(zhí)行的操作是把R0寄存器中的數(shù)據(jù)傳送到A累加器中,其操作數(shù)存放在R0中,所以尋址方式為寄存器尋址。若R0寄存器單元中的內(nèi)容是55H,則該指令執(zhí)行后A的內(nèi)容就是55H。寄存器尋址示意圖如圖3.3所示。

圖3.3寄存器尋址示意圖

3.2.4寄存器間接尋址

寄存器間接尋址是指將存放操作數(shù)的內(nèi)部RAM地址放在特定的寄存器中,指令中只給出該寄存器。MCS-51指令系統(tǒng)中,能用于寄存器間接尋址的寄存器有R0、R1和DPTR,稱為寄存器間接尋址寄存器,作為寄存器間接尋址時寄存器間接尋址寄存器的前面必須加上符號“@”。例如:

MOVA,@R0;(A)←((R0))

該指令執(zhí)行的操作是將R0的內(nèi)容作為內(nèi)部RAM的地址,再將該地址單元中的內(nèi)容取出來送到累加器A中。若R0寄存器單元中的內(nèi)容是55H,內(nèi)部RAM地址55H中的內(nèi)容是80H,則執(zhí)行該指令后A的內(nèi)容就是80H。寄存器間址尋址示意圖如圖3.4所示。

圖3.4寄存器間址尋址示意圖

3.2.5變址尋址

變址尋址是指將基址寄存器與變址寄存器的內(nèi)容相加,結(jié)果作為操作數(shù)的地址。DPTR或PC是基址寄存器,累加器A是變址寄存器。該類尋址方式主要用于查表操作。例如:

MOVCA,@A+DPTR;(A)←((A)+(DPTR))

該指令執(zhí)行的操作是將累加器A的內(nèi)容和基址寄存器DPTR的內(nèi)容相加,相加的結(jié)果作為操作數(shù)存放的地址(地址在程序存儲器中),再將操作數(shù)取出來送到累加器A中。若累加器A的內(nèi)容為80H,DPTR的內(nèi)容為1000H,程序存儲器單元1080H中的內(nèi)容是55H,則執(zhí)行該指令后A的內(nèi)容就是55H。變址尋址示意圖如圖3.5所示。

圖3.5變址尋址示意圖

3.2.6相對尋址

相對尋址是指程序計數(shù)器(PC)以當前值(以下不做特別提示時均指的是當前值)為基準與指令中的相對偏移量(rel)相加,形成新的有效轉(zhuǎn)移地址(下一個取指令的地址)。該類尋址方式主要用于跳轉(zhuǎn)指令。

要說明的是,該指令執(zhí)行時的程序計數(shù)器當前值是該指令的首地址加上該指令的字節(jié)數(shù);rel是一個帶符號的8位二進制數(shù),以補碼表示,能表示的范圍是-128~+127個字節(jié)單元,若為負數(shù)表示從當前地址向上轉(zhuǎn)移(小于當前地址),反之就向下轉(zhuǎn)移(大于當前地址)。例如:

SJMP08H;(PC)←(PC)+08H

該指令執(zhí)行的操作是將PC當前的值與08H相加,結(jié)果再送回PC中,成為下一條將要執(zhí)行指令的地址。指令SJMP08H是雙字節(jié)指令,其機器碼為80H、08H,若存放在1000H處,當執(zhí)行到該指令時,先從1000H和1001H單元取出指令,PC自動變?yōu)?002H(PC當前值);再把PC的內(nèi)容與操作數(shù)08H相加,形成目標地址100AH,再送回PC,使得程序跳轉(zhuǎn)到100AH單元繼續(xù)執(zhí)行。相對尋址示意圖如圖3.6所示。

圖3.6相對尋址示意圖

3.2.7位尋址

位尋址是指令中直接給出位地址,可以對有位地址的存儲單元進行操作。MCS-51單片機中,操作數(shù)不僅可以按字節(jié)為單位進行操作,也可以按位進行操作。當我們將某一位作為操作數(shù)時,這個操作數(shù)的地址稱為位地址。位尋址區(qū)包括在內(nèi)部RAM中的兩個特殊區(qū)域:一是內(nèi)部RAM的位尋址區(qū),字節(jié)地址范圍是20H~2FH,共16個RAM單元,對應的位地址為00H~7FH,共128位;二是特殊功能寄存器SFR中有11個寄存器可以位尋址,可以參見第2章中有關(guān)位地址的內(nèi)容。

3.3單片機的指令系統(tǒng)

3.3.1數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令是MCS-51單片機匯編語言程序設(shè)計中使用最頻繁的指令,包括內(nèi)部數(shù)據(jù)傳送、外部數(shù)據(jù)傳送、查表、數(shù)據(jù)交換、堆棧操作5種類型共29條指令,使用了8種助記符,分別為MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH和POP。數(shù)據(jù)傳送類指令有立即尋址、直接尋址、寄存器尋址、寄存器間接尋址和變址尋址5種尋址方式。

數(shù)據(jù)傳送操作是指把數(shù)據(jù)從源地址傳送到目的地址,源地址內(nèi)容不變,而目的操作數(shù)修改為源操作數(shù),或者源操作數(shù)與目的操作數(shù)互換,即源操作數(shù)變成目的操作數(shù),目的操作數(shù)變成源操作數(shù),以保存目的操作數(shù)不被丟失。

1.內(nèi)部數(shù)據(jù)傳送指令

內(nèi)部數(shù)據(jù)傳送指令共16條,主要用于內(nèi)部RAM與寄存器之間的數(shù)據(jù)傳送。指令基本格式為

MOV[目的操作數(shù)][,源操作數(shù)]

1)以累加器A為目的地址的傳送指令

此類指令共有四條,如表3.1所示。

例3.1已知執(zhí)行指令前A、R0、內(nèi)部RAM30H和50H中的內(nèi)容分別是20H、30H、80H、10H,請說明每條指令的功能,并指出執(zhí)行后相應單元內(nèi)容和奇偶標志位P的變化。

①?MOVA,R0

②?MOVA,50H

③?MOVA,@R0

④?MOVA,#55H

①該指令完成了(A)←(R0);執(zhí)行后(A)=30H,P=0,其他的內(nèi)容不變。

②該指令完成了(A)←(50H);執(zhí)行后(A)=10H,P=1,其他的內(nèi)容不變。

③該指令完成了(A)←((R0));執(zhí)行后(A)=80H,P=1,其他的內(nèi)容不變。

④該指令完成了(A)←#55H;執(zhí)行后(A)=55H,P=0,其他的內(nèi)容不變。

2)以Rn為目的地址的傳送指令

該類指令共有三條,如表3.2所示。

例3.2設(shè)目前的工作寄存器使用的是0組,R0中的內(nèi)容是55H,R2中的內(nèi)容是50H,請判斷用下面的程序是否可以完成將R2中的內(nèi)容傳送給R0。

①?MOVR0,R2

②?MOVR0,02H

③MOVA,R2

MOVR0,A

①由于在指令中沒有直接Rn和Rn傳送數(shù)據(jù)的指令,故該指令不存在,所以不能完成。

②由已知得R2在RAM中地址是02H,所以該指令是將R2作為內(nèi)部RAM,用直接尋址方式完成了數(shù)據(jù)的傳送。

③指令通過A作為數(shù)據(jù)的中轉(zhuǎn),先將(A)←(R2),再將(R0)←(A),完成了數(shù)據(jù)傳送。

通過上面的例子可以看出,同樣的功能可以用多個不同的程序?qū)崿F(xiàn)。

3)以直接地址為目的地址的傳送指令

該類指令共有五條,如表3.3所示。

例3.3設(shè)內(nèi)部RAM30H和40H中的內(nèi)容分別是18H和88H,請將40H的內(nèi)容傳給30H,分別用匯編語言和機器語言編寫該程序段,該段程序的起始地址為2000H。

解匯編語言程序段為

2000HMOV30H,40H;(30H)(40H)

機器語言程序段為

2000H85

2001H40

2002H30

從該程序段可以看出,匯編語言指令的目的操作數(shù)在前,源操作數(shù)在后,而機器語言剛好相反。

4)以寄存器間接地址為目的地址的傳送指令

該類指令共有三條,如表3.4所示。

例3.4已知R0、R1、內(nèi)部RAM50H和51H的內(nèi)容分別為50H、51H、30H和31H,請指出下列指令執(zhí)行后各目的操作數(shù)內(nèi)容相應的變化。

①?MOVA,51H

????MOV@R0,A

②?MOV@R1,50H

解①?MOVA,51H執(zhí)行后(A)=(51H)=31H;?MOV@R0,A執(zhí)行后((R0))=(50H)=(A)=31H。

②?MOV@R1,50H執(zhí)行后((R1))=(50H)=30H。

5)?16位數(shù)據(jù)傳送指令

該類指令有一條,如表3.5所示。

2.外部數(shù)據(jù)傳送指令

外部數(shù)據(jù)傳送指令共四條,如表3.6所示,主要用于累加器A與外部數(shù)據(jù)存儲器或I/O端口之間的數(shù)據(jù)傳送。在此我們就可以看出內(nèi)、外部RAM的區(qū)別了,內(nèi)部RAM間可以直接進行數(shù)據(jù)的傳遞,而外部RAM間則不能直接進行數(shù)據(jù)傳遞。指令基本格式為

MOVX[目的操作數(shù)][,源操作數(shù)]

例3.5把外部數(shù)據(jù)存儲器2000H單元中的數(shù)據(jù)傳送到外部數(shù)據(jù)存儲器2100H單元中。

解MOVDPTR,#2000H

MOVXA,@DPTR ;先將2000H單元的內(nèi)容傳送到累加器A中

MOVDPTR,#2100H

MOVX@DPTR,A ;再將累加器A中的內(nèi)容傳送到2100H單元中

3.交換類指令

交換類指令共五條,主要用于累加器A與內(nèi)部數(shù)據(jù)存儲單元之間的數(shù)據(jù)傳送。與其他的數(shù)據(jù)傳送指令不同的是數(shù)據(jù)傳送是雙向的,即目的操作數(shù)和源操作數(shù)在指令執(zhí)行時互為目的地址和源地址,指令執(zhí)行后各自的操作數(shù)都修改為另一方的操作數(shù),兩個操作數(shù)都會保留而不會因數(shù)據(jù)的傳送而丟失。

1)字節(jié)交換指令

字節(jié)交換指令共三條,如表3.7所示。

2)半字節(jié)交換指令

半字節(jié)交換指令有一條,如表3.8所示。

3)累加器A中高4位和低4位交換

累加器A中高4位和低4位交換的指令有一條,如表3.9所示。

例3.6設(shè)內(nèi)部數(shù)據(jù)存儲區(qū)2AH、2BH單元中連續(xù)存放有四個BCD碼:a3a2和a1a0,試編寫一程序把這四個BCD碼倒序排序,即a0a1和a2a3。

4.查表指令

查表指令有兩條,如表3.10所示,用于將程序存儲器ROM中的數(shù)送入A中。查表指令之所以被稱為查表指令,是因為常用來查一個已寫好在ROM中的表格。指令基本格式為

MOVC[目的操作數(shù)][,源操作數(shù)]

例3.7有一個數(shù)在R0中,要求用查表的方法確定它的平方值(此數(shù)的取值范圍是0~5),試編寫一程序段完成之。

5.堆棧操作指令

堆棧操作指令有兩條,如表3.11所示。第一條為壓入指令,就是將direct中的內(nèi)容送入堆棧中;第二條為彈出指令,就是將堆棧中的內(nèi)容送回到direct中。

3.3.2算術(shù)運算類指令

1.加法指令

1)普通加法指令

普通加法指令即不帶進位的加法指令,有四條,如表3.12所示。

2)帶進位加法指令

帶進位加法指令有四條,如表3.13所示。

例3.10設(shè)X0、Y0存放在R1和R0中,X1、Y1存放在R3和R2中,試編寫計算雙字節(jié)加法R1R0+R3R2,并將結(jié)果存在R5R4中的程序。

2.減法指令

減法指令共有四條,如表3.14所示。

例3.11設(shè)12H和34H分別存放在R1和R0中,試編寫計算R0減R1,并將結(jié)果存在60H中的程序。

3.?BCD碼調(diào)整指令

BCD碼調(diào)整指令有一條,如表3.15所示。

4.加1指令

加1指令共有五條,如表3.16所示。

5.減1指令

減1指令共有四條,如表3.17所示。

6.乘、除法指令

乘、除法指令共有二條,如表3.18所示。

3.3.3邏輯運算類指令

1.邏輯運算指令

1)邏輯與指令

邏輯與指令共有六條,如表3.19所示。邏輯與指令的功能是將兩個操作數(shù)的內(nèi)容按位進行邏輯“與”操作,并將結(jié)果送回目的操作數(shù)中。邏輯與指令通常用于將一個字節(jié)中的指定位清0,其他位不變。

例3.13若(A)=01011000B,試編寫將其高4位的內(nèi)容保持不變,低4位的內(nèi)容清零的程序。

解由于“與”邏輯是按位進行操作的,因此用立即數(shù)11110000B直接和A“與”即可。

2)邏輯或指令

邏輯或指令共有六條,如表3.20所示。

例3.14若(A)=01011000B,試編寫將其高4位的內(nèi)容保持不變,低4位的內(nèi)容置1的程序。

3)邏輯異或指令

邏輯異或指令共有六條,如表3.21所示。

例3.15若(A)=01011000B,(R1)=00001111B,求執(zhí)行過XRLA,R1指令后A的內(nèi)容。

解由于“異或”邏輯是按位進行操作的,故有

4)累加器A清0和取反指令

累加器A清0和取反指令共有兩條,如表3.22所示。

2.循環(huán)移位指令

循環(huán)移位指令共有四條,如表3.23所示。

例3.16若(A)=10001000B=88D,試用右移指令編寫將A除以4的程序段。

解因為執(zhí)行一次RRC相當于除以2,因此執(zhí)行2次即可完成除4的功能。

3.3.4位操作類指令

位操作指令的操作數(shù)是“位”,其取值只能是0或1,故又稱之為布爾變量操作指令。.

位操作指令主要完成的操作是以位為對象的數(shù)據(jù)傳送、邏輯運算和控制轉(zhuǎn)移等。

這類指令的位地址有四種表達方式:

(1)直接(位)地址方式,如00H。

(2)點操作符號方式,如ACC.4,P2.3。

(3)位名稱方式,如RS0。

(4)用戶定義名方式:如用偽指令bit。

1.位傳送指令

位傳送指令有兩條,如表3.24所示。

2.位復位和位置位指令

位置位和位復位指令共有四條,如表3.25所示。

例3.18如圖3.7所示電路,P1.1端口接了一個發(fā)光二極管,編寫點亮或熄滅該二極管的程序段。

解由圖3.7所示可知,當P1.1是低電平時點亮,高電平時熄滅,所以程序為

CLRP1.1;(P1.1)←0,點亮二極管

SETBP1.1;(P1.1)←1,熄滅二極管圖3.7例3.18電路

3.位運算指令

位運算指令共有六條,如表3.26所示。

例3.19設(shè)X、Y、Z為三個位地址,試完成(Z)=(X)(Y)運算的程序編程。

解異或運算可分解為(Z)=(X)/(Y)+/(X)(Y),程序設(shè)計如下:

4.位轉(zhuǎn)移指令

位轉(zhuǎn)移指令共有三條,如表3.27所示。

例3.20設(shè)下列指令的首地址是1000H,位20H的內(nèi)容為1,試簡述下列指令執(zhí)行中各有關(guān)操作數(shù)的變化情況。

(1)1000HJB20H,08H

(2)1000HJB20H,F(xiàn)DH

(3)1000HJB20H,F(xiàn)AH

5.判斷Cy標志指令

判斷Cy標志的指令有兩條,如表3.28所示。

例3.21將JCrel指令用于例3.12中。

解由已知編寫程序段如下:

3.3.5控制轉(zhuǎn)移類指令

控制轉(zhuǎn)移類指令的本質(zhì)是改變程序計數(shù)器PC的內(nèi)容,從而改變程序的執(zhí)行方向??刂妻D(zhuǎn)移指令分為無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令和調(diào)用、返回指令。指令豐富,共有17條。此類指令一般不影響PSW的狀態(tài)。

1.無條件轉(zhuǎn)移指令

1)長轉(zhuǎn)移指令

長轉(zhuǎn)移指令有一條,如表3.29所示。

例3.22在上電復位后,程序要跳轉(zhuǎn)到用戶程序地址標號為START的入口程序。

解在上電復位后,單片機的第一條指令從存儲器0000H單元開始執(zhí)行,由于0003H~0023H單元對應的是單片機各中斷源的中斷服務入口地址,一般情況下主程序不能占用,因此第一條指令一般都是跳轉(zhuǎn)指令。程序段如下:

2)絕對轉(zhuǎn)移指令

絕對轉(zhuǎn)移指令有一條,如表3.30所示。

例3.23指令2020HAJMP0FFH執(zhí)行后PC的內(nèi)容是什么?

解該指令的首地址為2020H,執(zhí)行后PC的當前值為首地址2020H加2,即2022H,然后由2022H的高5位和11位直接地址0FFH組成新的PC值,即0010000011111111B,也即程序從20FFH開始執(zhí)行。

例3.24指令2FFFHAJMP0FFH執(zhí)行后PC的內(nèi)容是什么?

解該指令的首地址為2FFFH,執(zhí)行后PC的當前值為首地址2FFFH加2,即3001H,然后由3001H的高5位和11位直接地址0FFH組成新的PC值,即0011000011111111B,也即程序從30FFH開始執(zhí)行。

3)相對轉(zhuǎn)移指令

相對轉(zhuǎn)移指令有一條,如表3.31所示。

4)間接尋址的無條件轉(zhuǎn)移指令

間接尋址的無條件轉(zhuǎn)移指令有一條,如表3.32所示。

例3.26累加器A中存放待處理命令,編號為0~7,試編寫程序,完成功能:根據(jù)A內(nèi)命令編號轉(zhuǎn)向相應的命令處理程序。

2.條件轉(zhuǎn)移指令

1)累加器A判0指令

累加器A判0指令有兩條,如表3.33所示。

例3.27累加器A中存放待處理數(shù)據(jù):如果為零,將置內(nèi)部RAM30H為00H,否則將之置為FF。試編寫該數(shù)據(jù)處理程序段。

2)比較轉(zhuǎn)移指令

比較轉(zhuǎn)移指令有四條,如表3.34所示。

例3.28累加器A中存放待處理數(shù)據(jù):如果為大于或等于3CH(十進制的60),就向內(nèi)部RAM30H加1,否則就向內(nèi)部RAM31H加1。試編寫該數(shù)據(jù)處理程序段。

3)減1非零轉(zhuǎn)移指令

減1非零轉(zhuǎn)移指令有兩條,如表3.35所示

溫馨提示

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

評論

0/150

提交評論