單片機(jī)原理及其接口技術(shù)教學(xué)指南及習(xí)題答案_第1頁
單片機(jī)原理及其接口技術(shù)教學(xué)指南及習(xí)題答案_第2頁
單片機(jī)原理及其接口技術(shù)教學(xué)指南及習(xí)題答案_第3頁
單片機(jī)原理及其接口技術(shù)教學(xué)指南及習(xí)題答案_第4頁
單片機(jī)原理及其接口技術(shù)教學(xué)指南及習(xí)題答案_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、高等職業(yè)教育電子信息貫通制類教材(計算機(jī)技術(shù)專業(yè))單片機(jī)原理及應(yīng)用電子教學(xué)資料韓太林 主編Publishing House of Electronics Industry北京 · BEIJING前 言為了配合單片機(jī)原理與應(yīng)用課程的教學(xué),體現(xiàn)教材的編寫特色,更好地為讀者服務(wù),編寫了此教學(xué)資料。教學(xué)資料內(nèi)容有三個部分:第一部分是教學(xué)指南,包括了課程性質(zhì)與任務(wù)、課程內(nèi)容和要求、教學(xué)建議、教學(xué)時間分配。第二部分是習(xí)題答案,給出了每道習(xí)題的詳細(xì)解答過程。第三部分是電子教案,采用PowerPoint課件形式。教師可以根據(jù)不同的教學(xué)要求按需選取和重新組合。限于編著者水平,教學(xué)資料中有錯誤或不妥之處

2、,請讀者給予批評指正。編 者2003年8月單片機(jī)原理及應(yīng)用教學(xué)指南一、課程的性質(zhì)與任務(wù)1.性質(zhì)微計算機(jī)技術(shù)是計算機(jī)技術(shù)的一個重要的分支,它普遍應(yīng)用于工業(yè)控制和過程控制領(lǐng)域。近年來,微計算機(jī)技術(shù)呈現(xiàn)出百花齊放百家爭鳴的態(tài)勢。世界著名的計算機(jī)公司、器件制招商都不同程度的涉及了微處理器的領(lǐng)域。其中inttel公司的MCS-51系列單片微型計算機(jī)最具有代表性。單片微型計算機(jī)(簡稱單片機(jī))是指將CPU、存儲器、時鐘電路、定時器/計數(shù)器以及各種輸入/輸出接口等功能部件制作在一塊大規(guī)模集成電路芯片上,具有一定的規(guī)模和獨(dú)立功能的計算機(jī)。單片機(jī)是微型計算機(jī)發(fā)展和應(yīng)用的一個重要的分支,單片機(jī)的硬件結(jié)構(gòu)和指令系統(tǒng)的

3、功能卻是按工業(yè)控制要求設(shè)計制造的,經(jīng)過幾個階段的發(fā)展,其功能和性能更加完善、卓越,應(yīng)用也更加普及和廣泛。單片機(jī)具有體積小、重量輕、靈活性好、抗干擾能力強(qiáng)、可靠性高、面向控制、易于擴(kuò)展和性價比高等優(yōu)點(diǎn)。單片機(jī)廣泛應(yīng)用與智能儀器儀表、工業(yè)控制、通訊設(shè)備、家用電器和國防科技尖端計數(shù)領(lǐng)域。2.任務(wù)我們力圖使本書有助于讀者采用單片機(jī)為各自所從事的學(xué)科解決實(shí)際的問題。因此,在編寫本書的時候,力求深入淺出、通俗易懂,并注重理論聯(lián)系實(shí)際,著重實(shí)際應(yīng)用。本教材避免冗長乏味的講解,從實(shí)際應(yīng)用出發(fā),采用案例式的教學(xué)模式,強(qiáng)調(diào)了學(xué)習(xí)流程的順暢性,內(nèi)容前后的關(guān)聯(lián)性、循序漸進(jìn)、由淺入深地完成一個個主題式的學(xué)習(xí)。在教材的編

4、寫過程中遵循了職業(yè)教育的教學(xué)規(guī)律,突出了“目標(biāo)教學(xué)、任務(wù)驅(qū)動”這一教學(xué)特點(diǎn),教學(xué)目標(biāo)明確,有的放矢,以引導(dǎo)學(xué)生把握單片機(jī)的精髓所在。二、預(yù)備知識單片微型計算機(jī)作為計算機(jī)課程的一個重要的分支,讀者在學(xué)習(xí)本書之前,應(yīng)具備一定的計算機(jī)基礎(chǔ)知識、電子技術(shù)和數(shù)字電路的基礎(chǔ)知識,這樣通過對本書的學(xué)習(xí)才能獲得更好的效果。三、教學(xué)提要、課程內(nèi)容、教學(xué)要求第1章 計算機(jī)基礎(chǔ)知識本章教學(xué)內(nèi)容本章主要介紹了微型計算機(jī)與單片微型計算機(jī)的基本概念、產(chǎn)生與發(fā)展,單片微型計算機(jī)的特點(diǎn),計算機(jī)常用的數(shù)與代碼等。一、計算機(jī)普遍采用二進(jìn)制數(shù),本章簡要地介紹了二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制、BCD碼、文字符號代碼、計算機(jī)中常見的

5、邏輯關(guān)系以及計算機(jī)中常用的帶符號的二進(jìn)制數(shù)。熟悉和掌握上述內(nèi)容不僅有助于編寫閱讀計算機(jī)指令程序,而且有助于更好的理解、學(xué)習(xí)和掌握計算機(jī)工作過程和原理。二、單片機(jī)發(fā)展及發(fā)展趨勢。本章教學(xué)要求教學(xué)的基本要求,通過本章的學(xué)習(xí)應(yīng)達(dá)到:(1) 了解微型計算機(jī)和單片微型計算機(jī)的發(fā)展歷史,熟悉單片微型計算機(jī)的特點(diǎn)。(2) 掌握計算機(jī)中“數(shù)”的表示方法,各種進(jìn)制的轉(zhuǎn)換和有符號數(shù)的表示方法。(3)了解單片微型計算機(jī)的特點(diǎn),應(yīng)用領(lǐng)域。習(xí)題1答案1-1將下列十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制和十六進(jìn)制。(1)18.625 (2)225 (3)210.875答:(1)18.625=(22.5)O=(12.A)H (2)225=(3

6、41)O=(E1)H (3)210.875=(322.7)O=(D2.E)H1- 2將下列十六進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制和十進(jìn)制。(1)3BH (2) 0AE7.D2H (3)34ABH (4)0FF.EDH答:(1)3BH=(73)O=(59)D (2)0AE7.D2H=(5347.644)O=(2791.820)D (3)34ABH=(32253)O=(13483)D (4)0FF.EDH=(377.732)O=(255.926)D1-3 將下列十進(jìn)制數(shù)轉(zhuǎn)換成BCD碼。(1)34 (2)5678 (3)54.234 (4)125.45答: (1)34=(00110100)BCD (3)54.234

7、=(01010100.001000110100) BCD (4)125.45=(000100100101.01000101) BCD1-4 將下列二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制、八進(jìn)制和十進(jìn)制 (1)10000000B (2)01111111B (3)11100101.101B (4)10101010B答:(1)10000000B=(200)O=(80H)=(128)D (2)01111111B=(177)O=(7FH)=(127)D (3)11100101.101B =(345.5)O=(0E5.AH)=(299.625)D (4)10101010B=(252)O=(AAH)=(170)D1-5 微

8、型計算機(jī)通常有哪些部分組成?各有哪些功能特點(diǎn)?答:控制器:發(fā)布各種操作命令,控制信號等 運(yùn)算器:主要進(jìn)行算術(shù)和邏輯運(yùn)算 存儲器:存儲程序,數(shù)據(jù),中間結(jié)果和運(yùn)算結(jié)果 輸入/輸出接口:原始數(shù)據(jù)和程序等通過輸入接口送到存儲器,而處理結(jié)果,控制信號等通過輸出接口送出。1-6 單片微型計算機(jī)與一般微型計算機(jī)相比較有哪些區(qū)別?有哪些特點(diǎn)?答:單片機(jī)是將CPU,存儲器,輸入/輸出接口,定時器,串行口等功能模塊集成在一個芯片內(nèi)的微處理器。它具有體積小,重量輕,抗干擾能力強(qiáng),環(huán)境要求不高,價格低廉,可靠性高,靈活性好,開發(fā)較容易等特點(diǎn)。 1-7 單片微型計算機(jī)主要應(yīng)用在哪些方面?答:主要應(yīng)用于智能儀器儀表,機(jī)電

9、設(shè)備過程控制,自動檢測,家用電器和數(shù)據(jù)處理等多個方面。1-8 為什么說單片微型計算機(jī)有較高的性能、價格比和抗干擾能力?答:單片機(jī)因?yàn)閷PU,存儲器,I/O接口,定時器,串行口等功能部件集成在一個芯片上,可以方便的進(jìn)行控制。其總線在結(jié)構(gòu)上與外部總線分開,提高了抗干擾能力,應(yīng)用較靈活。第2章 MCS-51單片機(jī)結(jié)構(gòu)本章教學(xué)內(nèi)容本章主要介紹了MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)、存儲器結(jié)構(gòu)和SRF的功能。一、第一部分單片機(jī)內(nèi)部結(jié)構(gòu)分別從CPU的結(jié)構(gòu)、I/O端口的結(jié)構(gòu)、總線的結(jié)構(gòu)、復(fù)位電路及引腳說明等方面做了詳細(xì)的敘述。二、第二部分存儲器結(jié)構(gòu)從程序存儲器和數(shù)據(jù)存儲器的結(jié)構(gòu)出發(fā)做了詳細(xì)的論述。三、第三部分

10、詳細(xì)介紹了ACC、B、PSW、DPTR、T1、T0、SP、SBUF、P0P3等寄存器。本章教學(xué)要求1. 熟悉MCS-51單片機(jī)CPU內(nèi)部組成結(jié)構(gòu)、各功能部件的作用。2. 掌握存儲器的組織結(jié)構(gòu),程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、內(nèi)部特殊功能寄存器(SFR)的配置情況,熟悉程序狀態(tài)寄存器(PSW)各位的含義及變化規(guī)律。3. 掌握MCS-51單片機(jī)引腳功能,包括:P0P3并行I/O口線的定義、控制信號、三總線組成、時鐘電路、復(fù)位電路和CPU時序。4. 掌握P0P3并行I/O口結(jié)構(gòu)和它們的特點(diǎn)。習(xí)題2答案2-1 MCS-51單片機(jī)內(nèi)部包含哪些主要功能部件?它們的作用是什么?答:(1)一個8b

11、it CPU是微處理器的核心,是運(yùn)算和邏輯計算的中心。 (2)片內(nèi)震蕩器及時鐘電路:提供標(biāo)準(zhǔn)時鐘信號,所有動作都依據(jù)此進(jìn)行。 (3)4K ROM程序存貯器:存貯程序及常用表格。 (4)128B RAM 數(shù)據(jù)存貯器:存貯一些中間變量和常數(shù)等。 (5)兩個16bit定時器/計數(shù)器:完全硬件定時器。 (6)32根可編程I/O口線:標(biāo)準(zhǔn)8位雙向(4個)I/O接口,每一條I/O線都能獨(dú)立地作輸入或輸出。 (7)一個可編程全雙工串行口 (8)五個中斷源2-2 MCS-51單片機(jī)的核心器件是什么?它由哪些部分組成?各部分的主要功能是什么?答:核心器件是CPU,由運(yùn)算器和控制器組成。運(yùn)算器主要是進(jìn)行算術(shù)運(yùn)算和

12、邏輯運(yùn)算??刂破魍瓿沙绦驎r序安排,取指,計數(shù),傳輸?shù)炔僮鳌?-3 8031單片機(jī)的EA、ALE和PSEN端的功能是什么?答:(1)EA為內(nèi)部程序存貯器和數(shù)據(jù)存貯器選擇端。高電平時訪問內(nèi)部程序存貯器(PC值小于4KB)。低電平時訪問外部程序存貯器。(2)ALE為允許地址鎖存,把地址的低字節(jié)鎖存到外部鎖存器。(3)PSEN為外部程序存貯讀選通信號輸出端。在外部程序存貯器取指令期間,PSEN在每個機(jī)器周期內(nèi)兩次有效。2-4 程序計數(shù)器PC有多少位?它的主要功能是什么?答:PC有16位,用于存放將要執(zhí)行的指令的地址。2-5 什么叫溢出?溢出和進(jìn)位有什么不同?舉例說明。 答:MCS-51單片機(jī)的運(yùn)算器是

13、8bit,因?yàn)樵谕瓿伤阈g(shù)運(yùn)算時,其可以表示的數(shù)的范圍是有限的,當(dāng)計算結(jié)果超出顯示的位數(shù)時,會產(chǎn)生不正常結(jié)果,這種現(xiàn)象叫溢出。溢出意味著其結(jié)果是不正確的。進(jìn)位只是表示低位向高位有進(jìn)位。 2-6 單片機(jī)復(fù)位后,各特殊功能寄存器中的初始化狀態(tài)是什么?答:復(fù)位后大部分特殊功能寄存器都將置零。其中(SP)(PCON)=0xxxxxxx (其中x為任意數(shù))。2-7 在MCS-51單片機(jī)在21個特殊功能寄存器中,哪些具有位尋址能力? 答:在21個寄存器中其字節(jié)地址可以被8整除的寄存器都可以按位尋址。2-8 MCS-51單片機(jī)存儲器可分為哪幾個空間?如何區(qū)分不同存儲器空間的尋址?答:可以分為程序存貯器,片內(nèi)R

14、AM,片外RAM。程序存貯器和片外RAM必須由必須由寄存器間接尋址片內(nèi)RAM,可以用寄存器尋址,寄存器間接尋址,直接尋址,按位尋址。2-9 程序狀態(tài)寄存器PSW的作用是什么?答:PSW主要表現(xiàn)CPU運(yùn)算之后程序狀態(tài)的信息。2-10 MCS-51單片機(jī)P3口具有哪些功能?答:P3口為雙功能口。第一種功能可以作為輸入輸出口。第二種功能 P3.0RXD P3.1TXD P3.2INT0 P3.3INT1 P3.4T0 P3.5T1 P3.6WE P3.7RD2-11 MCS-51單片機(jī)的片外總線是哪些總線構(gòu)成?答:片外數(shù)據(jù)總線(8根),片外地址總線(16根),片外控制總線(PSEN ,ALE , R

15、D ,WR ,EA)2-12 MCS-51單片機(jī)對外有幾條專用控制線?答:PSEN , RD , WR , ALE 2-13 什么時候需要復(fù)位操作?對復(fù)位信號有何要求答:需要在開機(jī),死機(jī),死循環(huán)等時進(jìn)行復(fù)位操作。在震蕩器運(yùn)行的情況下,要實(shí)現(xiàn)復(fù)位操作,必須使RET引腳至少保持兩個機(jī)器周期(24個震蕩周期)的高電平,才能有效復(fù)位。2-14 單片機(jī)時鐘電路有何用途?起什么作用?答:時鐘電路為單片機(jī)內(nèi)部提供標(biāo)準(zhǔn)時鐘脈沖。時鐘發(fā)生器把震蕩器產(chǎn)生的頻率分為兩分頻,產(chǎn)生一個兩向時鐘信號P1和P2供單片機(jī)使用。單片機(jī)的所有的動作都來源于標(biāo)準(zhǔn)脈沖。第3章 指令系統(tǒng)本章教學(xué)內(nèi)容本章主要講述了MCS-51指令的尋址

16、方式以及各類指令的格式、功能和使用方法。指令主要是用于進(jìn)行數(shù)據(jù)操作的,而尋址方式則解決如何取得操作術(shù)的問題。MCS-51共有7種尋址方式,即:立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、基址加變址尋址、相對尋址和位尋址。尋址方式的不同主要在取操作數(shù)的方法不同或?qū)ぶ贩秶牟煌?,因此總結(jié)尋址方式時,應(yīng)從兩個方面入手進(jìn)行。對于具體的指令,由于條數(shù)比較多,初學(xué)時不宜死記硬背,應(yīng)掌握指令的格式和功能,在學(xué)習(xí)下一章程序設(shè)計時,多加練習(xí),自然就熟練掌握了。本章教學(xué)要求1. 了解MCS-51單片機(jī)的指令格式和尋址方式。理解助記符指令和機(jī)器代碼,指令字節(jié)數(shù),指令執(zhí)行速度。2. 掌握數(shù)據(jù)傳送、堆棧操作指令、

17、數(shù)據(jù)交換指令、算術(shù)運(yùn)算、邏輯運(yùn)算與移位操作、控制轉(zhuǎn)移指令、子程序調(diào)用及返回指令。3. 理解算術(shù)與邏輯運(yùn)算對程序狀態(tài)字PSW的影響,以及控制轉(zhuǎn)移指令的用法。習(xí)題3答案3-1什么是指令系統(tǒng)?MCS51單片機(jī)共有多少種指令?答:MCS-51有5類指令共111條。數(shù)據(jù)傳送類指令29條,算術(shù)運(yùn)算類指令24條,邏輯操作類指令24條,控制轉(zhuǎn)換類指令17條,位操作類指令17條。3-2什么是尋址方式?MCS51單片機(jī)有哪幾種尋址方式?答:計算機(jī)若想完成操作,就要尋找被操作的數(shù)據(jù)或數(shù)據(jù)所在的位置。因此在計算機(jī)指令系統(tǒng)中規(guī)定了若干種尋址操作數(shù)的方式,規(guī)定的尋址操作的方式稱為尋址方式。共7種,寄存器尋址,直接尋址,寄

18、存器間接尋址,立即尋址,變址尋址,位尋址和相對尋址。3-3指出下列指令中畫線的操作數(shù)的尋址方式MOVXA,DPTR; 寄存器間接尋址MOV DPTR,# 0123H; 立即數(shù)尋址MOVCA,A+DPTR; 寄存器間接尋址MUL AB; 寄存器尋址INCDPTR; 寄存器尋址MOV A,30H; 直接尋址MOV A,R1; 寄存器間接尋址SUBBA,R7; 寄存器尋址3-4已知內(nèi)部數(shù)據(jù)存儲器30H和40H單元的內(nèi)容分別為70H和71H,執(zhí)行下列一段程序后,試分析有關(guān)單元內(nèi)容。 MOVR0,#30H; (R0)=30H MOVA,R0; (A)=(R0)=(30H)=70H MOVR0,40H;

19、(R0)=(30H)=(40H)=71H MOV40H,A; (40H)=(A)=70H MOVR0,#60H; (R0)=60H3-5試編寫一段程序,將內(nèi)部數(shù)據(jù)存儲器30H、3lH單元內(nèi)容傳送到外部數(shù)據(jù)存儲器1000H、1001H單元中去。答:MOV DPTR,#1000H MOV A,30H MOVX DPTR,A INC DPTR MOV A,31H MOVX DPTR,A3-6試編寫一段程序?qū)⑼獠繑?shù)據(jù)存儲器40H單元中的內(nèi)容傳送到0l00H單元。答:MOV DPTR,#0040H MOVX A,DPTR MOV DPTR,#0100H MOVX DPTR,A3-7設(shè)(A)5AH,(R1

20、)=30H, (30H)=E0H, CY=1。分析下列各指令執(zhí)行后A的內(nèi)容以及對標(biāo)志位的影響(每條指令都以題中規(guī)定的原始數(shù)據(jù)參加操作)。(1)XCH A,R1 ; (A)=30H,(R1)=5AH(2)XCH A,30H; (A)=0E0H,(30H)=5AH(3)XCH A,R1; (A)=0E0H,(R1)=30H,(30H)=5AH(4)XCHD A,R1; (A)=50H,(R1)=30H,(30H)=EAH(5)SWAP A; (A)=A5H(6)ADD A,R1; (A)=8AH,CY=0,AC=1,OV=0(7)ADD A,30H; (A)=0DAH,CY=1,AC=1,OV=1

21、(8)ADD A,#30H; (A)=8AH,CY=0,AC=1,OV=0(9)ADDC A,30H; (A)=0DBH,CY=1,AC=1,OV=1(10)INC A; (A)=5BH,CY=1(11)SUBB A,30H; (A)=6AH,CY=1,AC=0,OV=1(12)SUBB A,#30H; (A)=2AH,CY=0,AC=0,OV=0(13)DEC A; (A)=59H(14)RL A; (A)=B5H,CY=0(15)RLC A; (A)=B5H,CY=0(16)CPL A; (A)=0A5H(17)CLR A; (A)=00H(18)ANL A,30H; (A)=40H(19

22、)ORL A,R1; (A)=0FAH(20)XRL A,#30H; (A)=0BAH3-8分析下面各段程序中每條指令的執(zhí)行結(jié)果。(1) MOV SP,#50H; (SP)=50HMOV A,#0FH; (A)=OFHMOV B,#0F0H; (B)=0F0HPUSH A; (SP)=51H,(51H)=(A)=0FHPUSH B; (SP)=52H,(52H)=(B)=0F0HPOP B; (B)=(52H)=0F0H,(SP)=51HPOP A; (A)=(51H)=0FH,(SP)=50H(2) MOV A,30H; (A)=30HMOV B,#0AFH; (B)=0AFHMOV R0,

23、#31H; (R0)=31HMOV 30H,#87H; (30H)=87HXCH A,R0; (A)=31H,(R0)=30HXCHD A,R0; (A)=37H,(R0)=30H,(30H)=81HXCH A,B; (A)=0AFH,(B)=37HSWAP A; (A)=0FAH(3) MOV A,#45H; (A)=45HMOV R5,#78H; (R5)=78HADD A,R5; (A)=0CDHDA A; (A)=23HMOV 30H,A; (30H)=23H(4) MOV A ,#83H; (A)=83HMOV R0,#47H; (R0)=47HMOV 47H,#34H; (47H)

24、=34HANL A,#47H; (A)=03HORL 47H,A; (47H)=37H,(A)=03HXRL A,R0; (A)=34H,(R0)=47H,(47H)=37H 3-9將A中的2位壓縮BCD碼分開后送入60H和6IH單元的低位。答:MOV R0,A ANL A,#0F0H SWAP A MOV 60H,A MOV A,R0 ANL A,#0FH MOV 61H,A3-10試編寫一段程序,將R 3R2中的4位BCD碼倒序排列。答:MOV A,R2 SWAP A MOV R0,#30H MOV R0,A MOV A,R3 SWAP A MOV R2,A MOV A,R0 MOV R3

25、,A3-11加法和減法指令影響那些標(biāo)志位?怎么影響的?答:加法和減法執(zhí)行的結(jié)果將影響程序狀態(tài)寄存器PSW的進(jìn)位位CY,溢出位OV,輔助進(jìn)位位AC和奇偶校驗(yàn)位P。 若7位有進(jìn)位或借位,則CY置1,否則清0 若3位有進(jìn)位或借位,則AC置1,否則清0 若6位有進(jìn)(借)位而7位沒有進(jìn)(借)位,或7位有進(jìn)(借)位而6位沒有則置位溢出標(biāo)志位OV,否則清0 若結(jié)果A中1的個數(shù)為奇數(shù)則P=1,否則P=03-12試分析執(zhí)行下列指令后,標(biāo)志位的內(nèi)容。(1)已知(A)0C3H,ADDA,#0AAH(2)已知(A)0C9H,SUBBA,#54H 答:(1)CY=1 , AC=0 , P=1 (2)CY=1 , AC=

26、1 , P=03-13SJMP指令指令和AJMP指令都是兩字節(jié)轉(zhuǎn)移指令,它們有什么區(qū)別?各自的轉(zhuǎn)移范圍是多少?能否用AJMP指令代替程序中的所有的SJMP指令?為什么?答:AJMP是絕對轉(zhuǎn)移指令,指令提供11位目標(biāo)地址,無條件轉(zhuǎn)移的目標(biāo)地址范圍是從下一條指令開始的2KB空間。 SJMP是相對短轉(zhuǎn)移指令,指令控制程序無條件轉(zhuǎn)向指定地址。該指令的rel是一個帶符號的相對偏移量,范圍為-128到+127。不能。因?yàn)锳JMP指令是2KB范圍內(nèi)的無條件跳轉(zhuǎn)指令。AJMP把MCS-51的64KB程序存儲空間劃分為32個區(qū),每個區(qū)為2KB,轉(zhuǎn)移目標(biāo)地址必須與AJMP下一條指令的第一個字節(jié)在同一個2 KB范圍

27、內(nèi),否則,將引起混亂。而SJMP指令給出的相對轉(zhuǎn)移地址范圍為-128到+127,若相對轉(zhuǎn)移在兩區(qū)之間進(jìn)行,則與AJMP的要求相矛盾。3-14若SP25H,PC=2345H,標(biāo)號LABEL所在的地址為3456H,問執(zhí)行長調(diào)用指令“LCALL LABEL”之后,堆棧指針和堆棧內(nèi)容發(fā)生什么變化?PC=?間上述指令改為短調(diào)用指令“ACALL LABEL”是否可以?為什么? 答:25+1=26HSP (26H)=48H26+1=27HSP (27H)=23HPC+1PC因此PC=2348H3-15為什么SJMP指令的rel=0FEH時,間實(shí)現(xiàn)單指令死循環(huán)?若要程序轉(zhuǎn)向目標(biāo)地址為0F75H,而轉(zhuǎn)移指令“S

28、JMP rel”的地址為0F46H,則偏移量rel為多少?答:因?yàn)镾JMP的rel是一個帶符號的相對偏移量,范圍為-128到+127。所以當(dāng)rel=0FEH時,實(shí)現(xiàn)單指令死循環(huán)。Rel=2EH3-16試編寫段程序,將P1口的高5位置位,低3位不變。答:MOV A,#0FBH ORL P1,A3-17試編寫段程序,將累加器A中的負(fù)數(shù)轉(zhuǎn)換為其補(bǔ)碼。答:MOV R0,A ANL A,#80H JNZ LP MOV A,R0LP: MOV A,R0 CPL A INC A3-18試編寫段程序,將R3R2中的雙字節(jié)負(fù)數(shù)轉(zhuǎn)換成補(bǔ)碼。答:MOV A,R3 ANL A,#80H JNZ LP LP : MOV

29、 A,R3 CPL A INC A MOV R3,A MOV A,R2 CPL A INC A MOV R2,A3-19試編寫段程序,將R2中的各位倒序排列后送入R3中。答:MOV A,R2 RLC A MOV 00H,C RLC A MOV 01H,C RLC A MOV 02H,C RLC A MOV 03H,C RLC A MOV 04H,C RLC A MOV 05H,C RLC A MOV 06H,C RLC A MOV 07H,C MOV R3,20H3-20試編寫段程序,將R3中的數(shù)乘4(用移位指令)。答:MOV A,R3 CLR C RLC A CLR C RLC AMOV R

30、3,A第4章 匯編語言程序設(shè)計本章教學(xué)內(nèi)容本章主要介紹了MCS-51單片機(jī)匯編語言的程序格式,匯編方式以及匯編語言程序設(shè)計的基本方法。此外還分別介紹了簡單程序、分支程序、循環(huán)程序、查表程序、子程序等實(shí)例。每一種計算機(jī)都有自己的指令系統(tǒng)和匯編語言,匯編語言是一種面向機(jī)器的語言。匯編語言程序有一定的格式和結(jié)構(gòu),一個程序通常由若干個語句組成,每個語句即為一條指令,占一行。一個語句一般由標(biāo)號、操作碼、操作數(shù)三部分組成。簡單程序又稱順序程序,是一種順序執(zhí)行的程序,在這種程序中,沒有分支、沒有循環(huán)、也沒有子程序調(diào)用。在結(jié)構(gòu)上簡單,能完成一定的功能,是構(gòu)成復(fù)雜程序的基礎(chǔ)。分支程序是一種根據(jù)對某種條件的判斷結(jié)

31、果,決定程序不同走向的一種程序。分支的選擇可通過條件轉(zhuǎn)移指令、轉(zhuǎn)移指令表和轉(zhuǎn)移地址表等方式實(shí)現(xiàn),分支程序從結(jié)構(gòu)上可分為單分支、多分支基本結(jié)構(gòu)。循環(huán)程序是一種按照某種控制規(guī)律重復(fù)執(zhí)行若干次,以便用尖端程序完成大量處理任務(wù)的程序。采用循環(huán)程序不僅可以縮短程序的長度,節(jié)約存儲空間,而且可以提高編程效率和質(zhì)量。循環(huán)程序有計數(shù)控制和條件控制兩種方式,不同控制方式由不同指令實(shí)現(xiàn)。無論是哪一種循環(huán)結(jié)構(gòu),循環(huán)程序通常由循環(huán)初值、循環(huán)體、修改指針、循環(huán)控制和結(jié)束處理五個部分組成。循環(huán)程序又可分為單循環(huán)和多重循環(huán)。查表程序是一種常用的程序,利用查表程序可以十分方便地完成數(shù)據(jù)補(bǔ)償、轉(zhuǎn)換、計數(shù)等各種功能,所謂調(diào)查表,

32、就是根據(jù)變量X,在表格中尋找Y,使Yf(X)。MCS-51單片機(jī)指令系統(tǒng)向用戶提供了兩條極有用的查表指令。查表程序具有機(jī)構(gòu)簡單、執(zhí)行速度快等優(yōu)點(diǎn)。子程序的結(jié)構(gòu)與主程序基本相同, 它可以有簡單結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)組成。子程序是一種具有獨(dú)立功能,且能被其他程序調(diào)用的程序。子程序的特點(diǎn)是執(zhí)行過程中需要由其他程序來調(diào)用,子程序運(yùn)行結(jié)束又需要返回指令使其回到調(diào)用該程序的程序中。在調(diào)用子程序過程中常常需要解決好主程序與子程序之間的參數(shù)傳遞和現(xiàn)場保護(hù)、現(xiàn)場恢復(fù)等問題。正確理解和熟練運(yùn)用單片機(jī)指令系統(tǒng)并根據(jù)實(shí)際應(yīng)用需要編寫出各種匯編語言程序是本課程一個重要的教學(xué)內(nèi)容,同時也是深入學(xué)習(xí),理解和熟悉單片機(jī)硬件

33、只是的一種行之有效的途徑和方法。對于一個設(shè)計題目,可以編寫出各種不同形式的程序,怎樣才能較快地完成單片機(jī)應(yīng)用程序的設(shè)計,除了需要多閱讀各種使用程序,吸取他人經(jīng)驗(yàn),掌握一些基本程序設(shè)計方法,技巧外,還應(yīng)盡可能地收集合適的,現(xiàn)成的程序模塊。有的可直接借用,有的僅作少量修改,經(jīng)過有機(jī)組合,便可高效地完成程序設(shè)計任務(wù)。本章教學(xué)要求1. 正確理解匯編語言和匯編基本概念,掌握程序設(shè)計的一般步驟。2. 了解偽指令的格式和用途。3. 掌握匯編語言程序設(shè)計的語句格式,基本程序結(jié)構(gòu)和設(shè)計方法。4. 掌握程序設(shè)計的幾種基本結(jié)構(gòu)形式。5. 通過算術(shù)運(yùn)算和非數(shù)值操作及子程序中的簡單程序,掌握匯編語言程序設(shè)計方法。習(xí)題4

34、答案4-1、簡單程序它有什么特點(diǎn)?答:簡單程序是一種順序執(zhí)行的程序。在這種程序中沒有分支,沒有循環(huán),沒有子程序調(diào)用。結(jié)構(gòu)簡單,能完成一定功能,是構(gòu)成復(fù)雜程序的基礎(chǔ)。4-2、什么是分支程序?如何判斷分支條件?答:是一種根據(jù)對某種條件的判斷結(jié)果,決定程序不同走向的一種程序。 可以通過條件轉(zhuǎn)移指令,轉(zhuǎn)移指令表和轉(zhuǎn)移地址表進(jìn)行判斷。4-3、循環(huán)程序通常由哪幾個部分組成?在編寫循環(huán)程序時應(yīng)注意什么?答:由循環(huán)初值,循環(huán)體,修改指針,循環(huán)控制和結(jié)束處理五部分組成。 應(yīng)注意(1) 給計數(shù)器賦初值作為循環(huán)次數(shù),每循環(huán)一次都要對其進(jìn)行修改(2) 判斷控制變量是否滿足終值條件,不滿足則轉(zhuǎn)去重復(fù)執(zhí)行循環(huán)工作部分,滿

35、足則順序執(zhí)行,退出循環(huán)。(3) 在多重循環(huán)中只允許外重循環(huán)嵌套內(nèi)重循環(huán)程序,而不允許循環(huán)體互相交叉。另外,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部。4-4、什么情況下需要采用子程序設(shè)計?答:同一個程序中,往往有許多地方都需要執(zhí)行同樣的一項(xiàng)任務(wù),而該任務(wù)又并非規(guī)則情況,不能用循環(huán)程序來實(shí)現(xiàn),這時,可以對這項(xiàng)任務(wù)獨(dú)立地進(jìn)行編寫,形成一個子程序。在原來的主程序中,需要執(zhí)行該任務(wù)時,調(diào)用子程序,執(zhí)行完該任務(wù)后,又返回主程序,繼續(xù)以后的操作。4-5、閱讀下段程序,給出指令語句注釋,已知該程序?yàn)閮蓚€8偽無符號數(shù)求和程序,兩位無符號數(shù)分別存放于片內(nèi)RAM的20H、21H單元中,結(jié)果存在22H單元。 ORG

36、 8000H; 設(shè)置起始地址為8000H,表示后續(xù)目標(biāo)程序從8000 H開始存放 MOV R0,#20H; (R0)=20H MOV A,R0; (A)=(R0)=(20H) INC R0; (R0)=21H ADD A,R0; (A)=(A)+(R0) INC R0; (R0)=22H MOV R0,A; (R0)=(A) END4-6、單片機(jī)晶振頻率為12MHz,一個機(jī)器周期為1微妙,執(zhí)行一條DJNZ指令需要2個機(jī)器周期,閱讀下面程序說明其程序結(jié)構(gòu),并指出該程序完成的功能。 DEL: MOV R7,#200 DEL1: MOV R6,#125 DEL2: DJNZ R6,DEL2 DJNZ

37、 R7,DEL1答:延時0.05秒4-7、閱讀下面程序,說明每條指令語句的作用,指令執(zhí)行后SP=? A=? B=? ORG 4000H MOV SP,#40H MOV A,#30H LCALL 0500H ADD A,#10H MOV B,A L1: SJMP L1 ORG 0500H MOV DPTR,#0009H PUSH DPL PUSH DPH MOV A,#11H MOV B,ARET答:SP=42H,A=11H,B=11H4-8、閱讀下段程序,說明每條指令語句的作用,指令執(zhí)行后,R0? MOV R0,#0AFH; (R0)=0AFH MOV A,R0; (A)=0AFH SWAP

38、A; (A)=0FAH XCH A,R0; (A)=0AFH,(R0)=0FAH4-9、閱讀下段程序,若要用MOV指令替代其中的交換指令而不改變程序的邏輯功能,應(yīng)如何修改?設(shè)20H中存放的是兩個四位二進(jìn)制數(shù)。 MOV R1,#20H XCHD A,R1 ADD A,#01H XCHD A,R1 XCH A,R1 ADD A,#01H XCH A,R1答:MOV R1,#20H MOV A,R1 ADD A,#01H MOV R1,A DEC R14-10、編程將片內(nèi)35H55H單元中內(nèi)容送到以3000H為首的存儲區(qū)中。答:MOV R0,#35H MOV R2,#21H MOV DPTR,#30

39、00H LP:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,LP RET4-11、編程計算片內(nèi)RAM區(qū)50H57H八個單元中數(shù)的算術(shù)平均值,結(jié)果存放于5AH中。答:MOV R0,#50H MOV A,R0 MOV R1,#7 LP: INC R0 CLR C ADDC A,R0 DJNZ R1,LP MOV B,#8 DIV AB MOV R0,#5AH MOV R0,A4-12、編寫對一個多字節(jié)數(shù)作乘10的運(yùn)算子程序。答:MOV A,R1MOV R6,AMOV A,R0MOV R5,AMOV A,R2ADD A,01HMOV 26H,AMOV R7

40、,AMOV A,R4MOV R0,ACLEAR : MOV R0,#00HINC R0DJNZ R7,CLEARMOV A,R4MOV R7,AMOV 27H,R7MOV 20H,R2 LP0:MOV A,R5 MOV R0,AMOV A,0AHMOV B,R1MUL ABACALL ADDMINC R1DJNZ R2,LP0MOV R2,20HMOV A,R6MOV R1,AMOV A,R7INC AMOV R7,AMOV R4,AINC R5DJNZ R3,LP0MOV R4,27HMOV R5,26HRETADDM:MOV 21H,AMOV A,R4MOV R0,AMOV A,21HAD

41、D A,0AHMOV R0,AMOV A,BINC R0ADDC A,R0MOV R0,AINC R0MOV A,R0ADDC A,#00HMOV R0,ADEC R0MOV A,R0MOV R4,ARET4-13、設(shè)有兩個長度均為15的數(shù)組,分別存放在以2000H和2100H為首地址的存儲區(qū)中,試編程求其對應(yīng)項(xiàng)之和,結(jié)果存放到以2200H為首地址的存儲區(qū)中。答:MOV R1,#15MOV R7,#20HMOV R6,#00HMOV R3,#21HMOV R2,#00HLP: MOV DPH,R7MOV DPL,R6MOVX A,DPTRMOV R0,AINC DPTRMOV R7,DPHMO

42、V R6,DPLMOV DPH,R3MOV DPL,R2MOV A,DPTRCLR CADDC A,R0PUSH AINC DPTRMOV R3,DPHMOV R2,DPLDJNZ R1,LPMOV DPTR,220EHMOV R1,#15LP1:POP AMOVX DPTR,ADEC DPTRDJNZ R1,LPA4-14、試編程把以200CH為首地址的連續(xù)50個單元的內(nèi)容按升序排列,存放到以3000H為首地址的存儲區(qū)中。答:ROLE:MOV DPTR,#200CH MOVX A,DPTRMOV R1,AMOV A,#50MOV R5,ACLR 00HDEC R5MOV A,R1LP0: M

43、OV R3,A INC R1CLR CMOV A,R1SUBB A,R3JNC LP1SETB 00HMOV A,R3XCH A,R1DEC R1XCH A,R1INC R1LP1:MOV A,R1 PUSH A DJNZ R5,LP0 JB 00H,ROLEMOV DPTR,#3031H MOV R5,#50LP2:POP A MOVX DPTR,A DEC DPTR DJNZ LP2RET4-15、設(shè)有100個無符號數(shù),連續(xù)存放在以2000H為首地址的存儲區(qū)中,試編程統(tǒng)計奇數(shù)和偶數(shù)的個數(shù)。答:MOV DPTR,#2000H MOV R2,#100H MOV R1,#00H;R1存儲奇數(shù)的個

44、數(shù) MOV R0,#00H;R0存儲偶數(shù)的個數(shù) LP:MOV A,DPTR ANL A,#01H JZ LP1 INC R1 SJMP LP2LP1:INC R0 SJMP LP2LP2:INC DPTRDJNZ R2,LPRET4-16、將片外數(shù)據(jù)存儲器地址為1000H1030H的數(shù)據(jù)塊,全部搬遷到片內(nèi)RAM 30H60H中,并將原數(shù)據(jù)塊區(qū)域全部清零。答:MOV R0,#30H MOV R2,#31H MOV DPTR ,#1000HLP:MOVX A,DPTR MOV R0,A AND A,#00H MOVX DPTR,A INC R0 INC DPTR DJNZ R2,LP RET4-1

45、7、從20H單元開始有一無符號數(shù)據(jù)塊,其長度在20H單元。求出數(shù)據(jù)塊中最小值,并存入21H單元。答:MOV R0,#20H MOV R2,#20HMIN:MOV A,R0 MOV R1,A DEC R2 MOV A,R1LP0:MOV R3,A INC R1 CLR C SUBB A,R1 JC LP1 MOV A,R1 SJMP LP2LP1: MOV A,R3LP2:DJNZ R2,LP0 INC R0 MOV 21H,A4-18、試編寫一雙字節(jié)有符號數(shù)除法子程序。答:說明:入口:R5(高),R4(低),被除數(shù);R3(高),R2(低),非零除數(shù)出口:R5(高),R4(低),商R7(高),R

46、6(低),余數(shù)程序如下:SDDIV:MOV A,R5 ;求被除數(shù)符號 ANL A,#80H MOV RO,A JZ NEG2 NEG1:MOV A,R5 ;被除數(shù)求補(bǔ)CPL AINC AMOV A,R5MOV A,R4CPL AINC AMOV A,R4NEG2:MOV A,R3 ANL A,#80H MOV R1,A JZ SDIV MOV A,R3 ;除數(shù)求補(bǔ) CPL A INC A MOV R3,A MOV A,R2 CPL A INC A MOV R2,ABINDIV:CLR A MOV R7,AMOV R6,AMOV R0,#10H ;除法移位次數(shù) LP:CLR CMOV A,R4R

47、LC AMOV R4,AMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,AMOV A,R7RLC ALP1:MOV A,R6 ;部分余數(shù)減除數(shù)SUBB A,R2MOV R1,AMOV A,R7SUBB A,R3JC SMALLMOV R7,AMOV A,R1MOV R6,AINC R4 ;商加1SJMP LP1SMALL:DJNZ R0,LPMOV 20H,R7 ;四舍五入JB 07H,ADD1CLR CMOV A,R6RLC ASUBB A,R3JC RETURNJNZ ADD1MOV A,R6SUBB A,R2JC SDIVADD1:MOV A,R4 ;商加1 ADD A,#01H MOV R4,A MOV A,R5 ADDC A,#00H MOV R5,ASDIV:MOV A,R0 ;求商的

溫馨提示

  • 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

提交評論