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

下載本文檔

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

文檔簡介

1、單片機原理及接口技術習題答 案第四版李朝青(修訂后)單片機原理及接口技術課后習題答案(第四版)李朝青第一章1 .什么是微處理器(CPU)、微機和單片機?答 微處理器本身不是計算機,但它是小型計算機或微機的控制和處理部分。微機則是具有完整運算及控制功能的計算機,除了微處理器外還包括存儲器、接口適配器以及輸入輸出設備等。單片機是將微處理器、一定容量的RAM ROW及I/O 口、定時器等電路集成在一塊芯片上,構(gòu)成的單片微型計算機。2 .單片機具有哪些特點(1)片內(nèi)存儲容量越來越大。(2抗干擾性好,可靠性高。(3)芯片引線齊全,容易擴展。(4)運行速度高,控制功能強。(5)單片機內(nèi)部的數(shù)據(jù)信息保存時間

2、很長,有的芯片可以達到100年以上。3 .微型計算機怎樣執(zhí)行一個程序?答:通過CPU旨令,提到內(nèi)存當中,再逐一執(zhí)行。4 .微型計算機由那幾部分構(gòu)成?微處理器,存儲器,接口適配器(即I/O接口),I/O設備第二章1.89C51單片機內(nèi)包含哪些主要邏輯功能部件?答:80C51系列單片機在片內(nèi)集成了以下主要邏輯功能部件:(l)CPU(中央處理器):8位(2)片內(nèi) RAM:128B(3) 特殊功能寄存器:21個(4) 程序存儲器:4KB(5) 并行I/O 口 :8位,4個(6) 串行接口:全雙工,1個(7) 定時器/計數(shù)器:16位,2個(8)片內(nèi)時鐘電路:1個22. 89c51的EA端有何用途?答:/

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

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

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

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

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

8、第一功能第二功能用行口:P3.0P3.1RXDTXD中斷:(用行輸入口)(用行輸出口)P3.2INT0外部中斷0P3.3INT1外部中斷1定時器/計數(shù)器(T0、T1):P3.4T0(定時器/計數(shù)器0的外部輸入)44P3.5T1(定時器/計數(shù)器1的外部輸入)數(shù)據(jù)存儲器選通:P3.6WRP3.7RD(外部存儲器寫選通,(外部存儲器讀選通,低電平有效,輸出)低電平有效,輸出)定時器/計數(shù)器(T2):P1.0T2P1.1T2EX(定時器T2的計數(shù)端)(定時器T2的外部輸入端)13. 內(nèi)部RAM氐128字節(jié)單元劃分為哪3個主要部分?各部分主要功能是什么? 答:片內(nèi)RAM氐128單元的劃分及主要功能:(1

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

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

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

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

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

14、數(shù)的 CPUJ存器PC指針,PC指針是被CALL 指令自動壓入SP所指向的片內(nèi)存儲器,CPU寄存器要由用戶用PUSH旨令自行保 存,因此SP的作用就是一個指針,當進行中斷調(diào)用,子函數(shù)調(diào)用時將現(xiàn)場數(shù)據(jù)壓 入SP所指向的存儲器,SP自動增加1或2,當中斷結(jié)束RETI,調(diào)用返回RET,POP 時將SP數(shù)據(jù)彈出,SP自動減1或,2 8051最大為128字節(jié)的片內(nèi)存儲器,21 . 89C51有幾種低功耗方式?如何實現(xiàn)? 答:空閑方式和掉電方式空閑方式和掉電方式是通過對 SFR中的PCON地址87H)相應位置1而啟 動的。當CPUft行完置IDL=1(PCON.1)的指令后,系統(tǒng)進入空閑工作方式。這時,內(nèi)

15、 部時鐘不向CPUS供,而只供給中斷、用行口、定時器部分。CPU勺內(nèi)部狀態(tài)維持,即包括堆棧指針SR程序計數(shù)器PC程序X犬態(tài)字PSW累加器ACC所有的 內(nèi)容保持不變,端口狀態(tài)也保持不變。ALE和PSEN呆持邏輯高電平。當CPU行一條置PCON.1B (PD為1的指令后,系統(tǒng)進入掉電工作方式。在 這種工作方式下,內(nèi)部振蕩器停止工作。由于沒有振蕩時鐘,因此,所有的功 能部件都停止工作。但內(nèi)部 RAM區(qū)和特殊功能寄存器的內(nèi)容被保留,而端口的 輸出狀態(tài)值都保存在對應的 SFR中,ALE和PSENTB為低電平。22 . PC與DPTR&有哪些特點?有何異同?23 (1)程序計數(shù)器PC作為不可尋址寄

16、存器的特點程序計數(shù)器PC是中央控制器中最基本的寄存器,是一個獨立的計數(shù)器,存 放著下一條將程序存儲器中取出的指令的地址。程序計數(shù)器PC變化的軌跡決定程序的流程。程序計數(shù)器的寬度決定了程序 存儲器可以尋址的范圍。程序計數(shù)器PC的基本工彳方式有:程序計數(shù)器PC自動加1。這是最基本的工作方式,也是這個專用寄存器 被稱為計數(shù) 器的原因。執(zhí)行條件或無條件轉(zhuǎn)移指令時,程序計數(shù)器將被置入新的數(shù)值,程序的 流向發(fā)生變化。變化的方式有下列幾種:帶符號的相對跳轉(zhuǎn)SJMP短跳轉(zhuǎn)AJMP長跳轉(zhuǎn)LJMP及JMP A+DPT暗。在執(zhí)行調(diào)用指令或響應中斷時: PC的現(xiàn)行值,即下一條將要執(zhí)行的指令的地址送入堆棧,加以保護將子

17、程序的入口地址或者中斷矢量地址送入PC程序流向發(fā)生變化,執(zhí)行子程序或中斷服務程序;子程序或中斷服務程序執(zhí)行完畢,遇到返回指令REM RETI時,將棧頂?shù)膬?nèi)容送到PC寄存器中,程序流程又返回到原來的地方,繼續(xù)執(zhí)行。(2) 地址指針DPTR勺特點地址指針DPTR的特點是,它作為片外數(shù)據(jù)存儲器尋址用的地址寄存器(問接尋址)。(3) 地址指針DPTRf程序計數(shù)器PC的異同相同之處: 兩者都是與地址有關的、16位的寄存器。其中,PC與程序存儲器的地址 有關,而DPTR 與數(shù)據(jù)存儲器的地址有關。 作為地址寄存器使用時,PC與DPTR?是通過P0和P2 口(作為16位地址 總線)輸出的。但是,PC的輸出與A

18、LE及PSENt關;DPTR的輸出,則與 ALE RD 及W濟目聯(lián)系。不同之處: PC只能作為16位寄存器對待,由于有自動加1的功能,故又稱為計數(shù)器;DPTR 可以作為16位寄存器對待,也可以作為兩個 8位寄存器對待。 PC是不可以訪問的,有自己獨特的變化方式,它的變化軌跡決定了程序 執(zhí)行的流程;DPTR 是可以訪問的,如 MOV DPTR #XXXXH INC DPTR23. 89C51端口鎖存器的“讀一修改一寫”操作與“讀弓唧”操作有何區(qū)別?答:指令系統(tǒng)中有些指令讀鎖存器的值 指令是從鎖存器中讀取一個值并進行處理 值)重新寫入鎖存器中。這類指令稱為讀,有些指令則讀引腳上的值。讀鎖存器,把處

19、理后的值(原值或已修改后的-修改-寫指令。對于讀-修改-寫指令。直接讀鎖存器而不是讀端口引腳 ,是因為從引腳上 讀出的數(shù)據(jù)不一定能真正反映鎖存器的狀態(tài)。第三章1、指令:CPU根據(jù)人的意圖來執(zhí)行某種操作的命令指令系統(tǒng):一臺計算機所能執(zhí)行的全部指令集合機器語言:用二進制編碼表示,計算機能直接識別和執(zhí)行的語言匯編語言:用助記符、符號和數(shù)字來表示指令的程序語言高級語言:獨立于機器的,在編程時不需要對機器結(jié)構(gòu)及其指令系統(tǒng)有深入了解的通用性語言2、見第1題3、操作碼目的操作數(shù),源操作數(shù)4、尋址方式尋址空間立即數(shù)尋址程MROM直接尋址片內(nèi)RAM氐128R特殊功能寄存器寄存器尋址工作寄存器 R0-R7 A B

20、、C、DPTR寄存器間接尋址片內(nèi)RAM氐128R 片外RAM變址尋址程序存儲器(A+PC,A+DPTR相對尋址程序存儲器256B范圍(PC編移量)位尋址片內(nèi)RAM勺20H-2FH字節(jié)地址、部分SFR5、要訪問特殊功能寄存器和片外數(shù)據(jù)存儲器,應采用哪些尋址方式?答 SFR:直接尋址,位尋址,寄存器尋址;片外 RAM :寄存器間接尋址6、MOV A, 40H ;直接尋址(40H) 一AMOV R0, A ;寄存器尋址(A) 一R0MOV P1, #0F0H ;立即數(shù)尋址0F0P1MOV R0,30H ;直接尋址(30H) 一( R0)MOV DPTR,#3848H ;立即數(shù)尋址 3848H -DP

21、TRMOV 40H,38H;直接尋址(38H) 一40HMOV R0,30H;直接尋址(30H) 一 R0MOV P0,R0;寄存器尋址 (R0) 一 P0MOV 18H, #30H ;立即數(shù)尋址30H- 18HMOV A, R0;寄存器間接尋址(R0)-AMOV 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、對

22、89C51/S51片內(nèi)RAM的高128字節(jié)的地址空間尋址要注意什么?答用直接尋址,位尋址,寄存器尋址8、指出下列指令的本質(zhì)區(qū)別?MOV A,DATA;直接尋址 2字節(jié)1周期IMOV A,#DATA;立即數(shù)尋址2字節(jié)1周期MOV DATA1,DATA2 ;直接尋址 3字節(jié)2周期MOV 74H,#78H;立即數(shù)尋址3字節(jié)2周期如果想查某一指令的機器碼,字節(jié)數(shù)或周期數(shù)可查閱書本后面的附錄A9、MOVA,R0 ;(R0)=80H 一AMOVR0,40H;(40H)=08H 一(R0)MOV 40H,A ;(A)=80 -40HMOV R0,#35H;35H R0最后結(jié)果:(R0) =35H(A) =8

23、0H, (32H) =08H, (40H) =80H10、如何訪問SFR?用直接尋址,位尋址,寄存器尋址11、如何訪問片外RAM只能采用寄存器間接尋址(用 MOVX指令)12、如何訪問片內(nèi)RAIM低128字節(jié):直接尋址,位尋址,寄存器間接尋址,寄存器尋址(R0R7)高128字節(jié):直接尋址,位尋址,寄存器尋址13、如何訪問片內(nèi)外ROM采用變址尋址(用MOVC指令)14、說明十進制調(diào)整的原因和方法答:壓縮BCD碼在進行加法運算時應逢十進一,而計算機只將其當作十六 進制數(shù)處理,此時得到的結(jié)果不正確。用DA A指令調(diào)整(加06H, 60H, 66H)15、說明89C51/S51的布爾處理機功能答:用來

24、進行位操作;83HA 17H=03H-A;34H V 03H=37H-17H;03H 37H=34H;34H求反等于CBH16、ANL A, #17HORL 17H, AXRL A, R0CPL A所以(A) =CBH17、(1) SETB ACC.0 或 SETB E0H ;E0H 是累加器的地址(2)CLR ACC.7CLR ACC.6CLR ACC.5CLR ACC.4(3)CLR ACC.6CLR ACC.5CLR ACC.4CLR ACC.318、MOV 27H , R7 MOV 26H , R6 MOV 25H , R5 MOV 24H , R4 MOV 23H , R3 MOV

25、22H , R2 MOV 21H , R1 MOV 20H , R019、MOV 2FH , 20MOV 2EH , 21 MOV 2DH , 22 20、CLR C MOV A , #5DH MOV R2 , #B4H SUBB A, R2 MOV 30H , A MOV A , #6FH MOV R2 , #13H SUBB A, R2 MOV 31H , A;被減數(shù)的低8位一A;減數(shù)低8位一 R2;被減數(shù)減去減數(shù),差一 A;低8位結(jié)果一 30H;被減數(shù)的高8位一A;減數(shù)高8位一 R2;被減數(shù)減去減數(shù),差一 A;高8位結(jié)果一 30H注意:如果在你的程序中用到了進位位,在程序開始的時候要記得

26、清0進位位21、(1) A>10CJNE A , #0AH , L1 LJMP LABELL1 : JNC LABEL 或者:CLR CSUBB A, #0AHJNC LABEL(2) A>10CJNE A , #0AH , L1 RETL1 : JNC LABELRET;(A)與10比較,不等轉(zhuǎn)L1;相等轉(zhuǎn)LABEL;(A)大于 10,4L LABEL;(A)與10比較,不等轉(zhuǎn)L1;相等結(jié)束;(A)大于 10,轉(zhuǎn) LABEL;(A)小于10,結(jié)束或者:CLR CSUBB A, #0AHJNC L1RETL1 : JNZ LABELRET(3) A<10CJNE A, #0A

27、H , L1 ; (A)與 10比較,不等轉(zhuǎn) L1L2: LJMP LABEL;相等轉(zhuǎn) LABELL1 : JC L2; (A)小于 10,轉(zhuǎn) L2RET或者:CLR CSUBB A, #0AHJC LABELJZ LABELRET22、(SP) =23H, (PC) =3412H參看書上80頁23、(SP) =27H, (26H) =48H, (27H) =23H, (PC) =3456H參看書上79頁 24、不能。ACALL是短轉(zhuǎn)指令,可調(diào)用的地址范圍是 2KB。在看這個題的時候同時看一下 AJMP指令。同時考慮調(diào)用指令 ACALL和LCALL指令和RET指令的關系25、 MOV R2 ,

28、 #31H ;數(shù)據(jù)塊長度一 R2;數(shù)據(jù)塊首地址一 R0;待查找的數(shù)據(jù)一 A;泊進位位;待查找的數(shù)據(jù)是0AAH嗎MOV R0 , #20H LOOP : MOV A , R0CLR CSUBB A, #0AAHJZ L1INC R0DJNZ R2 , LOOPMOV 51H , #00H;是,轉(zhuǎn)L1;不是,地址增1,;數(shù)據(jù)塊長度減1, ;等于0,未找到,指向下一個待查數(shù)據(jù) 不等于0,繼續(xù)查找 00H-51HRET;源首地址一 DPTR;目的首地址一 R0;傳送一個字符;指向下一個字符;傳送的是“ $”字符嗎?不是,傳送下取該數(shù)高8位一A;取出該數(shù)符號判斷;是正數(shù),轉(zhuǎn)L1;是負數(shù),將該數(shù)低8位一A

29、;低8位取反;加1;低8位取反加1后一 R4;將該數(shù)高8位一A;高8位取反;加上低8位加1時可能產(chǎn)生的進位;高8位取反加1后一 R3;精進位位C;取該數(shù)低8位一A;帶進位位左移1位;結(jié)果存回31HL1 : MOV 51H , #01H;找到,01H 51HRET26、 MOV R2 , #31H;數(shù)據(jù)塊長度一 R2MOV R0 , #20H ;數(shù)據(jù)塊首地址一 R0LOOP: MOV A , R0;待查找的數(shù)據(jù)一 AJNZ L1;不為 0,轉(zhuǎn) L1INC 51H;為0, 00H 個數(shù)增 1L1 : INC R0;地址增1,指向下一個待查數(shù)據(jù)DJNZ R2, LOOP ;數(shù)據(jù)塊長度減1,不等于0,

30、繼續(xù)查找RET27、 MOV DPTR , #SOURCE MOV R0 , #DISTLOOP : MOVX A , DPTR MOV R0 , A INC DPTR INC R0CJNE A , #24H , LOOP 一個字符RET28、 MOV A , R3 ANL A, #80H JZ L1MOV A , R4 CPL AADD A, #01H MOV R4 , A MOV A , R3 CPL AADDC A , #00H MOV R3 , AL1 : RET29、 CLR CMOV A , 31H RLC AMOV 31H , AMOV A , 30H;取該數(shù)高8位一ARLC A

31、;帶進位位左移1位MOV 30H , A ;結(jié)果存回30H30、 MOV R2 , #04H MOV R0 , #30H MOV R1 , #40H CLR CLOOP : MOV A , R0 ADDC A , R1 DA AMOV R0 , A INC R0INC R1;字節(jié)長度一 R2;一個加數(shù)首地址一 R0;另一個加數(shù)首地址一 R1;泊進位位;取一個加數(shù);兩個加數(shù)帶進位位相加;十進制調(diào)整;存放結(jié)果;指向下一個字節(jié)DJNZ R2, LOOP ;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找RET31、 MOV R2 , #08H;數(shù)據(jù)塊長度一 R2MOV R0 , #30H ;數(shù)據(jù)塊目的地址一 R0

32、MOV DPTR , #2000H ;數(shù)據(jù)塊源地址fDPTRLOOP : MOVX A , DPTR ;傳送一個數(shù)據(jù)MOV R0 , AINC DPTR;指向下一個數(shù)據(jù)INC R0;DJNZ R2, LOOP ;數(shù)據(jù)塊長度減1,沒傳送完,繼續(xù)傳送RET;2字節(jié),2周期4字節(jié)4周期(差);2字節(jié),2周期;2字節(jié),1周期 4字節(jié)3周期(中);2字節(jié),2周期;3字節(jié),2周期 3字節(jié)2周期(好)32、(1) MOV R0 , 0FH MOV B , R0(2) MOV R0 , #0FHMOV B , R0(3) MOV B , #0FH 33、(1)功能是將片內(nèi) RAM中50H51H單元清0(2)

33、7A0A (大家可以看一下書上,對于立即數(shù)尋址的話,后面一個字節(jié)存放的是立即數(shù))7850 (第一個字節(jié)的后三位是寄存器,前一個條指令是 010就是指的R2,在這里是R0,所以應該是78,后一個字節(jié)存放的是立即數(shù))DAFC(這里涉及到偏移量的計算,可以參考書上 56頁)34、 INC R0; (7EH) =00HINC R0INC R0 INC DPTR INC DPTRINC DPTR 35、解:(1000H) (1003H) (1006H) (1009H)36、MOV R0, MOV A, R0INC R0ADD A, R0INC R0MOV R0, ACLR AADDC A , #0INC

34、 R0MOV R0 , A;(R0) =7FH;(7FH) =39H;(DPTR) =10FFH;(DPTR) =1100H(DPTR) =1101H(1001H) =54H(1004H) =54H(1007H) =30H=53H=52H=34H=70H#40H(1002H) =41H(1005H) =12H(1008H) =00H;40H -R0;98H-A;41H -R0;98H+ (41H) =47H-A;結(jié)果存入42H單元;清A;進位位存入A;進位位存入43H功能:將40H, 41H單元中的內(nèi)容相加結(jié)果放在42H單元,進位放在43H單元,(R0) =43H, (A) =1, (40H)

35、 =98H, (41H) =AFH , (42H) =47H, (43H) =01H37、 MOV A, 61H MOV B, #02H MUL AB ADD A, 62H MOV 63H , A CLR A ADDCA , BMOV 64H , A;F2H-A;02H fB;F2H X O2H=E4H -A;積的低8位加上CCH -A;結(jié)果送62H;清A;積的高8位加進位位一 A;結(jié)果送64H功能:將61H單元的內(nèi)容乘2,低8位再加上62H單元的內(nèi)容放入63H,將結(jié)果的 高8位放在64H 單元。(A) =02H, (B) =01H, (61H) =F2H , (62H) =CCH ,(63H

36、) =B0H , (64H) =02H 39、MOV A , XXHORL A , #80HMOV XXH , A40、(2) MOV A, XXHMOV R0, AXRL A, R0第五章1、什么是中斷和中斷系統(tǒng)?其主要功能是什么?答:當CPU正在處理某件事情的時候,外部發(fā)生的某一件事件請求CPU迅速去處理,于是,CPU暫時中止當前的工作,轉(zhuǎn)去處理所發(fā)生的事件,中斷服務 處理完該事件以后,再回到原來被終止的地方,繼續(xù)原來的工作。這種過程稱 為中斷,實現(xiàn)這種功能的部件稱為中斷系統(tǒng)。功能:(1) 使計算機具有實時處理能力,能對外界異步發(fā)生的事件作出及時 的處理(2) 完全消除了 CPU在查詢方式

37、中的等待現(xiàn)象,大大提高了 CPU的工 作效率(3) 實現(xiàn)實時控制2、試編寫一段對中斷系統(tǒng)初始化的程序,使之允許 INTO , INT1 , TO,用行口 中斷,且使T0中斷為高優(yōu)先級中斷。解:MOV IE,#097HMOV IP,#02H3、在單片機中,中斷能實現(xiàn)哪些功能?答:有三種功能:分時操作,實時處理,故障處理4、89C51共有哪些中斷源?對其中端請求如何進行控制?答:(1) 89C51有如下中斷源:外部中斷0請求,低電平有效:外部中斷1請求,低電平有效T0:定時器、計數(shù)器0溢出中斷請求T1:定時器、計數(shù)器1溢出中斷請求TX/RX :串行接口中斷請求(2)通過對特殊功能寄存器 TCON、

38、SCON、IE、IP的各位進行置位或復位等 操作,可實現(xiàn)各種中斷控制功能5、什么是中斷優(yōu)先級?中斷優(yōu)先處理的原則是什么?答:中斷優(yōu)先級是CPU相應中斷的先后順序。原則:(1) 先響應優(yōu)先級高的中斷請求,再響應優(yōu)先級低的(2) 如果一個中斷請求已經(jīng)被響應,同級的其它中斷請求將被禁止(3) 如果同級的多個請求同時出現(xiàn),則 CPU通過內(nèi)部硬件查詢電路, 按查詢順序確定應該響應哪個中斷請求查詢順序:外部中斷0一定時器0中斷一外部中斷1 一定時器1中斷一中行接口中 斷6、說明外部中斷請求的查詢和響應過程。答:當CPU執(zhí)行主程序第K條指令,外設向CPU發(fā)出中斷請求,CPU接到中 斷請求信號并在本條指令執(zhí)行

39、完后,中斷主程序的執(zhí)行并保存斷點地址,然后 轉(zhuǎn)去響應中斷。CPU在每個S5P2期間順序采樣每個中斷源,CPU在下一個機 器周期S6ffi間按優(yōu)先級順序查詢中斷標志,如果查詢到某個中斷標志為1,將在 接下來的機器周期S1期間按優(yōu)先級進行中斷處理,中斷系統(tǒng)通過硬件自動將相 應的中斷矢量地址裝入PC,以便進入相應的中斷服務程序。中斷服務完畢后, CPU返回到主程序第K+1條指令繼續(xù)執(zhí)行。7、89C51在什么條件下可響應中斷?答:(4) 有中斷源發(fā)出中斷請求(5) 中斷中允許位EA=1.即CPU開中斷(6) 申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽(7) 無同級或更高級中斷正在服務(8) 當

40、前指令周期已經(jīng)結(jié)束(9) 若現(xiàn)行指令為RETI或訪問IE或IP指令時,該指令以及緊接著的 另一條指令已執(zhí)行完畢8、簡述89C51單片機的中斷響應過程。答:CPU在每個機器周期S5P2期間順序采樣每個中斷源,CPU在下一個機器 周期S6期間按優(yōu)先級順序查詢中斷標志,如查詢到某個中斷標志為1,將在接下 來的機器周期S1期間按優(yōu)先級進行中斷處理,中斷系統(tǒng)通過硬件自動將相應的 中斷矢量地址裝入PC,以便進入相應的中斷服務程序。一旦響應中斷,89C51首先置位相應的中斷“優(yōu)先級生效”觸發(fā)器,然后由硬件執(zhí)行一條長調(diào)用指令, 把當前的PC值壓入堆棧,以保護斷點,再將相應的中斷服務的入口地址送入 PC,于是C

41、PU接著從中斷服務程序的入口處開始執(zhí)行。 對于有些中斷源,CPU 在響應中斷后會自動清除中斷標志。9、在89C51內(nèi)存中,應如何安排程序區(qū)?答:主程序一般從0030H開始,主程序后一般是子程序及中斷服務程序。在這 個大家還要清除各個中斷的中斷矢量地址。10、試述中斷的作用及中斷的全過程。答:作用:對外部異步發(fā)生的事件作出及時的處理過程:中斷請求,中斷響應,中斷處理,中斷返回11、當正在執(zhí)行某一個中斷源的中斷服務程序時,如果有新的中斷請求出現(xiàn),試問在什么情況下可響應新的中斷請求?在什么情況下不能響應新的中斷請求? 答:(1)符合以下6個條件可響應新的中斷請求:a) 有中斷源發(fā)出中斷請求b) 中斷

42、允許位EA=1 ,即CPU開中斷c) 申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽d) 無同級或更高級中斷正在被服務e) 當前的指令周期已結(jié)束f) 若現(xiàn)行指令為RETI或訪問IE或IP指令時,該指令以及緊接著的另一條指令已被執(zhí)行完12、89C51單片機外部中斷源有幾種觸發(fā)中斷請求的方法?如何實現(xiàn)中斷請求? 答:有兩種方式:電平觸發(fā)和邊沿觸發(fā)電平觸發(fā)方式:CPU在每個機器周期的S5P2期間采樣外部中斷引腳的輸入 電平。若為低電平,使IE1(IE0)置“1”,申請中斷;若為高電平,則IE1(IE0) 清零。邊沿觸發(fā)方式:CPU在每個機器周期S5P2期間采樣外部中斷請求引腳的輸 入電平。如果在

43、相繼的兩個機器周期采樣過程中,一個機器周期采樣到外部中 斷請求為高電平,接著下一個機器周期采樣到外部中斷請求為低電平,則使 IE1(IE0)置“1”申請中斷;否則,IE1(IE0)置0。13、89C51單片機有五個中斷源,但只能設置兩個中斷優(yōu)先級,因此,在中斷優(yōu) 先級安排上受到一定的限制。試問以下幾種中斷優(yōu)先順序的安排(級別由高到 低)是否可能:若可能,則應如何設置中斷源的中斷級別:否則,請簡述不可 能的理由。(1)定時器0,定時器1,外中斷0,外中斷1,用行口中斷。可以,MOV IP,#0AH用行口中斷,外中斷0,定時器0,外中斷1,定時器1??梢?,MOV IP,#10H(3)外中斷0,定時

44、器1,外中斷1,定時器0,用行口中斷。不可以,只能設置一級高級優(yōu)先級,如果將 INT0,T1設置為高級,而T0級別 高于INT1.外中斷0,外中斷1,用行口中斷,定時器0,定時器1。可以,MOV IP,#15H用行口中斷,定時器0,外中斷0,外中斷1,定時器1。不可以外中斷0,外中斷1,定時器0,用行口中斷,定時器1。不可以 外中斷0,定時器1,定時器0,外中斷1,用行口中斷??梢?,MOV IP,#09H14、89C51各中斷源的中斷標志是如何產(chǎn)生的?又是如何清 0的? CPU響應中斷 時,中斷入口地址各是多少?答:各中斷標志的產(chǎn)生和清“ 0”如下:(1) 外部中斷類外部中斷是由外部原因引起的

45、,可以通過兩個固定引腳,即外部中斷0和外部中斷1輸入信號。外部中斷0請求信號,由P3.2卻輸入。通過IT0來決定中斷請求信號是低電 平有效還是下跳變有效。一旦輸入信號有效,則向 CPU申請中斷,并且使 IE0=1。硬件復位。外部中斷1請求信號,功能與用法類似外部中斷0(2) 定時中斷類定時中斷是為滿足定時或計數(shù)溢出處理需要而設置的。當定時器/計數(shù)器中的計數(shù)結(jié)構(gòu)發(fā)生計數(shù)溢出的,即表明定時時間到或計數(shù)值已滿,這時就以 計數(shù)溢出信號作為中斷請求,去置位一個溢出標志位。這種中斷請求是在 單片機芯片內(nèi)部發(fā)生的,無需在芯片上設置引入端,但在計數(shù)方式時,中 斷源可以由外部引入。TF0:定時器T0溢出中斷請求

46、。當定時器 T0產(chǎn)生溢出時,定時器T0請求 標志TF0=1 ,請求中斷處理。使用中斷時由硬件復位,在查詢方式下可由 軟件復位。TF1:定時器T1溢出中斷請求。功能與用法類似定時器 T0(3) 用行口中斷類用行口中斷是為串行數(shù)據(jù)的傳送需要而設置的。用行中斷請求也是在單片 機芯片內(nèi)部發(fā)生的,但當用行口作為接收端時,必須有一完整的串行幀數(shù) 據(jù)從RI端引入芯片,才可能引發(fā)中斷。RI或TI :用行口中斷請求。當接收或發(fā)送一申幀數(shù)據(jù)時,使內(nèi)部用行口中 斷請求標志RI或TI=1 ,并請求中斷。響應后必須軟件復位。CPU響應中斷時,中斷入口地址如下:中斷源入口地址外部中斷00003H定時器T0中斷000BH外

47、部中斷10013H定時器T1中斷001BH用行口中斷 0023H15、中斷響應時間是否為確定不變的?為什么?答:中斷響應時間不是確定不變的。由于 CPU不是在任何情況下對中斷請求都 予以響應的;此外,不同的情況對中斷響應的時間也是不同的。下面以外部中 斷為例,說明中斷響應的時間。在每個機器周期的S5P2期間,端的電平被所存到TCON的IE0位,CPU在下一 個機器周期才會查詢這些值。這時滿足中斷響應條件,下一條要執(zhí)行的指令將 是一條硬件長調(diào)用指令" LCALL ”,使程序轉(zhuǎn)入中斷矢量入口。調(diào)用本身要用2 個機器周期,這樣,從外部中斷請求有效到開始執(zhí)行中斷服務程序的第一條指 令,至少需

48、要3個機器周期,這是最短的響應時間。如果遇到中斷受阻的情況,這中斷響應時間會更長一些。例如,當一個同級或 更高級的中斷服務程序正在進行,則附加的等待時間取決于正在進行的中斷服 務程序:如果正在執(zhí)行的一條指令還沒有進行到最后一個機器周期,附加的等 待時間為13個機器周期;如果正在執(zhí)行的是 RETI指令或者訪問IE或IP的指 令,則附加的等待時間在5個機器周期內(nèi)。若系統(tǒng)中只有一個中斷源,則響應時間為 38個機器周期。16、中斷響應過程中,為什么通常要保護現(xiàn)場?如何保護?答:因為一般主程序和中斷服務程序都可能會用到累加器,PSW寄存器及其他一些寄存器。CPU在進入中斷服務程序后,用到上述寄存器時,就

49、會破壞它原 來存在寄存器中的內(nèi)容;一旦中斷返回,將會造成主程序的混亂。因而在進入 中斷服務程序后,一般要先保護現(xiàn)場,然后再執(zhí)行中斷處理程序,在返回主程 序以前再恢復現(xiàn)場。保護方法一般是把累加器、PSW寄存器及其他一些與主程序有關的寄存器壓入 堆棧。在保護現(xiàn)場和恢復現(xiàn)場時,為了不使現(xiàn)場受到破壞或者造成混亂,一般 規(guī)定此時CPU不響應新的中斷請求。這就要求在編寫中斷服務程序時,注意在 保護現(xiàn)場之前要關中斷,在恢復現(xiàn)場之后開中斷。如果在中斷處理時允許有更 高級的中斷打斷它,則在保護現(xiàn)場之后再開中斷,恢復現(xiàn)場之前關中斷。17、清敘述中斷響應的CPU操作過程,為什么說中斷操作是一個 CPU的微查 詢過程

50、?答:在中斷響應中,CPU要完成以下自主操作過程:a) 置位相應的優(yōu)先級狀態(tài)觸發(fā)器,以標明所響應中斷的優(yōu)先級別b) 中斷源標志清零(TI、RI除外)c) 中斷斷點地址裝入堆棧保護(不保護 PSW)d) 中斷入口地址裝入PC,以便使程序轉(zhuǎn)到中斷入口地址處在計算機內(nèi)部,中斷表現(xiàn)為 CPU的微查詢操作。89C51單片機中,CPU在每個 機器周期的S6犬態(tài),查詢中斷源,并按優(yōu)先級管理規(guī)則處理同時請求的中斷源, 且在下一個機器周期的S1狀態(tài)中,響應最高級中斷請求。但是以下情況除外:a) CPU正在處理相同或更高優(yōu)先級中斷b) 多機器周期指令中,還未執(zhí)行到最后一個機器周期c) 正在執(zhí)行中斷系統(tǒng)的SFR操作

51、,如RETI指令及訪問IE、IP等操作 時,要延后一條指令18、在中斷請求有效并開中斷狀況下,能否保證立即響應中斷?有什么條件? 答:在中斷請求有效并開中斷狀況下,并不能保證立即響應中斷。這是因為, 在計算機內(nèi)部,中斷表現(xiàn)為 CPU的微查詢操作。89C51單片機中,CPU在每個 機器周期的S6犬態(tài)下,查詢中斷源,并按優(yōu)先級管理規(guī)則處理同時請求的中斷 源,且在下一個機器周期的S1狀態(tài)中,響應最高級中斷請求。在以下情況下,還需要有另外的等待:a) CPU正在處理相同或更高優(yōu)先級中斷b) 多機器周期指令中,還未執(zhí)行到最后一個機器周期c) 正在執(zhí)行中斷系統(tǒng)的SFR操作,如RETI指令及訪問IE、IP等

52、操作時,要延后一條指令第6章習題1、定時器模式2有什么特點?適用于什么場合?答:(1) 模式2把TL0(或TL1)配置成一個可以自動重裝載的8位定時器/計數(shù) 器。TL0計數(shù)溢出時不僅使溢出中斷標志位 TF0置1,而且還自動把 TH0中的內(nèi)容重新裝載到TL0中。TL0用作8位計數(shù)器,TH0用以保 存初值。(2) 用于定時工作方式時間(TF0溢出周期)為,用于計數(shù)工作方式時, 最大計數(shù)長度(TH0初值=0)為28=256個外部脈沖。L這種工作方式可省去用戶軟件重裝初值的語句,并可產(chǎn)生相當精確定時時間, 特別適于作用行波特率發(fā)生器。2、單片機內(nèi)部定時方式產(chǎn)生頻率為100KHz等寬矩形波,假定單片機的

53、晶振頻 率為12MHz,請編程實現(xiàn)。T0 低 5位:1BHT0 高8位:FFHMOV TMOD,#00H;設置定時器T0工作于模式0MOV TL0,#1BHMOV TH0,#0FFHSETB TR0LOOP:JBC TF0,L1;SJMP LOOPL1 : MOV TL0,#1BHMOV TH0,#0FFHCPL P1.0SJMP LOOP;設置5ms定時初值;啟動T0查詢到定時時間到?時間到轉(zhuǎn) L1;時間未到轉(zhuǎn)LOOP ,繼續(xù)查詢;重新置入定時初值;輸出取反,形成等寬矩形波;重復循環(huán) 3、89C51定時器有哪幾種工作模式?有何區(qū)別?答:有四種工作模式:模式0,模式1,模式2,模式3(1) 模

54、式0:選擇定時器的高8位和低5位組成一個13位定時器/計數(shù)器。ITL低5位溢出時向TH進位,TH溢出時向中斷標志位TF進位,并 申請中斷。定時時間t=(213-初值)X振蕩周期X 12;計數(shù)長度位213=8192個外部脈沖(2) 模式1:與模式0的唯一差別是寄存器TH和TL以全部16位參與操作。定時時間t=(216-初值)X振蕩周期X 12;計數(shù)長度位216=65536個 外部脈沖(3) 模式2:把TL0和TL1配置成一個自動重裝載的8位定時器/計數(shù)器。TL用作8位計數(shù)器,TH用以保存初值。TL計數(shù)溢出時不僅使TF0 置1,而且還自動將TH中的內(nèi)容重新裝載到TL中。定時時間t=(28-初值)X振蕩周期X 12;計數(shù)長度位28=256個外部脈沖(4) 模式3:對T0和T1不大相同若設T0位模式3, TL0和TH0被分為兩個相互獨立的8位計數(shù)器。TL0為8 位計數(shù)器,功能與模式0和模式1相同,可定時可計數(shù)。TH0僅用作簡單的內(nèi)部定時功能,它占用了定時器T1的控制位TR1和中斷標志位TF1 ,啟動和關閉僅受TR1控制。定時器T1無工作模式3,但T0在工作模式3時T1仍可設置為02。4、89C51內(nèi)部設有幾

溫馨提示

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

評論

0/150

提交評論