單片機(jī)原理及接口技術(shù)課后習(xí)題答案-李朝青.doc
《單片機(jī)原理及接口技術(shù)課后習(xí)題答案-李朝青.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)原理及接口技術(shù)課后習(xí)題答案-李朝青.doc(33頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第一章 1.單片機(jī)具有哪些特點(diǎn) (1)片內(nèi)存儲(chǔ)容量越來(lái)越大。 (2抗干擾性好,可靠性高。 (3)芯片引線齊全,容易擴(kuò)展。 (4)運(yùn)行速度高,控制功能強(qiáng)。 (5)單片機(jī)內(nèi)部的數(shù)據(jù)信息保存時(shí)間很長(zhǎng),有的芯片可以達(dá)到100年以上。 2. 89C51單片機(jī)內(nèi)包含哪些主要邏輯功能部件? 答:80C51系列單片機(jī)在片內(nèi)集成了以下主要邏輯功能部件: (l)CPU(中央處理器):8位 (2)片內(nèi)RAM:128B (3)特殊功能寄存器:21個(gè) (4)程序存儲(chǔ)器:4KB (5)并行I/O口:8位,4個(gè) (6)串行接口:全雙工,1個(gè) (7)定時(shí)器/計(jì)數(shù)器:16位,2個(gè) (8)片內(nèi)時(shí)鐘電路:1個(gè) 3.什么是微處理器(CPU)、微機(jī)和單片機(jī)? 答:微處理器本身不是計(jì)算機(jī),但它是小型計(jì)算機(jī)或微機(jī)的控制和處理部分。 微機(jī)則是具有完整運(yùn)算及控制功能的計(jì)算機(jī),除了微處理器外還包括存儲(chǔ)器、接口適配器以及輸入輸出設(shè)備等。 單片機(jī)是將微處理器、一定容量的RAM、ROM以及I/O口、定時(shí)器等電路集成在一塊芯片上,構(gòu)成的單片微型計(jì)算機(jī)。 4. 微型計(jì)算機(jī)怎樣執(zhí)行一個(gè)程序? 答:通過(guò)CPU指令,提到內(nèi)存當(dāng)中,再逐一執(zhí)行。 5.什么是嵌入式系統(tǒng)?他有哪些類型?為什么說(shuō)單片機(jī)是典型的嵌入式系統(tǒng)? 答; 嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)和各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物,這一點(diǎn)就決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。 它有嵌入式微處理器、嵌入式微控制器、嵌入式DSP處理器、嵌入式片上系統(tǒng)等。 嵌入式系統(tǒng)的出現(xiàn)最初是基于單片機(jī)的。它從體系結(jié)構(gòu)到指令系統(tǒng)都是按照嵌入式應(yīng)用特點(diǎn)專門設(shè)計(jì)的,能最好的滿足面對(duì)控制對(duì)象,應(yīng)運(yùn)系統(tǒng)的嵌入、現(xiàn)場(chǎng)的可靠運(yùn)行以及非凡的控制品質(zhì)要求。因此,她是典型的嵌入式系統(tǒng)。 第二章 1.89C51單片機(jī)內(nèi)包含哪些主要邏輯功能部件? 答:80C51系列單片機(jī)在片內(nèi)集成了以下主要邏輯功能部件: (l)CPU(中央處理器):8位 (2)片內(nèi)RAM:128B (3)特殊功能寄存器:21個(gè) (4)程序存儲(chǔ)器:4KB (5)并行I/O口:8位,4個(gè) (6)串行接口:全雙工,1個(gè) (7)定時(shí)器/計(jì)數(shù)器:16位,2個(gè) (8)片內(nèi)時(shí)鐘電路:1個(gè) 2.89C51的EA端有何用途? 答:/EA端接高電平時(shí),CPU只訪問(wèn)片內(nèi)flash.com并執(zhí)行內(nèi)部程序,存儲(chǔ)器。/EA端接低電平時(shí),CPU只訪問(wèn)外部ROM,并執(zhí)行片外程序存儲(chǔ)器中的指令。/EA端保持高電平時(shí),CPU執(zhí)行內(nèi)部存儲(chǔ)器中的指令。 3. 89C51的存儲(chǔ)器分哪幾個(gè)空間?如何區(qū)別不同空間的尋址? 答:ROM(片內(nèi)ROM和片外ROM統(tǒng)一編址)(使用MOVC)(數(shù)據(jù)傳送指令)(16bits地址)(64KB) 片外RAM(MOVX)(16bits地址)(64KB) 片內(nèi)RAM(MOV)(8bits地址)(256B) 4. 簡(jiǎn)述89C51片內(nèi)RAM的空間分配。 答:片內(nèi)RAM有256B 低128B是真正的RAM區(qū) 高128B是SFR(特殊功能寄存器)區(qū) 5. 簡(jiǎn)述布爾處理存儲(chǔ)器的空間分配,片內(nèi)RAM中包含哪些可位尋址單元。 答:片內(nèi)RAM區(qū)從00H~FFH(256B) 其中20H~2FH(字節(jié)地址)是位尋址區(qū) 對(duì)應(yīng)的位地址是00H~7FH 6. 如何簡(jiǎn)捷地判斷89C51正在工作? 答:用示波器觀察8051的XTAL2端是否有脈沖信號(hào)輸出(判斷震蕩電路工作是否正常?) ALE(地址鎖存允許)(Address Latch Enable)輸出是fosc的6分頻 用示波器觀察ALE是否有脈沖輸出(判斷 8051芯片的好壞?) 觀察PSEN(判斷8051能夠到EPROM 或ROM中讀取指令碼?) 因?yàn)?PSEN接外部EPROM(ROM)的/OE端子 OE=Output Enable(輸出允許) 7. 89C51如何確定和改變當(dāng)前工作寄存器組? 答:PSW(程序狀態(tài)字)(Program Status Word)中的RS1和RS0 可以給出4中組合 用來(lái)從4組工作寄存器組中進(jìn)行選擇 PSW屬于SFR(Special Function Register)(特殊功能寄存器) 8. 89C51 P0口用作通用I/O口輸入時(shí),若通過(guò)TTL“OC”門輸入數(shù)據(jù),應(yīng)注意什么?為什么? 答: 9. 讀端口鎖存器和“讀引腳”有何不同?各使用哪種指令? 答:讀鎖存器(ANL P0,A)就是相當(dāng)于從存儲(chǔ)器中拿數(shù)據(jù),而讀引腳是從外部拿數(shù)據(jù)(如MOV A,P1 這條指令就是讀引腳的,意思就是把端口p1輸入數(shù)據(jù)送給A) 傳送類MOV,判位轉(zhuǎn)移JB、JNB、這些都屬于讀引腳,平時(shí)實(shí)驗(yàn)時(shí)經(jīng)常用這些指令于外部通信,判斷外部鍵盤等;字節(jié)交換XCH、XCHD算術(shù)及邏輯運(yùn)算 ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制轉(zhuǎn)移CJNE、DJNZ都屬于讀鎖存器。 10. 89C51 P0~P3口結(jié)構(gòu)有何不同?用作通用I/O口輸入數(shù)據(jù)時(shí),應(yīng)注意什么? 答:P0口內(nèi)部沒(méi)有上拉電阻,可以用做16位地址的低8位; P3有第二功能; P2口可以用做16位地址的高8位; 需要上拉電阻。OC門電路無(wú)法輸出高低電平,只有靠上拉電阻才能實(shí)現(xiàn) 11. 89C51單片機(jī)的EA信號(hào)有何功能?在使用8031時(shí),EA信號(hào)引腳應(yīng)如何處理? 答:(1)80C51單片機(jī)的EA信號(hào)的功能 EA為片外程序存儲(chǔ)器訪問(wèn)允許信號(hào),低電平有效;在編程時(shí),其上施加21V的編程電壓 EA引腳接高電平時(shí),程序從片內(nèi)程序存儲(chǔ)器開(kāi)始執(zhí)行,即訪問(wèn)片內(nèi)存儲(chǔ)器;EA引腳接低電平時(shí),迫使系統(tǒng)全部執(zhí)行片外程序存儲(chǔ)器程序。 (2)在使用80C31時(shí),EA信號(hào)引腳的處理方法 因?yàn)?0C31沒(méi)有片內(nèi)的程序存儲(chǔ)器,所以在使用它時(shí)必定要有外部的程序存儲(chǔ)器,EA 信號(hào)引腳應(yīng)接低電平。 12. 89C51單片機(jī)有哪些信號(hào)需要芯片引腳以第2功能的方式提供? 答: 第一功能 第二功能 串行口: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) 中斷: P3.2 INT0外部中斷0 P3.3 INT1外部中斷1 定時(shí)器/計(jì)數(shù)器(T0、T1): P3.4 T0(定時(shí)器/計(jì)數(shù)器0的外部輸入) P3.5 T1(定時(shí)器/計(jì)數(shù)器1的外部輸入) 數(shù)據(jù)存儲(chǔ)器選通: P3.6 WR(外部存儲(chǔ)器寫選通,低電平有效,輸出) P3.7 RD(外部存儲(chǔ)器讀選通,低電平有效,輸出) 定時(shí)器/計(jì)數(shù)器(T2): P1.0 T2(定時(shí)器T2的計(jì)數(shù)端) P1.1 T2EX(定時(shí)器T2的外部輸入端) 13. 內(nèi)部RAM低128字節(jié)單元?jiǎng)澐譃槟?個(gè)主要部分?各部分主要功能是什么? 答:片內(nèi)RAM低128單元的劃分及主要功能: (l)工作寄存器組(00H~lFH) 這是一個(gè)用寄存器直接尋址的區(qū)域,內(nèi)部數(shù)據(jù)RAM區(qū)的0~31(00H~lFH),共32個(gè)單 元。它是4個(gè)通用工作寄存器組,每個(gè)組包含8個(gè)8位寄存器,編號(hào)為R0~R7。 (2)位尋址區(qū)(20H~2FH) 從內(nèi)部數(shù)據(jù)RAM區(qū)的32~47(20H~2FH)的16個(gè)字節(jié)單元,共包含128位,是可位尋 址的RAM區(qū)。這16個(gè)字節(jié)單元,既可進(jìn)行字節(jié)尋址,又可實(shí)現(xiàn)位尋址。 (3)字節(jié)尋址區(qū)(30H~7FH) 從內(nèi)部數(shù)據(jù)RAM區(qū)的48~127(30H~7FH),共80個(gè)字節(jié)單元,可以采用間接字節(jié)尋址 的方法訪問(wèn)。 14. 使單片機(jī)復(fù)位有幾種方法?復(fù)位后機(jī)器的初始狀態(tài)如何? 答:(1)單片機(jī)復(fù)位方法 單片機(jī)復(fù)位方法有:上電自動(dòng)復(fù)位、按鍵電平復(fù)位和外部脈沖三種方式,如題圖2-1所示。 題圖2-1 (2)復(fù)位后的初始狀態(tài) 復(fù)位后機(jī)器的初始狀態(tài),即各寄存器的狀態(tài):PC之外,復(fù)位操作還對(duì)其他一些特殊功能寄存器有影響,它們的復(fù)位狀態(tài)如題表2-1所例 15. 開(kāi)機(jī)復(fù)位后,CPU使用的是哪組工作寄存器?它們的地址是什么?CPU如何確定和改變當(dāng)前工作寄存器組? 答:一般開(kāi)機(jī)復(fù)位后都是選擇第一組通用工作寄存器作為工作寄存器的,一共有4組,分別為0.1.2.3連續(xù)位于00h到1FH地址, 然后在機(jī)器中有個(gè)程序狀態(tài)字PSW,它的第四和第三位RS1,RS0是用來(lái)選擇工作寄存器組的,可能不同機(jī)器地址稍有不同。他們倆的值和寄存器組的關(guān)系: RS1/RS0 0/0 0/1 1/0 1/1 使用的工作寄存器 0 1 2 3 地址 00-07 08-0F 10-17 18-1F 寫程序的時(shí)候就是通過(guò)定義程序狀態(tài)字來(lái)選擇使用不同的寄存器組。也可以直接對(duì)RS1和RS0賦值。 (最后一問(wèn)同題7) 16. 程序狀態(tài)寄存器PSW的作用是什么?常用標(biāo)志有哪些位?作用是什么? 答:PSW是一個(gè)SFR(特殊功能寄存器) 位于片內(nèi)RAM的高128B 具體地址D0H(00H~FFH)(片內(nèi)RAM的編址)(8bits編址方法) PSW=Program Status Word(程序狀態(tài)字) PSW的常用標(biāo)志位有哪些? CY=Carry(進(jìn)位標(biāo)志位) AC=Auxiliary Carry(輔助進(jìn)位標(biāo)志位)(半進(jìn)位標(biāo)志位) F0用戶標(biāo)志位 RS1,RS0,用來(lái)選擇當(dāng)前工作寄存器組(R0~R7)(4選1) OV=Overflow(溢出標(biāo)志位) P=Parity(奇偶校驗(yàn)位) 17. 位地址7CH與字節(jié)地址7CH如何區(qū)別?位地址7CH具體在片內(nèi)RAM中的什么位置? 答:用不同的尋址方式來(lái)加以區(qū)分,即訪問(wèn)128個(gè)位地址用位尋址方式,訪問(wèn)低128字節(jié)單元用字節(jié)尋址和間接尋址。 具體地址為2F的第五位,即為7C。 18. 89C51單片機(jī)的時(shí)鐘周期與振蕩周期之間有什么關(guān)系?什么叫機(jī)器周期和指令周期? 答:時(shí)鐘信號(hào)的周期稱為機(jī)器狀態(tài)周期,是振蕩周期的兩倍。一個(gè)機(jī)器周期是指CPU訪問(wèn)存儲(chǔ)器一次所需的時(shí)間。指令周期是執(zhí)行一條指令所需的時(shí)間。 19. 一個(gè)機(jī)器周期的時(shí)序如何劃分? 答:一個(gè)機(jī)器周期=12個(gè)震蕩周期=6個(gè)時(shí)鐘周期(狀態(tài)周期) S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1,S4P2,S5P1,S5P2,S6P1,S6P2 其中s=state(狀態(tài)),p=phase(相位) 20. 什么叫堆棧?堆棧指針SP的作用是什么?89C51單片機(jī)堆棧的容量不能超過(guò)多少字節(jié)? 答:堆棧都是一種數(shù)據(jù)項(xiàng)按序排列的數(shù)據(jù)結(jié)構(gòu),只能在一端(稱為棧頂(top))對(duì)數(shù)據(jù)項(xiàng)進(jìn)行插入和刪除。要點(diǎn):堆:順序隨意棧:后進(jìn)先出(Last-In/First-Out) 在調(diào)用子程序時(shí)需要保存調(diào)用函數(shù)的CPU寄存器PC指針,PC指針是被CALL指令自動(dòng)壓入SP所指向的片內(nèi)存儲(chǔ)器,CPU寄存器要由用戶用PUSH指令自行保存,因此SP的作用就是一個(gè)指針,當(dāng)進(jìn)行中斷調(diào)用,子函數(shù)調(diào)用時(shí)將現(xiàn)場(chǎng)數(shù)據(jù)壓入SP所指向的存儲(chǔ)器,SP自動(dòng)增加1或2,當(dāng)中斷結(jié)束RETI,調(diào)用返回RET,POP時(shí)將SP數(shù)據(jù)彈出,SP自動(dòng)減1或,2 8051最大為128字節(jié)的片內(nèi)存儲(chǔ)器,0X20以上理論都可以做堆棧用96字節(jié),8052為256字節(jié)224字節(jié)可用,但這樣便沒(méi)有其它空間可用于數(shù)據(jù)存儲(chǔ)現(xiàn)在的單片機(jī)的程序一般都能用C51來(lái),不用關(guān)心堆棧大小與SP寄存器 21. 89C51有幾種低功耗方式?如何實(shí)現(xiàn)? 答:空閑方式和掉電方式 空閑方式和掉電方式是通過(guò)對(duì)SFR中的PCON(地址87H)相應(yīng)位置1而啟動(dòng)的。 當(dāng)CPU執(zhí)行完置IDL=1(PCON.1)的指令后,系統(tǒng)進(jìn)入空閑工作方式。這時(shí),內(nèi)部時(shí)鐘不向CPU提供,而只供給中斷、串行口、定時(shí)器部分。CPU的內(nèi)部狀態(tài)維持,即包括堆棧指針SP、程序計(jì)數(shù)器PC、程序狀態(tài)字PSW、累加器ACC所有的內(nèi)容保持不變,端口狀態(tài)也保持不變。ALE和PSEN保持邏輯高電平。 當(dāng)CPU執(zhí)行一條置PCON.1位(PD)為1的指令后,系統(tǒng)進(jìn)入掉電工作方式。在這種工作方式下,內(nèi)部振蕩器停止工作。由于沒(méi)有振蕩時(shí)鐘,因此,所有的功能部件都停止工作。但內(nèi)部RAM區(qū)和特殊功能寄存器的內(nèi)容被保留,而端口的輸出狀態(tài)值都保存在對(duì)應(yīng)的SFR中,ALE和PSEN都為低電平。 22. PC與DPTR各有哪些特點(diǎn)?有何異同? 答:(1)程序計(jì)數(shù)器PC作為不可尋址寄存器的特點(diǎn) 程序計(jì)數(shù)器PC是中央控制器申最基本的寄存器,是一個(gè)獨(dú)立的計(jì)數(shù)器,存放著下一條將程序存儲(chǔ)器中取出的指令的地址。 程序計(jì)數(shù)器PC變化的軌跡決定程序的流程。程序計(jì)數(shù)器的寬度決定了程序存儲(chǔ)器可以 尋址的范圍。 程序計(jì)數(shù)器PC的基本工作方式有: ①程序計(jì)數(shù)器PC自動(dòng)加1。這是最基本的工作方式,也是這個(gè)專用寄存器被稱為計(jì)數(shù) 器的原因。 ②執(zhí)行條件或無(wú)條件轉(zhuǎn)移指令時(shí),程序計(jì)數(shù)器將被置入新的數(shù)值,程序的流向發(fā)生變化。 變化的方式有下列幾種:帶符號(hào)的相對(duì)跳轉(zhuǎn)SJMP、短跳轉(zhuǎn)AJMP、長(zhǎng)跳轉(zhuǎn)LJMP及JMP @A+DPTR等。 ③在執(zhí)行調(diào)用指令或響應(yīng)中斷時(shí): ●PC的現(xiàn)行值,即下一條將要執(zhí)行的指令的地址送入堆棧,加以保護(hù); ●將子程序的入口地址或者中斷矢量地址送入PC,程序流向發(fā)生變化,執(zhí)行子程序或中斷服務(wù)程序; ●子程序或中斷服務(wù)程序執(zhí)行完畢,遇到返回指令RET或RETI時(shí),將棧頂?shù)膬?nèi)容送到PC寄存器中,程序流程又返回到原來(lái)的地方,繼續(xù)執(zhí)行。 (2)地址指針DPTR的特點(diǎn) 地址指針DPTR的特點(diǎn)是,它作為片外數(shù)據(jù)存儲(chǔ)器尋址用的地址寄存器(間接尋址)。 (3)地址指針DPTR與程序計(jì)數(shù)器PC的異同 ①相同之處: ●兩者都是與地址有關(guān)的、16位的寄存器。其中,PC與程序存儲(chǔ)器的地址有關(guān),而 DPTR與數(shù)據(jù)存儲(chǔ)器的地址有關(guān)。 ●作為地址寄存器使用時(shí),PC與DPTR都是通過(guò)P0和P2口(作為16位地址總線)輸 出的。但是,PC的輸出與ALE及PSEN有關(guān);DPTR的輸出,則與ALE、RD及WR相聯(lián)系。 ②不同之處: ●PC只能作為16位寄存器對(duì)待,由于有自動(dòng)加1的功能,故又稱為計(jì)數(shù)器; DPTR可以作為16位寄存器對(duì)待,也可以作為兩個(gè)8位寄存器對(duì)待。 ●PC是不可以訪問(wèn)的,有自己獨(dú)特的變化方式,它的變化軌跡決定了程序執(zhí)行的流程; DPTR是可以訪問(wèn)的,如MOV DPTR,#XXXXH,INC DPTP。 23. 89C51端口鎖存器的“讀—修改—寫”操作與“讀引腳”操作有何區(qū)別? 答:指令系統(tǒng)中有些指令讀鎖存器的值, 有些指令則讀引腳上的值。讀鎖存器指令是從鎖存器中讀取一個(gè)值并進(jìn)行處理, 把處理后的值(原值或已修改后的值)重新寫入鎖存器中。這類指令稱為讀-修改-寫指令。 對(duì)于讀-修改-寫指令。直接讀鎖存器而不是讀端口引腳, 是因?yàn)閺囊_上讀出的數(shù)據(jù)不一定能真正反映鎖存器的狀態(tài)。 單片機(jī)原理及接口技術(shù)課后習(xí)題答案 第三章 1、 指令:CPU根據(jù)人的意圖來(lái)執(zhí)行某種操作的命令 指令系統(tǒng):一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部指令集合 機(jī)器語(yǔ)言:用二進(jìn)制編碼表示,計(jì)算機(jī)能直接識(shí)別和執(zhí)行的語(yǔ)言 匯編語(yǔ)言:用助記符、符號(hào)和數(shù)字來(lái)表示指令的程序語(yǔ)言 高級(jí)語(yǔ)言:獨(dú)立于機(jī)器的,在編程時(shí)不需要對(duì)機(jī)器結(jié)構(gòu)及其指令系統(tǒng)有深入了解的通用性語(yǔ)言 2、 見(jiàn)第1題 3、簡(jiǎn)述8951的匯編指令格式。答: 操作碼 [目的操作數(shù)] [,源操作數(shù)] 4、簡(jiǎn)述8951的尋址方式和所能涉及的尋址空間。 尋址方式 尋址空間 立即數(shù)尋址 程序存儲(chǔ)器ROM 直接尋址 片內(nèi)RAM低128B、特殊功能寄存器 寄存器尋址 工作寄存器R0-R7、A、B、C、DPTR 寄存器間接尋址 片內(nèi)RAM低128B、片外RAM 變址尋址 程序存儲(chǔ)器(@A+PC,@A+DPTR) 相對(duì)尋址 程序存儲(chǔ)器256B范圍(PC+偏移量) 位尋址 片內(nèi)RAM的20H-2FH字節(jié)地址、部分SFR 5、訪問(wèn)特殊功能寄存器和外數(shù)據(jù)存儲(chǔ)器,應(yīng)采用那些尋址方式? 答: SFR:直接尋址,位尋址,寄存器尋址;片外RAM:寄存器間接尋址 6、8951中已知(30H)=38H,請(qǐng)分析以下各是什么指令,說(shuō)明源操作數(shù)的尋址方式以及執(zhí)行結(jié)果。 MOV A,40H ;直接尋址(40H)→A MOV R0,A;寄存器尋址(A)→R0 MOV P1,#0F0H ;立即數(shù)尋址0F0→P1 MOV @R0,30H;直接尋址(30H) →(R0) MOV DPTR,#3848H;立即數(shù)尋址 3848H→DPTR MOV 40H,38H;直接尋址 (38H) →40H MOV R0,30H;直接尋址 (30H) →R0 MOV P0,R0;寄存器尋址( R0 )→P0 MOV 18H,#30H ;立即數(shù)尋址30H→18H MOV A,@R0 ;寄存器間接尋址 ((R0)) →A MOV P2,P1 ;直接尋址 (P1)→P2 最后結(jié)果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意:→左邊是內(nèi)容,右邊是單元 7、8951片內(nèi)高128字節(jié)的地址尋址要注意什么/? 答: 用直接尋址,位尋址,寄存器尋址 8、指出些列指令的本質(zhì)? MOV A,DATA ;直接尋址 2字節(jié)1周期 MOV A,#DATA ;立即數(shù)尋址 2字節(jié)1周期 MOV DATA1,DATA2 ;直接尋址 3字節(jié)2周期 MOV 74H,#78H ;立即數(shù)尋址 3字節(jié)2周期 如果想查某一指令的機(jī)器碼,字節(jié)數(shù)或周期數(shù)可查閱書本后面的附錄A 9、設(shè)R0的內(nèi)容分為32H,A的內(nèi)容為48H,。。。。請(qǐng)指出在執(zhí)行下列程序段后上述各單元內(nèi)容的變化? MOV A,@R0 ;((R0))=80H→A MOV @R0,40H ;(40H)=08H→(R0) MOV 40H,A ;(A)=80→40H MOV R0,#35H ;35H→R0 最后結(jié)果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H 10、如何訪問(wèn)SFR,可采用那些尋址方式? 答:用直接尋址,位尋址,寄存器尋址 11、如何訪問(wèn)片外RAM,可使用那些尋址方式? 答:只能采用寄存器間接尋址(用MOVX指令) 12、如何訪問(wèn)片內(nèi)RAM,可使用那些尋址方式? 答:低128字節(jié):直接尋址,位尋址,寄存器間接尋址,寄存器尋址(R0~R7) 高128字節(jié):直接尋址,位尋址,寄存器尋址 13、如何訪問(wèn)片內(nèi)外程序存儲(chǔ)器,可使用那些尋址方式? 答:采用變址尋址(用MOVC指令) 14、說(shuō)明十進(jìn)制調(diào)整的原因和方法? 答:壓縮BCD碼在進(jìn)行加法運(yùn)算時(shí)應(yīng)逢十進(jìn)一,而計(jì)算機(jī)只將其當(dāng)作十六進(jìn)制數(shù)處理,此時(shí)得到的結(jié)果不正確。用DA A指令調(diào)整(加06H,60H,66H) 15、說(shuō)明8951布爾機(jī)處理機(jī)功能? 答:用來(lái)進(jìn)行位操作 16、ANL A,#17H ;83H∧17H=03H→A ORL 17H,A ;34H∨03H=37H→17H XRL A,@R0 ;03H⊕37H=34H CPL A ;34H求反等于CBH 所以(A)=CBH 17、(1)SETB ACC.0或SETB E0H ;E0H是累加器的地址 (2)CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3)CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3 18、MOV 27H,R7 MOV 26H,R6 MOV 25H,R5 MOV 24H,R4 MOV 23H,R3 MOV 22H,R2 MOV 21H,R1 MOV 20H,R0 19、MOV 2FH,20 MOV 2EH,21 MOV 2DH,22 20、編程,進(jìn)行兩個(gè)16位數(shù)的減法:6F5DH-13B4H,結(jié)果存入內(nèi)部RAM的30和31H單元,30H存低八位。 CLR C MOV A,#5DH ;被減數(shù)的低8位→A MOV R2,#B4H ;減數(shù)低8位→R2 SUBB A,R2 ;被減數(shù)減去減數(shù),差→A MOV 30H,A ;低8位結(jié)果→30H MOV A,#6FH ;被減數(shù)的高8位→A MOV R2,#13H ;減數(shù)高8位→R2 SUBB A,R2 ;被減數(shù)減去減數(shù),差→A MOV 31H,A ;高8位結(jié)果→30H 注意:如果在你的程序中用到了進(jìn)位位,在程序開(kāi)始的時(shí)候要記得清0進(jìn)位位 21、編程,若累加器A滿足下列條件,則程序轉(zhuǎn)至LABEL存儲(chǔ)單元,設(shè)A中為無(wú)符號(hào)數(shù)。 (1)A≥10 CJNE A,#0AH,L1 ;(A)與10比較,不等轉(zhuǎn)L1 LJMP LABEL ;相等轉(zhuǎn)LABEL L1:JNC LABEL ;(A)大于10,轉(zhuǎn)LABEL 或者: CLR C SUBB A,#0AH JNC LABEL (2)A>10 CJNE A,#0AH,L1 ;(A)與10比較,不等轉(zhuǎn)L1 RET ;相等結(jié)束 L1:JNC LABEL ;(A)大于10,轉(zhuǎn)LABEL RET ;(A)小于10,結(jié)束 或者: CLR C SUBB A,#0AH JNC L1 RET L1:JNZ LABEL RET (3)A≤10 CJNE A,#0AH,L1 ;(A)與10比較,不等轉(zhuǎn)L1 L2:LJMP LABEL ;相等轉(zhuǎn)LABEL L1:JC L2 ;(A)小于10,轉(zhuǎn)L2 RET 或者: CLR C SUBB A,#0AH JC LABEL JZ LABEL RET 22、(SP)=23H,(PC)=3412H 參看書上80頁(yè) 23、(SP)=27H,(26H)=48H,(27H)=23H,(PC)=3456H 參看書上79頁(yè) 24、不能。ACALL是短轉(zhuǎn)指令,可調(diào)用的地址范圍是2KB。 在看這個(gè)題的時(shí)候同時(shí)看一下AJMP指令。同時(shí)考慮調(diào)用指令A(yù)CALL和LCALL指令和RET指令的關(guān)系。 25、 編程,查找內(nèi)部RAM中20H-50H單元中是否有0AAH這一數(shù)據(jù),若有則將51h單元置為01H,如無(wú),則將51H單元清零。 MOV R2,#31H ;數(shù)據(jù)塊長(zhǎng)度→R2 MOV R0,#20H ;數(shù)據(jù)塊首地址→R0 LOOP:MOV A,@R0 ;待查找的數(shù)據(jù)→A CLR C ;清進(jìn)位位 SUBB A,#0AAH ;待查找的數(shù)據(jù)是0AAH嗎 JZ L1 ;是,轉(zhuǎn)L1 INC R0 ;不是,地址增1,指向下一個(gè)待查數(shù)據(jù) DJNZ R2,LOOP ;數(shù)據(jù)塊長(zhǎng)度減1,不等于0,繼續(xù)查找 MOV 51H,#00H ;等于0,未找到,00H→51H RET L1:MOV 51H,#01H ;找到,01H→51H RET 26、編程查找內(nèi)部RAM的20H-50H單元中出現(xiàn)00H的次數(shù)并將結(jié)果存入51H中。 MOV R2,#31H ;數(shù)據(jù)塊長(zhǎng)度→R2 MOV R0,#20H ;數(shù)據(jù)塊首地址→R0 LOOP:MOV A,@R0 ;待查找的數(shù)據(jù)→A JNZ L1 ;不為0,轉(zhuǎn)L1 INC 51H ;為0,00H個(gè)數(shù)增1 L1:INC R0 ;地址增1,指向下一個(gè)待查數(shù)據(jù) DJNZ R2,LOOP ;數(shù)據(jù)塊長(zhǎng)度減1,不等于0,繼續(xù)查找 RET 27、外部數(shù)據(jù)RAM中有一個(gè)數(shù)據(jù)塊,首地址為SOURCE,要求將該數(shù)據(jù)傳送到內(nèi)部RAM以DIST開(kāi)頭的區(qū)域在,直到遇到數(shù)字字符¥時(shí)結(jié)束。 MOV DPTR,#SOURCE ;源首地址→DPTR MOV R0,#DIST ;目的首地址→R0 LOOP:MOVX A,@DPTR ;傳送一個(gè)字符 MOV @R0,A INC DPTR ;指向下一個(gè)字符 INC R0 CJNE A,#24H,LOOP ;傳送的是“$”字符嗎?不是,傳送下一個(gè)字符 RET 28、 已知R3和R4中存有一個(gè)十六位的二進(jìn)制數(shù),高位在3中,低位在4中,編程求其補(bǔ),并存回原處。 MOV A,R3 ;取該數(shù)高8位→A ANL A,#80H ;取出該數(shù)符號(hào)判斷 JZ L1 ;是正數(shù),轉(zhuǎn)L1 MOV A,R4 ;是負(fù)數(shù),將該數(shù)低8位→A CPL A ;低8位取反 ADD A,#01H ;加1 MOV R4,A ;低8位取反加1后→R4 MOV A,R3 ;將該數(shù)高8位→A CPL A ;高8位取反 ADDC A,#00H ;加上低8位加1時(shí)可能產(chǎn)生的進(jìn)位 MOV R3,A ;高8位取反加1后→R3 L1: RET 29、 已知30H和31H中存有一個(gè)十六位的二進(jìn)制數(shù),高位在前,低位在后,編程將它們乘2,并存回原處。 CLR C ;清進(jìn)位位C MOV A,31H ;取該數(shù)低8位→A RLC A ;帶進(jìn)位位左移1位 MOV 31H,A ;結(jié)果存回31H MOV A,30H ;取該數(shù)高8位→A RLC A ;帶進(jìn)位位左移1位 MOV 30H,A ;結(jié)果存回30H 30、 內(nèi)存中有兩個(gè)4字節(jié)以壓縮的BCD碼形式存放的十進(jìn)制數(shù),一個(gè)放在30H-33H的單元中,一個(gè)放在40H-43H的單元中,編程求他們的和,結(jié)果放在30H-33H的單元中。 MOV R2,#04H ;字節(jié)長(zhǎng)度→R2 MOV R0,#30H ;一個(gè)加數(shù)首地址→R0 MOV R1,#40H ;另一個(gè)加數(shù)首地址→R1 CLR C ;清進(jìn)位位 LOOP:MOV A,@R0 ;取一個(gè)加數(shù) ADDC A,@R1 ;兩個(gè)加數(shù)帶進(jìn)位位相加 DA A ;十進(jìn)制調(diào)整 MOV @R0,A ;存放結(jié)果 INC R0 ;指向下一個(gè)字節(jié) INC R1 ; DJNZ R2,LOOP ;數(shù)據(jù)塊長(zhǎng)度減1,不等于0,繼續(xù)查找 RET 31、編程,把片外RAM從2000H開(kāi)始存放的8個(gè)數(shù)傳送到片內(nèi)30H開(kāi)始的單元中。 MOV R2,#08H ;數(shù)據(jù)塊長(zhǎng)度→R2 MOV R0,#30H ;數(shù)據(jù)塊目的地址→R0 MOV DPTR,#2000H ;數(shù)據(jù)塊源地址→DPTR LOOP:MOVX A,@ DPTR ;傳送一個(gè)數(shù)據(jù) MOV @R0,A INC DPTR ;指向下一個(gè)數(shù)據(jù) INC R0 ; DJNZ R2,LOOP ;數(shù)據(jù)塊長(zhǎng)度減1,沒(méi)傳送完,繼續(xù)傳送 RET 35、解:(1000H)=53H (1001H)=54H (1002H)=41H (1003H)=52H (1004H)=54H (1005H)=12H (1006H)=34H (1007H)=30H (1008H)=00H (1009H)=70H 36、閱讀下列程序說(shuō)明其功能 MOV R0,#40H ;40H→R0 MOV A,@R0 ;98H→A INC R0 ;41H→R0 ADD A,@R0 ;98H+(41H)=47H→A INC R0 MOV @R0,A ;結(jié)果存入42H單元 CLR A ;清A ADDC A,#0 ;進(jìn)位位存入A INC R0 MOV @R0,A ;進(jìn)位位存入43H 功能:將40H,41H單元中的內(nèi)容相加結(jié)果放在42H單元,進(jìn)位放在43H單元,(R0)=43H,(A)=1,(40H)=98H,(41H)=AFH,(42H)=47H,(43H)=01H 37、同上題 MOV A,61H ;F2H→A MOV B,#02H ;02H→B MUL AB ;F2HO2H=E4H→A ADD A,62H ;積的低8位加上CCH→A MOV 63H,A ;結(jié)果送62H CLR A ;清A ADDC A,B ;積的高8位加進(jìn)位位→A MOV 64H,A ;結(jié)果送64H 功能:將61H單元的內(nèi)容乘2,低8位再加上62H單元的內(nèi)容放入63H,將結(jié)果的高8位放在64H單元。(A)=02H,(B)=01H,(61H)=F2H,(62H)=CCH,(63H)=B0H,(64H)=02H 39、MOV A,XXH ORL A,#80H MOV XXH,A 40、(2)MOV A,XXH MOV R0,A XRL A,R0 第五章 1、什么是中斷和中斷系統(tǒng)?其主要功能是什么? 答:當(dāng)CPU正在處理某件事情的時(shí)候,外部發(fā)生的某一件事件請(qǐng)求CPU迅速去處理,于是,CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件,中斷服務(wù)處理完該事件以后,再回到原來(lái)被終止的地方,繼續(xù)原來(lái)的工作。這種過(guò)程稱為中斷,實(shí)現(xiàn)這種功能的部件稱為中斷系統(tǒng)。功能: (1) 使計(jì)算機(jī)具有實(shí)時(shí)處理能力,能對(duì)外界異步發(fā)生的事件作出及時(shí)的處理 (2) 完全消除了CPU在查詢方式中的等待現(xiàn)象,大大提高了CPU的工作效率 (3) 實(shí)現(xiàn)實(shí)時(shí)控制 2、試編寫一段對(duì)中斷系統(tǒng)初始化的程序,使之允許INT0,INT1,TO,串行口中斷,且使T0中斷為高優(yōu)先級(jí)中斷。 解:MOV IE,#097H MOV IP,#02H 3、在單片機(jī)中,中斷能實(shí)現(xiàn)哪些功能? 答:有三種功能:分時(shí)操作,實(shí)時(shí)處理,故障處理 4、89C51共有哪些中斷源?對(duì)其中端請(qǐng)求如何進(jìn)行控制? 答:(1)89C51有如下中斷源 ① :外部中斷0請(qǐng)求,低電平有效 ② :外部中斷1請(qǐng)求,低電平有效 ③T0:定時(shí)器、計(jì)數(shù)器0溢出中斷請(qǐng)求 ④T1:定時(shí)器、計(jì)數(shù)器1溢出中斷請(qǐng)求 ⑤TX/RX:串行接口中斷請(qǐng)求 (2)通過(guò)對(duì)特殊功能寄存器TCON、SCON、IE、IP的各位進(jìn)行置位或復(fù)位等操作,可實(shí)現(xiàn)各種中斷控制功能 5、什么是中斷優(yōu)先級(jí)?中斷優(yōu)先處理的原則是什么? 答:中斷優(yōu)先級(jí)是CPU相應(yīng)中斷的先后順序。原則: (1) 先響應(yīng)優(yōu)先級(jí)高的中斷請(qǐng)求,再響應(yīng)優(yōu)先級(jí)低的 (2) 如果一個(gè)中斷請(qǐng)求已經(jīng)被響應(yīng),同級(jí)的其它中斷請(qǐng)求將被禁止 (3) 如果同級(jí)的多個(gè)請(qǐng)求同時(shí)出現(xiàn),則CPU通過(guò)內(nèi)部硬件查詢電路,按查詢順序確定應(yīng)該響應(yīng)哪個(gè)中斷請(qǐng)求 查詢順序:外部中斷0→定時(shí)器0中斷→外部中斷1→定時(shí)器1中斷→串行接口中斷 6、說(shuō)明外部中斷請(qǐng)求的查詢和響應(yīng)過(guò)程。 答:當(dāng)CPU執(zhí)行主程序第K條指令,外設(shè)向CPU發(fā)出中斷請(qǐng)求,CPU接到中斷請(qǐng)求信號(hào)并在本條指令執(zhí)行完后,中斷主程序的執(zhí)行并保存斷點(diǎn)地址,然后轉(zhuǎn)去響應(yīng)中斷。CPU在每個(gè)S5P2期間順序采樣每個(gè)中斷源,CPU在下一個(gè)機(jī)器周期S6期間按優(yōu)先級(jí)順序查詢中斷標(biāo)志,如果查詢到某個(gè)中斷標(biāo)志為1,將在接下來(lái)的機(jī)器周期S1期間按優(yōu)先級(jí)進(jìn)行中斷處理,中斷系統(tǒng)通過(guò)硬件自動(dòng)將相應(yīng)的中斷矢量地址裝入PC,以便進(jìn)入相應(yīng)的中斷服務(wù)程序。中斷服務(wù)完畢后,CPU返回到主程序第K+1條指令繼續(xù)執(zhí)行。 7、89C51在什么條件下可響應(yīng)中斷? 答: (1) 有中斷源發(fā)出中斷請(qǐng)求 (2) 中斷中允許位EA=1.即CPU開(kāi)中斷 (3) 申請(qǐng)中斷的中斷源的中斷允許位為1,即中斷沒(méi)有被屏蔽 (4) 無(wú)同級(jí)或更高級(jí)中斷正在服務(wù) (5) 當(dāng)前指令周期已經(jīng)結(jié)束 (6) 若現(xiàn)行指令為RETI或訪問(wèn)IE或IP指令時(shí),該指令以及緊接著的另一條指令已執(zhí)行完畢 8、簡(jiǎn)述89C51單片機(jī)的中斷響應(yīng)過(guò)程。 答:CPU在每個(gè)機(jī)器周期S5P2期間順序采樣每個(gè)中斷源,CPU在下一個(gè)機(jī)器周期S6期間按優(yōu)先級(jí)順序查詢中斷標(biāo)志,如查詢到某個(gè)中斷標(biāo)志為1,將在接下來(lái)的機(jī)器周期S1期間按優(yōu)先級(jí)進(jìn)行中斷處理,中斷系統(tǒng)通過(guò)硬件自動(dòng)將相應(yīng)的中斷矢量地址裝入PC,以便進(jìn)入相應(yīng)的中斷服務(wù)程序。一旦響應(yīng)中斷,89C51首先置位相應(yīng)的中斷“優(yōu)先級(jí)生效”觸發(fā)器,然后由硬件執(zhí)行一條長(zhǎng)調(diào)用指令,把當(dāng)前的PC值壓入堆棧,以保護(hù)斷點(diǎn),再將相應(yīng)的中斷服務(wù)的入口地址送入PC,于是CPU接著從中斷服務(wù)程序的入口處開(kāi)始執(zhí)行。對(duì)于有些中斷源,CPU在響應(yīng)中斷后會(huì)自動(dòng)清除中斷標(biāo)志。 9、在89C51內(nèi)存中,應(yīng)如何安排程序區(qū)? 答:主程序一般從0030H開(kāi)始,主程序后一般是子程序及中斷服務(wù)程序。在這個(gè)大家還要清除各個(gè)中斷的中斷矢量地址。 10、試述中斷的作用及中斷的全過(guò)程。 答:作用:對(duì)外部異步發(fā)生的事件作出及時(shí)的處理 過(guò)程:中斷請(qǐng)求,中斷響應(yīng),中斷處理,中斷返回 11、當(dāng)正在執(zhí)行某一個(gè)中斷源的中斷服務(wù)程序時(shí),如果有新的中斷請(qǐng)求出現(xiàn),試問(wèn)在什么情況下可響應(yīng)新的中斷請(qǐng)求?在什么情況下不能響應(yīng)新的中斷請(qǐng)求? 答:(1)符合以下6個(gè)條件可響應(yīng)新的中斷請(qǐng)求: a)有中斷源發(fā)出中斷請(qǐng)求 b)中斷允許位EA=1,即CPU開(kāi)中斷 c)申請(qǐng)中斷的中斷源的中斷允許位為1,即中斷沒(méi)有被屏蔽 d)無(wú)同級(jí)或更高級(jí)中斷正在被服務(wù) e)當(dāng)前的指令周期已結(jié)束 f)若現(xiàn)行指令為RETI或訪問(wèn)IE或IP指令時(shí),該指令以及緊接著的另一條指令已被執(zhí)行完 12、89C51單片機(jī)外部中斷源有幾種觸發(fā)中斷請(qǐng)求的方法?如何實(shí)現(xiàn)中斷請(qǐng)求? 答:有兩種方式:電平觸發(fā)和邊沿觸發(fā) 電平觸發(fā)方式:CPU在每個(gè)機(jī)器周期的S5P2期間采樣外部中斷引腳的輸入電平。若為低電平,使IE1(IE0)置“1”,申請(qǐng)中斷;若為高電平,則IE1(IE0)清零。 邊沿觸發(fā)方式:CPU在每個(gè)機(jī)器周期S5P2期間采樣外部中斷請(qǐng)求引腳的輸入電平。如果在相繼的兩個(gè)機(jī)器周期采樣過(guò)程中,一個(gè)機(jī)器周期采樣到外部中斷請(qǐng)求為高電平,接著下一個(gè)機(jī)器周期采樣到外部中斷請(qǐng)求為低電平,則使IE1(IE0)置“1”申請(qǐng)中斷;否則,IE1(IE0)置0。 13、89C51單片機(jī)有五個(gè)中斷源,但只能設(shè)置兩個(gè)中斷優(yōu)先級(jí),因此,在中斷優(yōu)先級(jí)安排上受到一定的限制。試問(wèn)以下幾種中斷優(yōu)先順序的安排(級(jí)別由高到低)是否可能:若可能,則應(yīng)如何設(shè)置中斷源的中斷級(jí)別:否則,請(qǐng)簡(jiǎn)述不可能的理由。 ⑴ 定時(shí)器0,定時(shí)器1,外中斷0,外中斷1,串行口中斷。 可以,MOV IP,#0AH ⑵ 串行口中斷,外中斷0,定時(shí)器0,外中斷1,定時(shí)器1。 可以,MOV IP,#10H ⑶ 外中斷0,定時(shí)器1,外中斷1,定時(shí)器0,串行口中斷。 不可以,只能設(shè)置一級(jí)高級(jí)優(yōu)先級(jí),如果將INT0,T1設(shè)置為高級(jí),而T0級(jí)別 高于INT1. ⑷ 外中斷0,外中斷1,串行口中斷, 定時(shí)器0,定時(shí)器1 。 可以,MOV IP,#15H ⑸ 串行口中斷,定時(shí)器0,外中斷0,外中斷1,定時(shí)器1。 不可以 ⑹ 外中斷0,外中斷1,定時(shí)器0,串行口中斷,定時(shí)器1 。 不可以 ⑺ 外中斷0,定時(shí)器1,定時(shí)器0,外中斷1,串行口中斷。 可以,MOV IP,#09H 14、89C51各中斷源的中斷標(biāo)志是如何產(chǎn)生的?又是如何清0的?CPU響應(yīng)中斷時(shí),中斷入口地址各是多少? 答:各中斷標(biāo)志的產(chǎn)生和清“0”如下: (1) 外部中斷類 外部中斷是由外部原因引起的,可以通過(guò)兩個(gè)固定引腳,即外部中斷0和外部中斷1輸入信號(hào)。 外部中斷0請(qǐng)求信號(hào),由P3.2腳輸入。通過(guò)IT0來(lái)決定中斷請(qǐng)求信號(hào)是低電平有效還是下跳變有效。一旦輸入信號(hào)有效,則向CPU申請(qǐng)中斷,并且使IE0=1。硬件復(fù)位。 外部中斷1請(qǐng)求信號(hào),功能與用法類似外部中斷0 (2) 定時(shí)中斷類 定時(shí)中斷是為滿足定時(shí)或計(jì)數(shù)溢出處理需要而設(shè)置的。當(dāng)定時(shí)器/計(jì)數(shù)器中的計(jì)數(shù)結(jié)構(gòu)發(fā)生計(jì)數(shù)溢出的,即表明定時(shí)時(shí)間到或計(jì)數(shù)值已滿,這時(shí)就以計(jì)數(shù)溢出信號(hào)作為中斷請(qǐng)求,去置位一個(gè)溢出標(biāo)志位。這種中斷請(qǐng)求是在單片機(jī)芯片內(nèi)部發(fā)生的,無(wú)需在芯片上設(shè)置引入端,但在計(jì)數(shù)方式時(shí),中斷源可以由外部引入。 TF0:定時(shí)器T0溢出中斷請(qǐng)求。當(dāng)定時(shí)器T0產(chǎn)生溢出時(shí),定時(shí)器T0請(qǐng)求標(biāo)志TF0=1,請(qǐng)求中斷處理。使用中斷時(shí)由硬件復(fù)位,在查詢方式下可由軟件復(fù)位。 TF1:定時(shí)器T1溢出中斷請(qǐng)求。功能與用法類似定時(shí)器T0 (3) 串行口中斷類 串行口中斷是為串行數(shù)據(jù)的傳送需要而設(shè)置的。串行中斷請(qǐng)求也是在單片機(jī)芯片內(nèi)部發(fā)生的,但當(dāng)串行口作為接收端時(shí),必須有一完整的串行幀數(shù)據(jù)從RI端引入芯片,才可能引發(fā)中斷。 RI或TI:串行口中斷請(qǐng)求。當(dāng)接收或發(fā)送一串幀數(shù)據(jù)時(shí),使內(nèi)部串行口中斷請(qǐng)求標(biāo)志RI或TI=1,并請(qǐng)求中斷。響應(yīng)后必須軟件復(fù)位。 CPU響應(yīng)中斷時(shí),中斷入口地址如下: 中斷源 入口地址 外部中斷0 0003H 定時(shí)器T0中斷 000BH 外部中斷1 0013H 定時(shí)器T1中斷 001BH 串行口中斷 0023H 15、中斷響應(yīng)時(shí)間是否為確定不變的?為什么? 答:中斷響應(yīng)時(shí)間不是確定不變的。由于CPU不是在任何情況下對(duì)中斷請(qǐng)求都予以響應(yīng)的;此外,不同的情況對(duì)中斷響應(yīng)的時(shí)間也是不同的。下面以外部中斷為例,說(shuō)明中斷響應(yīng)的時(shí)間。 在每個(gè)機(jī)器周期的S5P2期間, 端的電平被所存到TCON的IE0位,CPU在下一個(gè)機(jī)器周期才會(huì)查詢這些值。這時(shí)滿足中斷響應(yīng)條件,下一條要執(zhí)行的指令將是一條硬件長(zhǎng)調(diào)用指令“LCALL”,使程序轉(zhuǎn)入中斷矢量入口。調(diào)用本身要用2個(gè)機(jī)器周期,這樣,從外部中斷請(qǐng)求有效到開(kāi)始執(zhí)行中斷服務(wù)程序的第一條指令,至少需要3個(gè)機(jī)器周期,這是最短的響應(yīng)時(shí)間。 如果遇到中斷受阻的情況,這中斷響應(yīng)時(shí)間會(huì)更長(zhǎng)一些。例如,當(dāng)一個(gè)同級(jí)或更高級(jí)的中斷服務(wù)程序正在進(jìn)行,則附加的等待時(shí)間取決于正在進(jìn)行的中斷服務(wù)程序:如果正在執(zhí)行的一條指令還沒(méi)有進(jìn)行到最后一個(gè)機(jī)器周期,附加的等待時(shí)間為1~3個(gè)機(jī)器周期;如果正在執(zhí)行的是RETI指令或者訪問(wèn)IE或IP的指令,則附加的等待時(shí)間在5個(gè)機(jī)器周期內(nèi)。 若系統(tǒng)中只有一個(gè)中斷源,則響應(yīng)時(shí)間為3~8個(gè)機(jī)器周期。 16、中斷響應(yīng)過(guò)程中,為什么通常要保護(hù)現(xiàn)場(chǎng)?如何保護(hù)? 答:因?yàn)橐话阒鞒绦蚝椭袛喾?wù)程序都可能會(huì)用到累加器,PSW寄存器及其他一些寄存器。CPU在進(jìn)入中斷服務(wù)程序后,用到上述寄存器時(shí),就會(huì)破壞它原來(lái)存在寄存器中的內(nèi)容;一旦中斷返回,將會(huì)造成主程序的混亂。因而在進(jìn)入中斷服務(wù)程序后,一般要先保護(hù)現(xiàn)場(chǎng),然后再執(zhí)行中斷處理程序,在返回主程序以前再恢復(fù)現(xiàn)場(chǎng)。 保護(hù)方法一般是把累加器、PSW寄存器及其他一些與主程序有關(guān)的寄存器壓入堆棧。在保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)時(shí),為了不使現(xiàn)場(chǎng)受到破壞或者造成混亂,一般規(guī)定此時(shí)CPU不響應(yīng)新的中斷請(qǐng)求。這就要求在編寫中斷服務(wù)程序時(shí),注意在保護(hù)現(xiàn)場(chǎng)之前要關(guān)中斷,在恢復(fù)現(xiàn)場(chǎng)之后開(kāi)中斷。如果在中斷處理時(shí)允許有更高級(jí)的中斷打斷它,則在保護(hù)現(xiàn)場(chǎng)之后再開(kāi)中斷,恢復(fù)現(xiàn)場(chǎng)之前關(guān)中斷。 17、清敘述中斷響應(yīng)的CPU操作過(guò)程,為什么說(shuō)中斷操作是一個(gè)CPU的微查詢過(guò)程? 答:在中斷響應(yīng)中,CPU要完成以下自主操作過(guò)程: a) 置位相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器,以標(biāo)明所響應(yīng)中斷的優(yōu)先級(jí)別 b)中斷源標(biāo)志清零(TI、RI除外) c)中斷斷點(diǎn)地址裝入堆棧保護(hù)(不保護(hù)PSW) d)中斷入口地址裝入PC,以便使程序轉(zhuǎn)到中斷入口地址處 在計(jì)算機(jī)內(nèi)部,中斷表現(xiàn)為CPU的微查詢操作。89C51單片機(jī)中,CPU在每個(gè)機(jī)器周期的S6狀態(tài),查詢中斷源,并按優(yōu)先級(jí)管理規(guī)則處理同時(shí)請(qǐng)求的中斷源,且在下一個(gè)機(jī)器周期的S1狀態(tài)中,響應(yīng)最高級(jí)中斷請(qǐng)求。 但是以下情況除外: a) CPU正在處理相同或更高優(yōu)先級(jí)中斷 b)多機(jī)器周期指令中,還未執(zhí)行到最后一個(gè)機(jī)器周期 c)正在執(zhí)行中斷系統(tǒng)的SFR操作,如RETI指令及訪問(wèn)IE、IP等操作時(shí),要延后一條指令 18、在中斷請(qǐng)求有效并開(kāi)中斷狀況下,能否保證立即響應(yīng)中斷?有什么條件? 答:在中斷請(qǐng)求有效并開(kāi)中斷狀況下,并不能保證立即響應(yīng)中斷。這是因?yàn)?,在?jì)算機(jī)內(nèi)部,中斷表現(xiàn)為CPU的微查詢操作。89C51單片機(jī)中,CPU在每個(gè)機(jī)器周期的S6狀態(tài)下,查詢中斷源,并按優(yōu)先級(jí)管理規(guī)則處理同時(shí)請(qǐng)求的中斷源,且在下一個(gè)機(jī)器周期的S1狀態(tài)中,響應(yīng)最高級(jí)中斷請(qǐng)求。 在以下情況下,還需要有另外的等待: a) CPU正在處理相同或更高優(yōu)先級(jí)中斷 b)多機(jī)器周期指令中,還未執(zhí)行到最后一個(gè)機(jī)器周期 c)正在執(zhí)行中斷系統(tǒng)的SFR操作,如RETI指令及訪問(wèn)IE、IP等操作時(shí),要延后一條指令 第6章習(xí)題答案 1、定時(shí)器模式2有什么特點(diǎn)?適用于什么場(chǎng)合? 答:(1)模式2把TL0(或TL1)配置成一個(gè)可以自動(dòng)重裝載的8位定時(shí)器/計(jì)數(shù)器。TL0計(jì)數(shù)溢出時(shí)不僅使溢出中斷標(biāo)志位TF0置1,而且還自動(dòng)把TH0中的內(nèi)容重新裝載到TL0中。TL0用作8位計(jì)數(shù)器,TH0用以保存初值。 (2)用于定時(shí)工作方式時(shí)間(TF0溢出周期)為 ,用于計(jì)數(shù)工作方式時(shí),最大計(jì)數(shù)長(zhǎng)度(TH0初值=0)為28=256個(gè)外部脈沖。 這種工作方式可省去用戶軟件重裝初值的語(yǔ)句,并可產(chǎn)生相當(dāng)精確定時(shí)時(shí)間,特別適于作串行波特率發(fā)生器。 2、單片機(jī)內(nèi)部定時(shí)方式產(chǎn)生頻率為100KHZ等寬矩形波,假定單片機(jī)的晶振頻率為12MHZ,請(qǐng)編程實(shí)現(xiàn)。 答: T0低5位:1BH T0高8位:FFH MOV TMOD,#00H ;設(shè)置定時(shí)器T0工作于模式0 MOV TL0,#1BH ;設(shè)置5ms定時(shí)初值 MOV TH0,#0FFH SETB TR0 ;啟動(dòng)T0 LOOP:JBC TF0,L1;查詢到定時(shí)時(shí)間到?時(shí)間到轉(zhuǎn)L1 SJMP LOOP ;時(shí)間未到轉(zhuǎn)LOOP,繼續(xù)查詢 L1:MOV TL0,#1BH;重新置入定時(shí)初值 MOV TH0,#0FFH CPL P1.0 ;輸出取反,形成等寬矩形波 SJMP LOOP ;重復(fù)循環(huán) 3、89C51定時(shí)器有哪幾種工作模式?有何區(qū)別? 答:有四種工作模式:模式0,模式1,模式2,模式3 (1) 模式0:選擇定時(shí)器的高8位和低5位組成一個(gè)13位定時(shí)器/計(jì)數(shù)器。TL低5- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī) 原理 接口 技術(shù) 課后 習(xí)題 答案 李朝青
鏈接地址:http://www.820124.com/p-6574495.html