單片機原理及接口技術課后習題答案_李朝青_第1頁
單片機原理及接口技術課后習題答案_李朝青_第2頁
單片機原理及接口技術課后習題答案_李朝青_第3頁
單片機原理及接口技術課后習題答案_李朝青_第4頁
單片機原理及接口技術課后習題答案_李朝青_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章1.單片機具有哪些特點(1)片內存儲容量越來越大。(2抗干擾性好,可靠性高。(3)芯片引線齊全,容易擴展。(4)運行速度高,控制功能強。(5)單片機內部的數據信息保存時間很長,有的芯片可以達到100年以上。2. 89C51單片機內包含哪些主要邏輯功能部件?答:80C51系列單片機在片內集成了以下主要邏輯功能部件: (l)CPU(中央處理器):8位 (2)片內RAM:128B (3)特殊功能寄存器:21個 (4)程序存儲器:4KB (5)并行I/O口:8位,4個 (6)串行接口:全雙工,1個 (7)定時器/計數器:16位,2個(8)片內時鐘電路:1個3.什么是微處理器(CPU)、微機和單片

2、機?答:微處理器本身不是計算機,但它是小型計算機或微機的控制和處理部分。微機則是具有完整運算及控制功能的計算機,除了微處理器外還包括存儲器、接口適配器以及輸入輸出設備等。單片機是將微處理器、一定容量的RAM、ROM以及I/O口、定時器等電路集成在一塊芯片上,構成的單片微型計算機。4. 微型計算機怎樣執(zhí)行一個程序?答:通過CPU指令,提到內存當中,再逐一執(zhí)行。5.什么是嵌入式系統(tǒng)?他有哪些類型?為什么說單片機是典型的嵌入式系統(tǒng)?答; 嵌入式系統(tǒng)是將先進的計算機技術、半導體技術和電子技術和各個行業(yè)的具體應用相結合后的產物,這一點就決定了它必然是一個技術密集、資金密集、高度分散、不斷創(chuàng)新的知識集成系

3、統(tǒng)。 它有嵌入式微處理器、嵌入式微控制器、嵌入式DSP處理器、嵌入式片上系統(tǒng)等。 嵌入式系統(tǒng)的出現最初是基于單片機的。它從體系結構到指令系統(tǒng)都是按照嵌入式應用特點專門設計的,能最好的滿足面對控制對象,應運系統(tǒng)的嵌入、現場的可靠運行以及非凡的控制品質要求。因此,她是典型的嵌入式系統(tǒng)。第二章1.89C51單片機內包含哪些主要邏輯功能部件?答:80C51系列單片機在片內集成了以下主要邏輯功能部件: (l)CPU(中央處理器):8位 (2)片內RAM:128B (3)特殊功能寄存器:21個 (4)程序存儲器:4KB (5)并行I/O口:8位,4個 (6)串行接口:全雙工,1個 (7)定時器/計數器:1

4、6位,2個(8)片內時鐘電路:1個2.89C51的EA端有何用途?答:/EA端接高電平時,CPU只訪問片內并執(zhí)行內部程序,存儲器。/EA端接低電平時,CPU只訪問外部ROM,并執(zhí)行片外程序存儲器中的指令。/EA端保持高電平時,CPU執(zhí)行內部存儲器中的指令。3. 89C51的存儲器分哪幾個空間?如何區(qū)別不同空間的尋址?答:ROM(片內ROM和片外ROM統(tǒng)一編址)(使用MOVC)(數據傳送指令)(16bits地址)(64KB) 片外RAM(MOVX)(16bits地址)(64KB) 片內RAM(MOV)(8bits地址)(256B)4. 簡述89C51片內RAM的空間分配。答:片內RAM有256B

5、 低128B是真正的RAM區(qū) 高128B是SFR(特殊功能寄存器)區(qū) 5. 簡述布爾處理存儲器的空間分配,片內RAM中包含哪些可位尋址單元。答:片內RAM區(qū)從00HFFH(256B) 其中20H2FH(字節(jié)地址)是位尋址區(qū) 對應的位地址是00H7FH6. 如何簡捷地判斷89C51正在工作?答:用示波器觀察8051的XTAL2端是否有脈沖信號輸出(判斷震蕩電路工作是否正常?) ALE(地址鎖存允許)(Address Latch Enable)輸出是fosc的6分頻 用示波器觀察ALE是否有脈沖輸出(判斷 8051芯片的好壞?) 觀察PSEN(判斷8051能夠到EPROM 或ROM中讀取指令碼?)

6、 因為/PSEN接外部EPROM(ROM)的/OE端子 OE=Output Enable(輸出允許) 7. 89C51如何確定和改變當前工作寄存器組?答:PSW(程序狀態(tài)字)(Program Status Word)中的RS1和RS0 可以給出4中組合 用來從4組工作寄存器組中進行選擇 PSW屬于SFR(Special Function Register)(特殊功能寄存器) 8. 89C51 P0口用作通用/口輸入時,若通過TTL“OC”門輸入數據,應注意什么?為什么?答:9. 讀端口鎖存器和“讀引腳”有何不同?各使用哪種指令?答:讀鎖存器(ANL P0,A)就是相當于從存儲器中拿數據,而讀引

7、腳是從外部拿數據(如MOV A,P1 這條指令就是讀引腳的,意思就是把端口p1輸入數據送給A) 傳送類MOV,判位轉移JB、JNB、這些都屬于讀引腳,平時實驗時經常用這些指令于外部通信,判斷外部鍵盤等;字節(jié)交換XCH、XCHD算術及邏輯運算 ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制轉移CJNE、DJNZ都屬于讀鎖存器。10. 89C51 P0P3口結構有何不同?用作通用/口輸入數據時,應注意什么?答:P0口內部沒有上拉電阻,可以用做16位地址的低8位;P3有第二功能;P2口可以用做16位地址的高8位;需要上拉電阻。OC門電路無法輸出高低電平,只有靠上拉電阻才能實現

8、11. 89C51單片機的信號有何功能?在使用8031時,信號引腳應如何處理?答:(1)80C51單片機的EA信號的功能 EA為片外程序存儲器訪問允許信號,低電平有效;在編程時,其上施加21V的編程電壓 EA引腳接高電平時,程序從片內程序存儲器開始執(zhí)行,即訪問片內存儲器;EA引腳接低電平時,迫使系統(tǒng)全部執(zhí)行片外程序存儲器程序。 (2)在使用80C31時,EA信號引腳的處理方法因為80C31沒有片內的程序存儲器,所以在使用它時必定要有外部的程序存儲器,EA 信號引腳應接低電平。12. 89C51單片機有哪些信號需要芯片引腳以第2功能的方式提供?答: 第一功能 第二功能 串行口: P3.0 RXD

9、(串行輸入口) P3.1 TXD(串行輸出口) 中斷: P3.2 INT0外部中斷0 P3.3 INT1外部中斷1 定時器/計數器(T0、T1): P3.4 T0(定時器/計數器0的外部輸入) P3.5 T1(定時器/計數器1的外部輸入) 數據存儲器選通: P3.6 WR(外部存儲器寫選通,低電平有效,輸出) P3.7 RD(外部存儲器讀選通,低電平有效,輸出) 定時器/計數器(T2): P1.0 T2(定時器T2的計數端) P1.1 T2EX(定時器T2的外部輸入端)13. 內部RAM低128字節(jié)單元劃分為哪3個主要部分?各部分主要功能是什么?答:片內RAM低128單元的劃分及主要功能: (

10、l)工作寄存器組(00HlFH) 這是一個用寄存器直接尋址的區(qū)域,內部數據RAM區(qū)的031(00HlFH),共32個單元。它是4個通用工作寄存器組,每個組包含8個8位寄存器,編號為R0R7。 (2)位尋址區(qū)(20H2FH) 從內部數據RAM區(qū)的3247(20H2FH)的16個字節(jié)單元,共包含128位,是可位尋址的RAM區(qū)。這16個字節(jié)單元,既可進行字節(jié)尋址,又可實現位尋址。 (3)字節(jié)尋址區(qū)(30H7FH) 從內部數據RAM區(qū)的48127(30H7FH),共80個字節(jié)單元,可以采用間接字節(jié)尋址的方法訪問。 14. 使單片機復位有幾種方法?復位后機器的初始狀態(tài)如何?答:(1)單片機復位方法 單片

11、機復位方法有:上電自動復位、按鍵電平復位和外部脈沖三種方式,如題圖2-1所示。 題圖2-1(2)復位后的初始狀態(tài)復位后機器的初始狀態(tài),即各寄存器的狀態(tài):PC之外,復位操作還對其他一些特殊功能寄存器有影響,它們的復位狀態(tài)如題表2-1所例15. 開機復位后,CPU使用的是哪組工作寄存器?它們的地址是什么?CPU如何確定和改變當前工作寄存器組?答:一般開機復位后都是選擇第一組通用工作寄存器作為工作寄存器的,一共有4組,分別為0.1.2.3連續(xù)位于00h到1FH地址,然后在機器中有個程序狀態(tài)字PSW,它的第四和第三位RS1,RS0是用來選擇工作寄存器組的,可能不同機器地址稍有不同。他們倆的值和寄存器組

12、的關系:RS1/RS0 0/0 0/1 1/0 1/1使用的工作寄存器 0 1 2 3地址 00-07 08-0F 10-17 18-1F寫程序的時候就是通過定義程序狀態(tài)字來選擇使用不同的寄存器組。也可以直接對RS1和RS0賦值。(最后一問同題7)16. 程序狀態(tài)寄存器PSW的作用是什么?常用標志有哪些位?作用是什么?答:PSW是一個SFR(特殊功能寄存器) 位于片內RAM的高128B 具體地址D0H(00HFFH)(片內RAM的編址)(8bits編址方法) PSW=Program Status Word(程序狀態(tài)字) PSW的常用標志位有哪些? CY=Carry(進位標志位) AC=Auxi

13、liary Carry(輔助進位標志位)(半進位標志位) F0用戶標志位 RS1,RS0,用來選擇當前工作寄存器組(R0R7)(4選1) OV=Overflow(溢出標志位) P=Parity(奇偶校驗位) 17. 位地址7CH與字節(jié)地址7CH如何區(qū)別?位地址7CH具體在片內RAM中的什么位置?答:用不同的尋址方式來加以區(qū)分,即訪問128個位地址用位尋址方式,訪問低128字節(jié)單元用字節(jié)尋址和間接尋址。 具體地址為2F的第五位,即為7C。18. 89C51單片機的時鐘周期與振蕩周期之間有什么關系?什么叫機器周期和指令周期?答:時鐘信號的周期稱為機器狀態(tài)周期,是振蕩周期的兩倍。一個機器周期是指CP

14、U訪問存儲器一次所需的時間。指令周期是執(zhí)行一條指令所需的時間。19. 一個機器周期的時序如何劃分?答:一個機器周期=12個震蕩周期=6個時鐘周期(狀態(tài)周期) S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1,S4P2,S5P1,S5P2,S6P1,S6P2 其中s=state(狀態(tài)),p=phase(相位) 20. 什么叫堆棧?堆棧指針SP的作用是什么?89C51單片機堆棧的容量不能超過多少字節(jié)?答:堆棧都是一種數據項按序排列的數據結構,只能在一端(稱為棧頂(top)對數據項進行插入和刪除。要點:堆:順序隨意棧:后進先出(Last-In/First-Out) 在調用子程序時

15、需要保存調用函數的CPU寄存器PC指針,PC指針是被CALL指令自動壓入SP所指向的片內存儲器,CPU寄存器要由用戶用PUSH指令自行保存,因此SP的作用就是一個指針,當進行中斷調用,子函數調用時將現場數據壓入SP所指向的存儲器,SP自動增加1或2,當中斷結束RETI,調用返回RET,POP時將SP數據彈出,SP自動減1或,28051最大為128字節(jié)的片內存儲器,0X20以上理論都可以做堆棧用96字節(jié),8052為256字節(jié)224字節(jié)可用,但這樣便沒有其它空間可用于數據存儲現在的單片機的程序一般都能用C51來,不用關心堆棧大小與SP寄存器21. 89C51有幾種低功耗方式?如何實現?答:空閑方式

16、和掉電方式 空閑方式和掉電方式是通過對SFR中的PCON(地址87H)相應位置1而啟動的。當CPU執(zhí)行完置IDL=1(PCON.1)的指令后,系統(tǒng)進入空閑工作方式。這時,內部時鐘不向CPU提供,而只供給中斷、串行口、定時器部分。CPU的內部狀態(tài)維持,即包括堆棧指針SP、程序計數器PC、程序狀態(tài)字PSW、累加器ACC所有的內容保持不變,端口狀態(tài)也保持不變。ALE和PSEN保持邏輯高電平。當CPU執(zhí)行一條置PCON.1位(PD)為1的指令后,系統(tǒng)進入掉電工作方式。在這種工作方式下,內部振蕩器停止工作。由于沒有振蕩時鐘,因此,所有的功能部件都停止工作。但內部RAM區(qū)和特殊功能寄存器的內容被保留,而端

17、口的輸出狀態(tài)值都保存在對應的SFR中,ALE和PSEN都為低電平。22. PC與DPTR各有哪些特點?有何異同?答:(1)程序計數器PC作為不可尋址寄存器的特點程序計數器PC是中央控制器申最基本的寄存器,是一個獨立的計數器,存放著下一條將程序存儲器中取出的指令的地址。程序計數器PC變化的軌跡決定程序的流程。程序計數器的寬度決定了程序存儲器可以尋址的范圍。 程序計數器PC的基本工作方式有: 程序計數器PC自動加1。這是最基本的工作方式,也是這個專用寄存器被稱為計數器的原因。 執(zhí)行條件或無條件轉移指令時,程序計數器將被置入新的數值,程序的流向發(fā)生變化。變化的方式有下列幾種:帶符號的相對跳轉SJMP

18、、短跳轉AJMP、長跳轉LJMP及JMP A+DPTR等。 在執(zhí)行調用指令或響應中斷時: PC的現行值,即下一條將要執(zhí)行的指令的地址送入堆棧,加以保護; 將子程序的入口地址或者中斷矢量地址送入PC,程序流向發(fā)生變化,執(zhí)行子程序或中斷服務程序; 子程序或中斷服務程序執(zhí)行完畢,遇到返回指令RET或RETI時,將棧頂的內容送到PC寄存器中,程序流程又返回到原來的地方,繼續(xù)執(zhí)行。 (2)地址指針DPTR的特點 地址指針DPTR的特點是,它作為片外數據存儲器尋址用的地址寄存器(間接尋址)。 (3)地址指針DPTR與程序計數器PC的異同 相同之處: 兩者都是與地址有關的、16位的寄存器。其中,PC與程序存

19、儲器的地址有關,而 DPTR與數據存儲器的地址有關。 作為地址寄存器使用時,PC與DPTR都是通過P0和P2口(作為16位地址總線)輸 出的。但是,PC的輸出與ALE及PSEN有關;DPTR的輸出,則與ALE、RD及WR相聯(lián)系。 不同之處: PC只能作為16位寄存器對待,由于有自動加1的功能,故又稱為計數器; DPTR可以作為16位寄存器對待,也可以作為兩個8位寄存器對待。 PC是不可以訪問的,有自己獨特的變化方式,它的變化軌跡決定了程序執(zhí)行的流程; DPTR是可以訪問的,如MOV DPTR,#XXXXH,INC DPTP。23. 89C51端口鎖存器的“讀修改寫”操作與“讀引腳”操作有何區(qū)別

20、?答:指令系統(tǒng)中有些指令讀鎖存器的值, 有些指令則讀引腳上的值。讀鎖存器指令是從鎖存器中讀取一個值并進行處理, 把處理后的值(原值或已修改后的值)重新寫入鎖存器中。這類指令稱為讀-修改-寫指令。 對于讀-修改-寫指令。直接讀鎖存器而不是讀端口引腳, 是因為從引腳上讀出的數據不一定能真正反映鎖存器的狀態(tài)。單片機原理及接口技術課后習題答案第三章1、  指令:CPU根據人的意圖來執(zhí)行某種操作的命令指令系統(tǒng):一臺計算機所能執(zhí)行的全部指令集合機器語言:用二進制編碼表示,計算機能直接識別和執(zhí)行的語言匯編語言:用助記符、符號和數字來表示指令的程序語言高級語言:獨立于機器的,在編程時不需要對機器結構

21、及其指令系統(tǒng)有深入了解的通用性語言2、  見第1題3、簡述8951的匯編指令格式。答: 操作碼 目的操作數 ,源操作數4、簡述8951的尋址方式和所能涉及的尋址空間。   尋址方式尋址空間立即數尋址程序存儲器ROM直接尋址片內RAM低128B、特殊功能寄存器寄存器尋址工作寄存器R0-R7、A、B、C、DPTR寄存器間接尋址片內RAM低128B、片外RAM變址尋址程序存儲器(A+PC,A+DPTR)相對尋址程序存儲器256B范圍(PC+偏移量)位尋址片內RAM的20H-2FH字節(jié)地址、部分SFR5、訪問特殊功能寄存器和外數據存儲器,應采用那些尋址方式?答: 

22、; SFR:直接尋址,位尋址,寄存器尋址;片外RAM:寄存器間接尋址6、8951中已知(30H)=38H,請分析以下各是什么指令,說明源操作數的尋址方式以及執(zhí)行結果。  MOV A,40H ;直接尋址(40H)A MOV R0,A;寄存器尋址(A)R0 MOV P1,#0F0H ;立即數尋址0F0P1 MOV R0,30H;直接尋址(30H) (R0) MOV DPTR,#3848H;立即數尋址 3848HDPTR MOV 40H,38H;直接尋址 (38H) 40H MOV R0,30H;直接尋址 (30H) R0 MOV P0,R0;寄存器尋址( R0 )P0 MOV 18H,#

23、30H ;立即數尋址30H18H MOV A,R0 ;寄存器間接尋址 (R0) A MOV P2,P1 ;直接尋址 (P1)P2最后結果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H注意:左邊是內容,右邊是單元7、8951片內高128字節(jié)的地址尋址要注意什么/?答:  用直接尋址,位尋址,寄存器尋址8、指出些列指令的本質?   MOV A,DATA;直接尋址2字節(jié)1周期MOV A,#DATA;立即數尋址2

24、字節(jié)1周期MOV DATA1,DATA2;直接尋址3字節(jié)2周期MOV 74H,#78H;立即數尋址3字節(jié)2周期如果想查某一指令的機器碼,字節(jié)數或周期數可查閱書本后面的附錄A9、設R0的內容分為32H,A的內容為48H,。請指出在執(zhí)行下列程序段后上述各單元內容的變化?MOVA,R0;(R0)=80HAMOVR0,40H;(40H)=08H(R0)MOV40H,A;(A)=8040HMOVR0,#35H;35HR0最后結果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H10、如何訪問SFR,可采用那些尋址方式?答:用直接尋址,位尋址,寄存器尋址11、如何訪問片外RAM,可

25、使用那些尋址方式?答:只能采用寄存器間接尋址(用MOVX指令)12、如何訪問片內RAM,可使用那些尋址方式?答:低128字節(jié):直接尋址,位尋址,寄存器間接尋址,寄存器尋址(R0R7)高128字節(jié):直接尋址,位尋址,寄存器尋址13、如何訪問片內外程序存儲器,可使用那些尋址方式?答:采用變址尋址(用MOVC指令)14、說明十進制調整的原因和方法?答:壓縮BCD碼在進行加法運算時應逢十進一,而計算機只將其當作十六進制數處理,此時得到的結果不正確。用DA A指令調整(加06H,60H,66H)15、說明8951布爾機處理機功能?答:用來進行位操作16、ANL A,#17H ;83H17H=03HAOR

26、L 17H,A ;34H03H=37H17HXRL A,R0 ;03H37H=34HCPL A ;34H求反等于CBH所以(A)=CBH17、(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,R7MOV 26H,R6MOV 25H,R5MOV 24H,R4MOV 23H,R3MOV 22H,R2MOV 21H,R1MOV 20H,R019、MOV 2FH,20 MOV 2EH,21 MO

27、V 2DH,2220、編程,進行兩個16位數的減法:6F5DH-13B4H,結果存入內部RAM的30和31H單元,30H存低八位。CLR CMOV A,#5DH ;被減數的低8位AMOV R2,#B4H ;減數低8位R2SUBB A,R2 ;被減數減去減數,差AMOV 30H,A ;低8位結果30HMOV A,#6FH ;被減數的高8位AMOV R2,#13H ;減數高8位R2SUBB A,R2 ;被減數減去減數,差AMOV 31H,A ;高8位結果30H注意:如果在你的程序中用到了進位位,在程序開始的時候要記得清0進位位21、編程,若累加器A滿足下列條件,則程序轉至LABEL存儲單元,設A中

28、為無符號數。(1)A10CJNE A,#0AH,L1 ;(A)與10比較,不等轉L1LJMP LABEL ;相等轉LABELL1:JNC LABEL ;(A)大于10,轉LABEL或者:CLR CSUBB A,#0AHJNC LABEL(2)A10CJNE A,#0AH,L1 ;(A)與10比較,不等轉L1RET ;相等結束L1:JNC LABEL ;(A)大于10,轉LABEL RET ;(A)小于10,結束或者:CLR CSUBB A,#0AHJNC L1RETL1:JNZ LABELRET(3)A10CJNE A,#0AH,L1 ;(A)與10比較,不等轉L1L2:LJMP LABEL

29、;相等轉LABELL1:JC L2 ;(A)小于10,轉L2RET或者:CLR CSUBB A,#0AHJC LABELJZ LABELRET22、(SP)=23H,(PC)=3412H參看書上80頁23、(SP)=27H,(26H)=48H,(27H)=23H,(PC)=3456H參看書上79頁 24、不能。ACALL是短轉指令,可調用的地址范圍是2KB。在看這個題的時候同時看一下AJMP指令。同時考慮調用指令ACALL和LCALL指令和RET指令的關系。25、 編程,查找內部RAM中20H-50H單元中是否有0AAH這一數據,若有則將51h單元置為01H,如無,則將51H單元清零

30、。 MOV R2,#31H ;數據塊長度R2 MOV R0,#20H ;數據塊首地址R0LOOP:MOV A,R0 ;待查找的數據A CLR C ;清進位位 SUBB A,#0AAH ;待查找的數據是0AAH嗎 JZ L1 ;是,轉L1 INC R0 ;不是,地址增1,指向下一個待查數據 DJNZ R2,LOOP ;數據塊長度減1,不等于0,繼續(xù)查找 MOV 51H,#00H ;等于0,未找到,00H51H RET L1:MOV 51H,#01H ;找到,01H51H RET26、編程查找內部RAM的20H-50H單元中出現00H的次數并將結果存入51H中。 MOV R2,#31H ;數據塊長

31、度R2 MOV R0,#20H ;數據塊首地址R0LOOP:MOV A,R0 ;待查找的數據A JNZ L1 ;不為0,轉L1 INC 51H ;為0,00H個數增1 L1:INC R0 ;地址增1,指向下一個待查數據 DJNZ R2,LOOP ;數據塊長度減1,不等于0,繼續(xù)查找 RET27、外部數據RAM中有一個數據塊,首地址為SOURCE,要求將該數據傳送到內部RAM以DIST開頭的區(qū)域在,直到遇到數字字符¥時結束。 MOV DPTR,#SOURCE ;源首地址DPTR MOV R0,#DIST ;目的首地址R0 LOOP:MOVX A,DPTR ;傳送一個字符 MOV R0,A INC

32、 DPTR ;指向下一個字符 INC R0 CJNE A,#24H,LOOP ;傳送的是“$”字符嗎?不是,傳送下一個字符 RET28、 已知R3和R4中存有一個十六位的二進制數,高位在3中,低位在4中,編程求其補,并存回原處。 MOV A,R3 ;取該數高8位A ANL A,#80H ;取出該數符號判斷 JZ L1 ;是正數,轉L1 MOV A,R4 ;是負數,將該數低8位A CPL A ;低8位取反 ADD A,#01H ;加1 MOV R4,A ;低8位取反加1后R4 MOV A,R3 ;將該數高8位A CPL A ;高8位取反 ADDC A,#00H ;加上低8位加1時可能產生的進位

33、MOV R3,A ;高8位取反加1后R3 L1: RET29、 已知30H和31H中存有一個十六位的二進制數,高位在前,低位在后,編程將它們乘2,并存回原處。 CLR C ;清進位位C MOV A,31H ;取該數低8位A RLC A ;帶進位位左移1位 MOV 31H,A ;結果存回31H MOV A,30H ;取該數高8位A RLC A ;帶進位位左移1位 MOV 30H,A ;結果存回30H30、 內存中有兩個4字節(jié)以壓縮的BCD碼形式存放的十進制數,一個放在30H-33H的單元中,一個放在40H-43H的單元中,編程求他們的和,結果放在30H-33H的單元中。 MOV R2,#04H

34、;字節(jié)長度R2 MOV R0,#30H ;一個加數首地址R0 MOV R1,#40H ;另一個加數首地址R1 CLR C ;清進位位LOOP:MOV A,R0 ;取一個加數 ADDC A,R1 ;兩個加數帶進位位相加 DA A ;十進制調整 MOV R0,A ;存放結果 INC R0 ;指向下一個字節(jié) INC R1 ; DJNZ R2,LOOP ;數據塊長度減1,不等于0,繼續(xù)查找 RET31、編程,把片外RAM從2000H開始存放的8個數傳送到片內30H開始的單元中。 MOV R2,#08H ;數據塊長度R2 MOV R0,#30H ;數據塊目的地址R0 MOV DPTR,#2000H ;數

35、據塊源地址DPTRLOOP:MOVX A, DPTR ;傳送一個數據 MOV R0,A INC DPTR ;指向下一個數據 INC R0 ; DJNZ R2,LOOP ;數據塊長度減1,沒傳送完,繼續(xù)傳送 RET35、解:(1000H)=53H (1001H)=54H (1002H)=41H (1003H)=52H (1004H)=54H (1005H)=12H (1006H)=34H (1007H)=30H (1008H)=00H (1009H)=70H36、閱讀下列程序說明其功能MOV R0,#40H ;40HR0MOV A,R0 ;98HAINC R0 ;41HR0ADD A,R0 ;9

36、8H+(41H)=47HAINC R0 MOV R0,A ;結果存入42H單元CLR A ;清AADDC A,#0 ;進位位存入AINC R0 MOV R0,A ;進位位存入43H功能:將40H,41H單元中的內容相加結果放在42H單元,進位放在43H單元,(R0)=43H,(A)=1,(40H)=98H,(41H)=AFH,(42H)=47H,(43H)=01H37、同上題 MOV A,61H ;F2HA MOV B,#02H ;02HB MUL AB ;F2H×O2H=E4HA ADD A,62H ;積的低8位加上CCHA MOV 63H,A ;結果送62H CLR A ;清A

37、ADDC A,B ;積的高8位加進位位A MOV 64H,A ;結果送64H功能:將61H單元的內容乘2,低8位再加上62H單元的內容放入63H,將結果的高8位放在64H單元。(A)=02H,(B)=01H,(61H)=F2H,(62H)=CCH,(63H)=B0H,(64H)=02H39、MOV A,XXHORL A,#80HMOV XXH,A40、(2)MOV A,XXH MOV R0,A XRL A,R0第五章1、什么是中斷和中斷系統(tǒng)?其主要功能是什么?答:當CPU正在處理某件事情的時候,外部發(fā)生的某一件事件請求CPU迅速去處理,于是,CPU暫時中止當前的工作,轉去處理所發(fā)生的事件,中斷

38、服務處理完該事件以后,再回到原來被終止的地方,繼續(xù)原來的工作。這種過程稱為中斷,實現這種功能的部件稱為中斷系統(tǒng)。功能:(1)   使計算機具有實時處理能力,能對外界異步發(fā)生的事件作出及時的處理(2)   完全消除了CPU在查詢方式中的等待現象,大大提高了CPU的工作效率(3)   實現實時控制2、試編寫一段對中斷系統(tǒng)初始化的程序,使之允許INT0,INT1,TO,串行口中斷,且使T0中斷為高優(yōu)先級中斷。解:MOV IE,#097H MOV IP,#02H3、在單片機中,中斷能實現哪些功能?答:有三種功能:分時操作,實時處理,故障處理4

39、、89C51共有哪些中斷源?對其中端請求如何進行控制?答:(1)89C51有如下中斷源 :外部中斷0請求,低電平有效 :外部中斷1請求,低電平有效T0:定時器、計數器0溢出中斷請求T1:定時器、計數器1溢出中斷請求TX/RX:串行接口中斷請求(2)通過對特殊功能寄存器TCON、SCON、IE、IP的各位進行置位或復位等操作,可實現各種中斷控制功能5、什么是中斷優(yōu)先級?中斷優(yōu)先處理的原則是什么?答:中斷優(yōu)先級是CPU相應中斷的先后順序。原則:(1)   先響應優(yōu)先級高的中斷請求,再響應優(yōu)先級低的(2)   如果一個中斷請求已經被響應,同級的其它中斷請求將被

40、禁止(3)   如果同級的多個請求同時出現,則CPU通過內部硬件查詢電路,按查詢順序確定應該響應哪個中斷請求查詢順序:外部中斷0定時器0中斷外部中斷1定時器1中斷串行接口中斷6、說明外部中斷請求的查詢和響應過程。答:當CPU執(zhí)行主程序第K條指令,外設向CPU發(fā)出中斷請求,CPU接到中斷請求信號并在本條指令執(zhí)行完后,中斷主程序的執(zhí)行并保存斷點地址,然后轉去響應中斷。CPU在每個S5P2期間順序采樣每個中斷源,CPU在下一個機器周期S6期間按優(yōu)先級順序查詢中斷標志,如果查詢到某個中斷標志為1,將在接下來的機器周期S1期間按優(yōu)先級進行中斷處理,中斷系統(tǒng)通過硬件自動將相應的中斷矢量

41、地址裝入PC,以便進入相應的中斷服務程序。中斷服務完畢后,CPU返回到主程序第K+1條指令繼續(xù)執(zhí)行。7、89C51在什么條件下可響應中斷? 答:(1)   有中斷源發(fā)出中斷請求 (2)   中斷中允許位EA=1.即CPU開中斷(3)   申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽(4)   無同級或更高級中斷正在服務(5)   當前指令周期已經結束(6)   若現行指令為RETI或訪問IE或IP指令時,該指令以及緊接著的另一條指令已執(zhí)行完畢8、簡述89C51單片機的中

42、斷響應過程。答:CPU在每個機器周期S5P2期間順序采樣每個中斷源,CPU在下一個機器周期S6期間按優(yōu)先級順序查詢中斷標志,如查詢到某個中斷標志為1,將在接下來的機器周期S1期間按優(yōu)先級進行中斷處理,中斷系統(tǒng)通過硬件自動將相應的中斷矢量地址裝入PC,以便進入相應的中斷服務程序。一旦響應中斷,89C51首先置位相應的中斷“優(yōu)先級生效”觸發(fā)器,然后由硬件執(zhí)行一條長調用指令,把當前的PC值壓入堆棧,以保護斷點,再將相應的中斷服務的入口地址送入PC,于是CPU接著從中斷服務程序的入口處開始執(zhí)行。對于有些中斷源,CPU在響應中斷后會自動清除中斷標志。9、在89C51內存中,應如何安排程序區(qū)?答:主程序一

43、般從0030H開始,主程序后一般是子程序及中斷服務程序。在這個大家還要清除各個中斷的中斷矢量地址。10、試述中斷的作用及中斷的全過程。答:作用:對外部異步發(fā)生的事件作出及時的處理 過程:中斷請求,中斷響應,中斷處理,中斷返回11、當正在執(zhí)行某一個中斷源的中斷服務程序時,如果有新的中斷請求出現,試問在什么情況下可響應新的中斷請求?在什么情況下不能響應新的中斷請求?答:(1)符合以下6個條件可響應新的中斷請求:a)有中斷源發(fā)出中斷請求b)中斷允許位EA=1,即CPU開中斷c)申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽 d)無同級或更高級中斷正在被服務e)當前的指令周期已結束f)若現行指令為

44、RETI或訪問IE或IP指令時,該指令以及緊接著的另一條指令已被執(zhí)行完12、89C51單片機外部中斷源有幾種觸發(fā)中斷請求的方法?如何實現中斷請求?答:有兩種方式:電平觸發(fā)和邊沿觸發(fā)電平觸發(fā)方式:CPU在每個機器周期的S5P2期間采樣外部中斷引腳的輸入電平。若為低電平,使IE1(IE0)置“1”,申請中斷;若為高電平,則IE1(IE0)清零。邊沿觸發(fā)方式:CPU在每個機器周期S5P2期間采樣外部中斷請求引腳的輸入電平。如果在相繼的兩個機器周期采樣過程中,一個機器周期采樣到外部中斷請求為高電平,接著下一個機器周期采樣到外部中斷請求為低電平,則使IE1(IE0)置“1”申請中斷;否則,IE1(IE0

45、)置0。13、89C51單片機有五個中斷源,但只能設置兩個中斷優(yōu)先級,因此,在中斷優(yōu)先級安排上受到一定的限制。試問以下幾種中斷優(yōu)先順序的安排(級別由高到低)是否可能:若可能,則應如何設置中斷源的中斷級別:否則,請簡述不可能的理由。 定時器0,定時器1,外中斷0,外中斷1,串行口中斷。 可以,MOV IP,#0AH 串行口中斷,外中斷0,定時器0,外中斷1,定時器1。 可以,MOV IP,#10H 外中斷0,定時器1,外中斷1,定時器0,串行口中斷。 不可以,只能設置一級高級優(yōu)先級,如果將INT0,T1設置為高級,而T0級別 高于INT1. 外中斷0,外中斷1,串行口中斷, 定時器0,定時器1

46、。 可以,MOV IP,#15H 串行口中斷,定時器0,外中斷0,外中斷1,定時器1。 不可以 外中斷0,外中斷1,定時器0,串行口中斷,定時器1 。 不可以 外中斷0,定時器1,定時器0,外中斷1,串行口中斷。 可以,MOV IP,#09H14、89C51各中斷源的中斷標志是如何產生的?又是如何清0的?CPU響應中斷時,中斷入口地址各是多少?答:各中斷標志的產生和清“0”如下:(1)   外部中斷類外部中斷是由外部原因引起的,可以通過兩個固定引腳,即外部中斷0和外部中斷1輸入信號。外部中斷0請求信號,由P3.2腳輸入。通過IT0來決定中斷請求信號是低電平有效還是下跳變有效

47、。一旦輸入信號有效,則向CPU申請中斷,并且使IE0=1。硬件復位。外部中斷1請求信號,功能與用法類似外部中斷0(2)   定時中斷類定時中斷是為滿足定時或計數溢出處理需要而設置的。當定時器/計數器中的計數結構發(fā)生計數溢出的,即表明定時時間到或計數值已滿,這時就以計數溢出信號作為中斷請求,去置位一個溢出標志位。這種中斷請求是在單片機芯片內部發(fā)生的,無需在芯片上設置引入端,但在計數方式時,中斷源可以由外部引入。TF0:定時器T0溢出中斷請求。當定時器T0產生溢出時,定時器T0請求標志TF0=1,請求中斷處理。使用中斷時由硬件復位,在查詢方式下可由軟件復位。TF1:定時器T1溢

48、出中斷請求。功能與用法類似定時器T0(3)   串行口中斷類串行口中斷是為串行數據的傳送需要而設置的。串行中斷請求也是在單片機芯片內部發(fā)生的,但當串行口作為接收端時,必須有一完整的串行幀數據從RI端引入芯片,才可能引發(fā)中斷。RI或TI:串行口中斷請求。當接收或發(fā)送一串幀數據時,使內部串行口中斷請求標志RI或TI=1,并請求中斷。響應后必須軟件復位。 CPU響應中斷時,中斷入口地址如下: 中斷源 入口地址外部中斷0 0003H定時器T0中斷 000BH外部中斷1 0013H定時器T1中斷 001BH串行口中斷 0023H15、中斷響應時間是否為確定不變的?為什么?答:中斷響應

49、時間不是確定不變的。由于CPU不是在任何情況下對中斷請求都予以響應的;此外,不同的情況對中斷響應的時間也是不同的。下面以外部中斷為例,說明中斷響應的時間。在每個機器周期的S5P2期間, 端的電平被所存到TCON的IE0位,CPU在下一個機器周期才會查詢這些值。這時滿足中斷響應條件,下一條要執(zhí)行的指令將是一條硬件長調用指令“LCALL”,使程序轉入中斷矢量入口。調用本身要用2個機器周期,這樣,從外部中斷請求有效到開始執(zhí)行中斷服務程序的第一條指令,至少需要3個機器周期,這是最短的響應時間。如果遇到中斷受阻的情況,這中斷響應時間會更長一些。例如,當一個同級或更高級的中斷服務程序正在進行,則附加的等待時間取決于正在進行的中斷服務程序:如果正在執(zhí)行的一條指令還沒有進行到最后一個機器周期,附加的等待時間為13個機器周期;如果正在執(zhí)行的是RETI指令或者訪問IE或IP的指令,則附加的等待時間在5個機器周期內。若系統(tǒng)中只有一個中斷源,則響應時間為38個機器周期。16、中斷響應過

溫馨提示

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

評論

0/150

提交評論