單片微型計(jì)算機(jī)原理與應(yīng)用答案.doc_第1頁
單片微型計(jì)算機(jī)原理與應(yīng)用答案.doc_第2頁
單片微型計(jì)算機(jī)原理與應(yīng)用答案.doc_第3頁
單片微型計(jì)算機(jī)原理與應(yīng)用答案.doc_第4頁
單片微型計(jì)算機(jī)原理與應(yīng)用答案.doc_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

習(xí)題22.1 MCS-51單片機(jī)內(nèi)部包含哪些主要邏輯功能部件?答:微處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、特殊功能寄存器(SFR)、并行I/O口、串行通信口、定時(shí)器/計(jì)數(shù)器及中斷系統(tǒng)。2.2 說明程序計(jì)數(shù)器PC和堆棧指針SP的作用。復(fù)位后PC和SP各為何值?答:程序計(jì)數(shù)器PC中存放將要執(zhí)行的指令地址,PC有自動加1功能,以實(shí)現(xiàn)程序的順序執(zhí)行。它是SFR中唯一隱含地址的,因此,用戶無法對它進(jìn)行讀寫。但在執(zhí)行轉(zhuǎn)移、調(diào)用、返回等指令時(shí)能自動改變其內(nèi)容,以實(shí)現(xiàn)改變程序的執(zhí)行順序。程序計(jì)數(shù)器PC中內(nèi)容的變化決定程序的流程,在執(zhí)行程序的工作過程中,由PC輸出將要執(zhí)行的指令的程序存儲器地址,CPU讀取該地址單元中存儲的指令并進(jìn)行指令譯碼等操作,PC則自動指向下一條將要執(zhí)行的指令的程序存儲器地址。SP是一個(gè)8位的SFR,它用來指示堆棧頂部在內(nèi)部RAM中的位置。系統(tǒng)復(fù)位后SP為07H,若不對SP設(shè)置初值,則堆棧在08H開始的區(qū)域,為了不占用工作寄存器R0R7的地址,一般在編程時(shí)應(yīng)設(shè)置SP的初值(最好在30H7FH區(qū)域)。2.3 程序狀態(tài)字寄存器PSW的作用是什么?其中狀態(tài)標(biāo)志有哪幾位?它們的含義是什么?答:PSW是保存數(shù)據(jù)操作的結(jié)果標(biāo)志,其中狀態(tài)標(biāo)志有CY(PSW.7):進(jìn)位標(biāo)志,AC(PSW.6):輔助進(jìn)位標(biāo)志,又稱半進(jìn)位標(biāo)志,F(xiàn)0、F1(PSW.5、PSW.1):用戶標(biāo)志;OV(PSW.2):溢出標(biāo)志;P(PSW.0):奇偶標(biāo)志。2.4 什么是堆棧? 堆棧有何作用? 為什么要對堆棧指針SP重新賦值? SP的初值應(yīng)如何設(shè)定?答:堆棧是一種數(shù)據(jù)結(jié)構(gòu),所謂堆棧就是只允許在其一端進(jìn)行數(shù)據(jù)寫入和數(shù)據(jù)讀出的線性表。其主要作用有兩個(gè):保護(hù)斷點(diǎn)和保護(hù)現(xiàn)場。堆棧區(qū)的設(shè)置原則上可以在內(nèi)部RAM的任意區(qū)域,但由于MCS-51單片機(jī)內(nèi)部RAM的00H1FH地址單元已被工作寄存器R0R7占用,20H2FH為位尋址區(qū),故堆棧一般設(shè)在30H7FH(對于8032系列芯片可為30H0FFH)的區(qū)域內(nèi)。單片機(jī)復(fù)位后,SP的內(nèi)容為07H,堆棧事實(shí)上由08H單元開始,考慮到08H1FH單元分別屬于13組的工作寄存器區(qū),則最好把SP值改置為1FH或更大的值。2.5 開機(jī)復(fù)位后,CPU使用的是哪組工作寄存器? 它們的地址如何? CPU如何指定和改變當(dāng)前工作寄存器組?答:開機(jī)復(fù)位后使用的是0組工作寄存器,它們的地址是00H07H,對程序狀態(tài)字PSW中的RS1和RS0兩位進(jìn)行編程設(shè)置,可指定和改變當(dāng)前工作寄存器組。RS1、RS0=00H時(shí),當(dāng)前工作寄存器被指定為0組;RS1、RS0=01H時(shí),當(dāng)前工作寄存器被指定為1組;RS1、RS0=10H時(shí),當(dāng)前工作寄存器被指定為2組;RS1、RS0=11H時(shí),當(dāng)前工作寄存器被指定為3組。2.6 MCS-51的時(shí)鐘周期、機(jī)器周期、指令周期是如何定義的?當(dāng)振蕩頻率為12MHz時(shí),一個(gè)機(jī)器周期為多少微秒?答: 時(shí)鐘周期也稱為振蕩周期,定義為時(shí)鐘脈沖的倒數(shù),是計(jì)算機(jī)中最基本的、最小的時(shí)間單位。 CPU取出一條指令至該指令執(zhí)行完所需的時(shí)間稱為指令周期,因不同的指令執(zhí)行所需的時(shí)間可能不同,故不同的指令可能有不同的指令周期。 機(jī)器周期是用來衡量指令或程序執(zhí)行速度的最小單位。它的確定原則是以最小指令周期為基準(zhǔn)的,即一個(gè)最小指令周期為一個(gè)機(jī)器周期。當(dāng)振蕩頻率為12MHz時(shí),一個(gè)機(jī)器周期1微秒2.7 MCS-51單片機(jī)的控制信號、有哪些功能?答:是訪問程序存儲器控制信號。當(dāng)端接低電平時(shí),則不管芯片內(nèi)部是否有程序存儲器,CPU只訪問外部程序存儲器。對8031來說,因其內(nèi)部無程序存儲器,所以該引腳必須接地。當(dāng)端接高電平時(shí),CPU訪問內(nèi)部程序存儲器,但當(dāng)PC(程序計(jì)數(shù)器)值超過某一值時(shí),將自動轉(zhuǎn)向片外程序存儲器1000H地址繼續(xù)執(zhí)行程序。是地址鎖存允許信號。當(dāng)CPU訪問外部存儲器或I/O接口時(shí),ALE輸出脈沖的下降沿用于鎖存16位地址的低8位。在不訪問外部存儲器或I/O接口時(shí),ALE端有周期性正脈沖輸出,其頻率為振蕩頻率的1/6。但是,每當(dāng)訪問外部數(shù)據(jù)存儲器或I/O接口時(shí),在第二個(gè)機(jī)器周期中ALE只出現(xiàn)一次,即丟失一個(gè)ALE脈沖。片外程序存儲器讀選通信號。在CPU從外部程序存儲器讀取指令(或常數(shù))期間,每個(gè)機(jī)器周期兩次有效,但在訪問外部數(shù)據(jù)存儲器或I/O接口時(shí),信號將不出現(xiàn)。端可以驅(qū)動8個(gè)TTL負(fù)載。2.9 簡述MCS-51內(nèi)部數(shù)據(jù)存儲器的存儲空間分配。答:內(nèi)部數(shù)據(jù)存儲器分為3個(gè)區(qū)域:工作寄存器區(qū)(00H1FH);位尋址區(qū)(20H2FH);堆棧和數(shù)據(jù)緩沖器區(qū)(30H7FH或30H0FFH)。2.10 位地址和字節(jié)地址有何區(qū)別? 位地址20H具體在內(nèi)存中什么位置?答:MCS-51的位存儲器由以內(nèi)部RAM中20H2FH單元和特殊功能寄存器中地址為8的倍數(shù)的特殊功能寄存器兩部分組成。其中每個(gè)單元的每一位都有一個(gè)位地址映像,它們既可以像普通內(nèi)部RAM單元一樣按字節(jié)存取,也可以對單元中的任何一位單獨(dú)存取。字節(jié)地址是內(nèi)部RAM中和特殊功能寄存器中每個(gè)存儲單元的地址。位地址20H是內(nèi)部RAM24H中的D0位。2.11 8051的4個(gè)IO口作用是什么? 8051的片外三總線是如何分配的?答:MCS-51單片機(jī)有4個(gè)8位并行I/O端口,分別記作P0、P1、P2、P3口。 在訪問片外擴(kuò)展存儲器時(shí), P0口分時(shí)傳送低8位地址和數(shù)據(jù), P2口傳送高8位地址。P1口通常作為通用I/O口供用戶使用。P3口具有第二功能,為系統(tǒng)提供一些控制信號。在無片外擴(kuò)展存儲器的系統(tǒng)中,這4個(gè)口均可作為通用I/O端口使用。在作為通用I/O端口使用時(shí),這4個(gè)口都是準(zhǔn)雙向口。 在訪問片外擴(kuò)展存儲器時(shí),片外三總線的構(gòu)成:P0口傳送低8位地址經(jīng)鎖存器所存構(gòu)成低8位地址總線,高8位地址總線由P2口構(gòu)成。P0口作為單片機(jī)系統(tǒng)的低8位地址/數(shù)據(jù)線分時(shí)復(fù)用,在低8位地址鎖存后,P0口作為雙向數(shù)據(jù)總線。由P3口的第二功能輸出數(shù)據(jù)存儲器的讀、寫控制信號與片外程序存儲器讀選通信號,訪問程序存儲器控制信號,地址鎖存允許信號構(gòu)成控制總線。習(xí)題33.1 匯編語句是由4個(gè)部分(字段)構(gòu)成的,簡述各部分的含義。答:匯編語句的4個(gè)部分為:標(biāo)號: 操作碼 操作數(shù);注釋標(biāo)號是用戶設(shè)定的一個(gè)符號,表示存放指令或數(shù)據(jù)的存儲單元地址。標(biāo)號由以字母開始的18個(gè)字母或數(shù)字串組成,以冒號結(jié)尾。不能用指令助記符、偽指令或寄存器名來作標(biāo)號。標(biāo)號是任選的,并不是每條指令或數(shù)據(jù)存儲單元都要標(biāo)號,只在需要時(shí)才設(shè)標(biāo)號。如轉(zhuǎn)移指令所要訪問的存儲單元前面一般要設(shè)置標(biāo)號。一旦使用了某標(biāo)號定義一個(gè)地址單元,在程序的其它地方就不能隨意修改這個(gè)定義,也不能重復(fù)定義。操作碼是指令或偽指令的助記符,用來表示指令的性質(zhì)或功能。對于一條匯編語言指令,這個(gè)字段是必不可少的。操作數(shù)給出參加運(yùn)算(或其它操作)的數(shù)據(jù)或數(shù)據(jù)的地址。操作數(shù)可以表示為工作寄存器名、特殊功能寄存器名、標(biāo)號名、常數(shù)、表達(dá)式等。這一字段可能有,也可能沒有。若有兩個(gè)或三個(gè)操作數(shù),它們之間應(yīng)以逗號分開。注釋字段不是匯編語言的功能部分,只是增加程序的可讀性。言簡意賅的注釋是匯編語言程序編寫中的重要組成部分。3.2舉例說明MCS-51單片機(jī)的7種尋址方式,各尋址方式的尋址空間。立即尋址立即尋址方式的尋址空間為程序存儲器。 例如: MOV A,#3FH ;3FHA直接尋址直接尋址方式中操作數(shù)存儲的空間有三種: 內(nèi)部數(shù)據(jù)存儲器的低128個(gè)字節(jié)單元(00H7FH)例如: MOV A,30H ;(30H)A指令功能是把內(nèi)部RAM 30H單元中的內(nèi)容送入累加器A。 位地址空間例如: MOV C,00H ;直接位00H內(nèi)容進(jìn)位位 特殊功能寄存器例如: MOV IE,#85H ;立即數(shù)85H中斷允許寄存器IE。寄存器尋址寄存器尋址方式的尋址空間為工作寄存器和特殊功能寄存器等。 例如: MOV A,R6 ;(R6)A寄存器間接尋址寄存器間接尋址空間為內(nèi)部RAM 128字節(jié),外部RAM例如: MOV A,R0 ;((R0))A變址尋址變址尋址空間為程序存儲器。例如: MOVC A,ADPTR ;(DPTR)()AMOVC A,APC ;(PC)()A相對尋址相對尋址空間為程序存儲器。當(dāng)前PC值是指相對轉(zhuǎn)移指令所在地址(源地址)加轉(zhuǎn)移指令字節(jié)數(shù)。即:當(dāng)前PC值 = 源地址 + 轉(zhuǎn)移指令字節(jié)數(shù)偏移量rel 是有符號的單字節(jié)數(shù),以補(bǔ)碼表示,相對值在-128+127范圍內(nèi),負(fù)數(shù)表示從當(dāng)前地址向上轉(zhuǎn)移,正數(shù)表示從當(dāng)前地址向下轉(zhuǎn)移。所以轉(zhuǎn)移的目的地址為:目的地址 = 當(dāng)前PC值 + rel = 源地址 + 轉(zhuǎn)移指令字節(jié)數(shù) + rel例如: JNC 2AH , JZ F8H位尋址位尋址空間為內(nèi)部RAM 20H2FH的128位和SFR中的83位。例如: MOV C,30H, MOV P1.0, C3.3指出下列指令的尋址方式和操作功能:INC 40H ;直接尋址 (40H)+140HINC A ;寄存器尋址 (A)+1AINC R2 ;寄存器間接尋址 (R2)+1(R2)MOVC A, A+DPTR ;基址加變址寄存器尋址 (A)+(DPTR) AMOV A, #6EH ;立即尋址 6EHASETB P1.0 ;位尋址 P1.0置13.4 設(shè)內(nèi)部RAM中3AH單元的內(nèi)容為50H,寫出當(dāng)執(zhí)行下列程序段后寄存器A、R0和內(nèi)部RAM 50H,51H單元的內(nèi)容為何值?MOV A,3AH ;(A)=50HMOV R0,A ;(R0)=50HMOV A,#00H ;(A)=00HMOV R0,A ;(50H)=00HMOV A,#25H ;(A)=25HMOV 51H,A ;(51H)=25H答:(A)=25H, (3AH)=50H, (R0)=50H, (50H)=00H, (51H)=25H3.5 設(shè)堆棧指針SP中的內(nèi)容為60H,內(nèi)部RAM 30H和31H單元的內(nèi)容分別為27H和1AH,執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內(nèi)容將有何變化?PUSH 30H ;(SP)+1SP, (30H) 61HPUSH 31H ;(SP)+1SP, (31H) 62HPOP DPL ; (62) DPL, (SP)-1SPPOP DPH ; (61) DPH, (SP)-1SPMOV 30H,#00H ; 00H30HMOV 31H,#0FFH ; FFH31H答:(61H)=27H, (62H)=1AH, (30H)=00H, (31H)=FFH, (DPTR)=271AH, (SP)=60H3.6 設(shè)(A)=30H,(R1)=23H,(30H)=05H。執(zhí)行下列兩條指令后,累加器A和R1以及內(nèi)部RAM 30H單元的內(nèi)容各為何值?XCH A,R1XCHD A,R1答:(A)=25H, (R1)=30H, (30H)=03H3.7 設(shè)(A)=01010101B,(R5)=10101010B,分別寫出執(zhí)行下列指令后的結(jié)果ANL A, R5 ; (A)=0000 0000B, (R5)=10101010BORL A, R5 ; (A)= 10101010B, (R5)=10101010BXRL A, R5 ; (A)=00000000B3.8 設(shè)指令SJMP rel=7FH,并假設(shè)該指令存放在2113H和2114H單元中。當(dāng)該條指令執(zhí)行后,程序?qū)⑻D(zhuǎn)到何地址?答:程序?qū)⑻D(zhuǎn)到2194H地址3.9 簡述轉(zhuǎn)移指令A(yù)JMP addr11,SJMP rel, LJMP addr16及JMP A+DPTR的應(yīng)用場合。答:AJMP addr11這是在當(dāng)前PC的2K字節(jié)范圍內(nèi)的無條件轉(zhuǎn)移指令,把程序的執(zhí)行轉(zhuǎn)移到指定的地址。SJMP rel 這是相對跳轉(zhuǎn)指令,其中rel為相對偏移量。轉(zhuǎn)向的目標(biāo)地址是在當(dāng)前PC的前128字節(jié)到后127字節(jié)之間。LJMP addR16 執(zhí)行這條指令時(shí)把指令的第二和第三字節(jié)分別裝入PC的高位和低位字節(jié)中,無條件地轉(zhuǎn)向指定地址。轉(zhuǎn)移的目標(biāo)地址可以在64KB程序存儲器地址空間的任何地方,不影響任何標(biāo)志。JMP A+DPTR 把累加器A中8位無符號數(shù)與數(shù)據(jù)指針DPTR中的16位數(shù)相加,將結(jié)果作為轉(zhuǎn)移的目標(biāo)地址送入PC,不改變累加器A和數(shù)據(jù)指針DPTR內(nèi)容,也不影響標(biāo)志。本指令以DPTR內(nèi)容作為基址,A的內(nèi)容作為變址。只要把DPTR的值固定,而給A賦予不同的值,即可實(shí)現(xiàn)程序的多分支轉(zhuǎn)移。3.10 查指令表,寫出下列兩條指令的機(jī)器碼,并比較一下機(jī)器碼中操作數(shù)排列次序的特點(diǎn)。MOV 78H,80H ;85 80 78MOV 78H,#80H ;75 78 80答:直接尋址單元傳送到直接尋址單元的機(jī)器碼是第二個(gè)操作數(shù)在前,而立即數(shù)傳送到直接地址單元是第一個(gè)操作數(shù)在前,次序正好相反。3.11 試編寫程序,查找在內(nèi)部RAM 30H50H單元中1AH這一數(shù)據(jù)。若找到1AH則將51H單元置為01H;沒找到則將51H單元置為00H。答:參考程序如下MOV R1, #2FHLOOP1: INC R1CJNE R1, #1AH, LOOP2SJMP LOOP3LOOP2: CJNE R1, #51, LOOP1MOV 51H, #00HSJMP ENDLOOP3: MOV 51H, #01HEND: RET3.12 若SP=60H,子程序標(biāo)號MULT所在的地址為3A40H。執(zhí)行LCALL MULT指令后,堆棧指針SP和堆棧內(nèi)容發(fā)生了什么變化?答:(SP)=62H, (61H)=40H, (62H)=3AH3.13 假設(shè)外部存儲器215AH單元的內(nèi)容為3DH,執(zhí)行下列指令后,累加器A中的內(nèi)容為何值?MOV P2,#21HMOV R0,#5AHMOVX A,R0答:(A) = 3DH習(xí)題44.1 編程將數(shù)據(jù)存儲器中以2A00H為首地址的100個(gè)連續(xù)單元清零。CLR AMOV R0, #64HMOV DPTR, #2A00HLOOP: MOVX DPTR,AINC DPTRDJNZ R0, LOOPEND4.2 編程將片內(nèi)50H70H單元中的內(nèi)容傳送到以5C00H為起始地址的存儲區(qū)中。MOV DPTR, #5C00HMOV R0, #50HLOOP: MOV A,R0MOVX DPTR,AINC R0INC DPTRCJNE R0,#70H,LOOPEND4.3 片外RAM區(qū)從1000H單元開始存有100個(gè)單字節(jié)無符號數(shù),找出最大值并存入1100H單元中,試編寫程序。MOV DPTR, #1000H ;置片外RAM區(qū)首地址MOV R0,#00H ;清 R0MOV R1,64H ;置計(jì)數(shù)初值100LOOP: MOVX A, DPTR ;取片外RAM區(qū)的某個(gè)數(shù)送ACJNZ A,R0,NT1 ;與R0中的數(shù)比較NT1: JC NT2 ;(A)(R0)跳轉(zhuǎn)到NT2MOV RO,A ;若(A)(R0),則大數(shù)送RONT2: INC DPTR ;修改數(shù)據(jù)塊指針DJNZ R1,LOOP ;未完,循環(huán)RET4.4 設(shè)有100個(gè)單字節(jié)有符號數(shù),連續(xù)存放在以2100H為首地址的存儲區(qū)中,試編程統(tǒng)計(jì)其中正數(shù)、負(fù)數(shù)、零的個(gè)數(shù)。MOV R0, #00H ; 置負(fù)數(shù)的計(jì)數(shù)初值MOV R1, #00H ; 置正數(shù)的計(jì)數(shù)初值MOV R2, #00H ; 置0的計(jì)數(shù)初值MOV R4, #64H ; 置循環(huán)計(jì)數(shù)初值MOV DPTR, #2100H ; 置數(shù)據(jù)區(qū)首地址START:MOVX A, DPTR ; 取某一數(shù)據(jù)送入AJZ EQUAL ;為0轉(zhuǎn)EQUALJNB ACC.7, POSI ;為正數(shù)轉(zhuǎn)POSIINC R0 ; 負(fù)數(shù)計(jì)數(shù)值加1INC DPTR ; 修改數(shù)據(jù)塊指針DJNZ R4, START ; 未完,返回POSI: INC R1 ; 正數(shù)計(jì)數(shù)值加1INC DPTR ; 修改數(shù)據(jù)塊指針DJNZ R4, STARTEQUAL:INC R2 ; 0計(jì)數(shù)值加1INC DPTRDJNZ R4, STARTEND4.5 從2030H單元開始,存有100個(gè)有符號數(shù),要求把它傳送到從20BOH開始的存儲區(qū)中,但負(fù)數(shù)不傳送,試編寫程序。MOV R1, #64H ;置計(jì)數(shù)初值MOV R0, #B0H ;目標(biāo)數(shù)據(jù)區(qū)首地址低8位,高8位為20HMOV DPTR, #2030H ;源數(shù)據(jù)區(qū)首地址START:MOVX A, DPTR ;取源數(shù)據(jù)區(qū)某數(shù)據(jù)送入AJB ACC.7, D1 ;負(fù)數(shù),轉(zhuǎn)D1MOVX R0,A ;正數(shù),送入目標(biāo)數(shù)據(jù)區(qū)INC DPTR ; 修改源數(shù)據(jù)塊指針I(yè)NC R0 ; 修改目標(biāo)數(shù)據(jù)塊指針DJNZ R1, START ;未完,繼續(xù)RET ;返回D1: INC DPTR ;修改源數(shù)據(jù)塊指針I(yè)NC R0 ;修改目標(biāo)數(shù)據(jù)塊指針DJNZ R1, START ;未完,繼續(xù)RET ;返回4.6 若從30H單元開始有100個(gè)數(shù),編一個(gè)程序檢查這些數(shù),正數(shù)保持不變,負(fù)數(shù)取補(bǔ)后送回。MOV R0, #30H ;數(shù)據(jù)區(qū)首地址MOV R1, #64H ;計(jì)數(shù)初值START: MOVX A, R0 ;取某個(gè)數(shù)JNB ACC.7, POSI ;正數(shù),轉(zhuǎn)POSICPL A ;負(fù)數(shù),取補(bǔ)ADD A, #01HMOVX R0, A ;送回原地址INC R0 ;修改數(shù)據(jù)塊指針DJNZ R1, START ;未完,繼續(xù)RETPOSI: INC R0 ;修改數(shù)據(jù)塊指針DJNZ R1, START ;未完,繼續(xù)RET4.7 試編程把以2040H為首地址的連續(xù)10個(gè)單元的內(nèi)容按升序排列,存到原來的存儲區(qū)中。SORT: MOV DPTR, #2040H;MOV R3, #09H;CLR F0;D1: MOVX A,DPTR ;MOV R2, A ;前一個(gè)數(shù)送R2INC DPTRMOVX A, DPTR ;MOV R4, A ;后一個(gè)數(shù)送R4MOV A, R2 ;前一個(gè)數(shù)送ACLR CSUBB A, R4 ;前一個(gè)數(shù)減后一個(gè)數(shù)JC NEXT ;MOV A, R2 ;相鄰數(shù)互換MOVX DPTR,AMOV R0,DPL ;數(shù)據(jù)指針低8位減1DEC R0MOV DPL,R0MOV A, R4 ;MOVX DPTR,AINC DPTR;SETB F0NEXT: DJNZ R3, D1;JB F0,SORTRET4.8 設(shè)在2000H2004H單元中存放有5個(gè)壓縮BCD碼,編程將它們轉(zhuǎn)換成ASCII碼,存放到以2005H為首地址的存儲區(qū)中。MOV DPTR,#2000H;MOV R0, #05H;MOV R1, #04H;D1: MOVX A, DPTR;ANL A, #0FHCLR C;ADD A,#30H;MOV P2,#20HMOVX R0,AINC DPTR;INC R0DJNZ R1, D1;RET在以2000H為首地址的存儲區(qū)中,存放著20個(gè)用ASCII碼表示的O9之間的數(shù),試編程,將它們轉(zhuǎn)換成BCD碼,并以壓縮BCD碼的形式存放在3000H3009H單元中。MOV DPTR, 2000H;MOV R0, #20H;MOV R1, #00H;ASCBIN: MOVX A, DPTR;CLR CSUBB A, #30H;MOV P2, 30H;MOVX R1,A;INC R1;INC DPTR;DJNZ R0, ASCBIN;RET4.10 試編寫多字節(jié)BCD碼數(shù)加法、減法子程序。4.11 若晶振為6MHz,試編寫延時(shí)100ms、1s的子程序。ORG 2000H 周期數(shù)MOV R0, #0AH ;毫秒數(shù)R0 1DL2: MOV R1, #MT ;1ms延時(shí)值R1 1DL1: NOP 1NOP 1DJNZ R1,DL1 ;1ms延時(shí)循環(huán) 2DJNZ R0,DL2 ;10ms延時(shí)循環(huán) 2END4.12 試設(shè)計(jì)一個(gè)子程序,其功能為將片內(nèi)RAM 20H21H中的壓縮BCD碼轉(zhuǎn)換為二進(jìn)制數(shù),并存于以30H開始的單元。BCDB: MOV A,20HMOV R2,A ;取千位、百位BCD碼ACALL BCDB1 ;調(diào)用子程序MOV B,#0AHMUL AB ;乘以10MOV R6,A ;乘積低8位送R6XCH A,B ;交換乘積高、低位MOV R5,A ;乘積高位送R5MOV A,21H ;取十位、個(gè)位BCD碼MOV R2,A ;送入R2ACALL BCDB1 ;調(diào)用子程序ADD A,R6 ;加千位、百位乘積低8位MOV 31H,A ;低8位送入31HMOV A,R5 ;乘積高8位送AADDC A,#00H ;加進(jìn)位位MOV 30H,A ;結(jié)果高8位送入30HHERE: SJMP HERE子程序清單:BCDB1: MOV A,R2 ;取壓縮BCD碼ANL A,#0F0H ;屏蔽低4位SWAP AMOV B,#0AHMUL AB ;高位BCD碼乘以10MOV R3,A ;乘積送R3MOV A,R2 ;取壓縮BCD碼ANL A,#0FH ;屏蔽高4位ADD A,R3 ;高位BCD碼乘以10后加低位BCD碼MOV R2,A ;送R2RET習(xí)題55.1 什么是中斷系統(tǒng)?中斷系統(tǒng)的功能是什么?答:當(dāng)CPU正在處理某件事情(例如,正在執(zhí)行主程序)的時(shí)候,外部或內(nèi)部發(fā)生的某一事件(如某個(gè)引腳上電平的變化,一個(gè)脈沖沿的發(fā)生或計(jì)數(shù)器的計(jì)數(shù)溢出等)請求CPU迅速去處理,于是,CPU暫時(shí)終止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)程序處理完該事件后,再回到原來被終止的地方,繼續(xù)原來的工作,這樣的過程稱為中斷。實(shí)現(xiàn)這種功能的部件稱為中斷系統(tǒng)。中斷系統(tǒng)的功能:(1)實(shí)現(xiàn)中斷及中斷返回,(2)實(shí)現(xiàn)優(yōu)先級排隊(duì),(3)實(shí)現(xiàn)優(yōu)先級控制。5.2 什么是中斷嵌套?答:當(dāng)CPU響應(yīng)某一中斷源的請求而進(jìn)行中斷處理時(shí),若有優(yōu)先級更高的中斷源發(fā)出中斷請求,則CPU中斷正在執(zhí)行的中斷服務(wù)程序,保留程序的斷點(diǎn)和現(xiàn)場,響應(yīng)更高一級的中斷,即是中斷嵌套。5.3 什么是中斷源?MCS-51有哪些中斷源?各有什么特點(diǎn)?答:向CPU發(fā)出中斷請求的來源稱為中斷源。MC5-51單片機(jī)的中斷系統(tǒng)有5個(gè)中斷請求源:外部中斷0請求,由引腳輸入,中斷請求標(biāo)志為IE0。外部中斷l(xiāng)請求,由引腳輸入,中斷請求標(biāo)志為IEl。定時(shí)器/計(jì)數(shù)器T0溢出中斷請求,中斷請求標(biāo)志為TF0。定時(shí)器/計(jì)數(shù)器T1 溢出中斷請求,中斷請求標(biāo)志為TF1。串行口中斷請求,中斷請求標(biāo)志為TI或RI。外部中斷0:它的觸發(fā)方式選擇位為IT0。IT0=0,為電平觸發(fā)方式,引腳上低電平有效IT0=1,為脈沖觸發(fā)方式,引腳上的電平從高到低的負(fù)跳變有效。IT0位可由軟件置“1”或清“0”。外部中斷0請求標(biāo)志位IE0。當(dāng)IT0=0,即電平觸發(fā)方式時(shí),每個(gè)機(jī)器周期的S5P2采樣引腳,若腳為低電平,則置“1” IE0,否則清“0” IE0。當(dāng)IT0=1,即跳沿觸發(fā)方式時(shí),在第一個(gè)機(jī)器周期采樣為低電平,則置“1” IE0。IE0=1,表示外部中斷0正在向CPU申請中斷。當(dāng)CPU響應(yīng)中斷,轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件清“0” IE0。外部中斷1中斷原是與此相同。定時(shí)器/計(jì)數(shù)器0:被啟動計(jì)數(shù)后,從初值開始加1計(jì)數(shù),當(dāng)定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)滿而產(chǎn)生溢出時(shí),由硬件自動使TF0置 1,并向CPU申請中斷。該標(biāo)志一直保持到CPU響應(yīng)中斷后,才由硬件自動清0。也可用軟件查詢該標(biāo)志,并由軟件清0。定時(shí)器/計(jì)數(shù)器1中斷原理與此相同。串行中斷請求由TI、RI的邏輯“或”得到。即不論是發(fā)送標(biāo)志還是接收標(biāo)志,都將發(fā)生串行中斷請求。5.4 MCS-51單片機(jī)響應(yīng)外部中斷的典型時(shí)間是多少?在哪些情況下,CPU將推遲對中斷請求的響應(yīng)?答:38個(gè)機(jī)器周期。(1) CPU正在處理相同的或更高優(yōu)先級的中斷。因?yàn)楫?dāng)一個(gè)中斷被響應(yīng)時(shí),要把對應(yīng)的中斷優(yōu)先級狀態(tài)觸發(fā)器置“1”(該觸發(fā)器指出CPU所處理的中斷優(yōu)先級別),從而封鎖了低級中斷和同級中斷。(2) 所查詢的機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期。作這個(gè)限制的目的是使當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng),以確保當(dāng)前指令完整的執(zhí)行。(3) 正在執(zhí)行的指令是RET1或是訪問IE或IP的指令。因?yàn)榘碝CS-51中斷系統(tǒng)特性的規(guī)定,在執(zhí)行完這些指令后,需要再執(zhí)行一條指令才能響應(yīng)新的中斷請求。如果存在上述三種情況之一,CPU將推遲對中斷請求的響應(yīng)。5.5 中斷查詢確認(rèn)后,在下列各種運(yùn)行情況中,能立即進(jìn)行響應(yīng)的是:(1)當(dāng)前正在進(jìn)行高優(yōu)先級中斷處理(2)當(dāng)前正在執(zhí)行RETI指令(3)當(dāng)前指令是DIV指令,且正處于取指令的機(jī)器周期(4)當(dāng)前指令是MOV A, R3答:(4)能立即進(jìn)行響應(yīng)5.6 試編寫出外部中斷1為跳沿觸發(fā)方式的中斷初始化程序。答:SETB EASETB EX1SETB IT15.7 在MCS-51中,需要外加電路實(shí)現(xiàn)中斷撤除的是:(1)定時(shí)中斷(2)脈沖方式的外部中斷(3)串行中斷(4)電平方式的外部中斷答:(4)需要外加電路5.8 MCS-51有哪幾種擴(kuò)展外部中斷源的方法?各有什么特點(diǎn)?答:(1)定時(shí)器/計(jì)數(shù)器作為外部中斷源的使用方法當(dāng)它們選擇為計(jì)數(shù)器工作模式,T0或T1引腳上發(fā)生負(fù)跳變時(shí),T0或T1計(jì)數(shù)器加1,利用這個(gè)特性,可以把T0、T1引腳作為外部中斷請求輸入引腳,而定時(shí)器/計(jì)數(shù)器的溢出中斷TF1或TF0作為外部中斷請求標(biāo)志。(2)中斷和查詢結(jié)合的方法若系統(tǒng)中有多個(gè)外部中斷請求源,可以按它們的輕重緩急進(jìn)行排隊(duì),把其中最高級別的中斷源IR0直接接到MCS-51的一個(gè)外部中斷輸入端,其余的中斷源IR1IR4用“線或”的辦法連到另一個(gè)外部中斷輸入端,同時(shí)還連到P1口,中斷源的中斷請求由外設(shè)的硬件電路產(chǎn)生,這種方法原則上可處理任意多個(gè)外部中斷。查詢法擴(kuò)展外部中斷源比較簡單,但是擴(kuò)展的外部中斷源個(gè)數(shù)較多時(shí),查詢時(shí)間較長。(3)用優(yōu)先權(quán)編碼器擴(kuò)展外部中斷源采用74LS148優(yōu)先權(quán)編碼器在硬件上對外部中斷源進(jìn)行排隊(duì),可以避免響應(yīng)優(yōu)先級最高的中斷和響應(yīng)優(yōu)先級最低的中斷所需的時(shí)間可能相差很大這樣的問題。該方法的最大特點(diǎn)是結(jié)構(gòu)簡單,價(jià)格低廉,但該電路無法實(shí)現(xiàn)中斷服務(wù)子程序的嵌套。5.9 中斷服務(wù)子程序和普通子程序有什么區(qū)別?答: 1,中斷服務(wù)子程序的入口地址由中斷向量表確定,而普通子程序的入口地址在中斷向量表以外的程序存儲空間內(nèi)任意設(shè)定。2,中斷服務(wù)子程序的返回指令是RETI, 而普通子程序的返回指令是RET5.10 試編寫一段對中斷系統(tǒng)初始化的程序,允許INT0,INT1,T0,串行口中斷,且使T0中斷為高優(yōu)先級。答:SETB EASETB EX0SETB EX1SETB ET0SETB ESSETB PT05.11在MCS-51單片機(jī)中,外部中斷有哪兩種觸發(fā)方式?如何加以區(qū)別?答:電平觸發(fā)方式和跳沿觸發(fā)方式。IT0=0時(shí), 為電平觸發(fā)方式,引腳低電平有效。IT0=1時(shí), 為跳沿觸發(fā)方式,引腳負(fù)跳變有效。IT1=0時(shí),為電平觸發(fā)方式,引腳低電平有效。IT1=1時(shí),為跳沿觸發(fā)方式,引腳負(fù)跳變有效。5.12 單片機(jī)在什么條件下可響應(yīng)INT0中斷?簡要說明中斷響應(yīng)的過程。答:1,中斷允許寄存器IE中的EA=1,且EX1=1,同時(shí)沒有其它優(yōu)先于外部中斷0的中斷,若IT0=0,引腳上低電平有效;若IT0=1,引腳上的電平從高到低的負(fù)跳變有效。2,當(dāng)CPU正在處理某件事情(例如,正在執(zhí)行主程序)的時(shí)候,外部發(fā)生的某一事件(如某個(gè)引腳上電平的變化,一個(gè)脈沖沿的發(fā)生)請求CPU迅速去處理,于是,CPU暫時(shí)終止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)程序處理完該事件后,再回到原來被終止的地方,繼續(xù)原來的工作,這樣的過程稱為中斷。處理事件請求的過程,稱為CPU的中斷響應(yīng)過程。5.13 當(dāng)正在執(zhí)行某一中斷源的中斷服務(wù)程序時(shí),如果有新的中斷請求出現(xiàn),問在什么情況下可響應(yīng)新的中斷請求?在什么情況下不能響應(yīng)新的中斷請求?答:1,一個(gè)中斷源的中斷請求被響應(yīng),需滿足以下條件: 該中斷源發(fā)出中斷請求。 CPU開中斷,即中斷總允許位EA=1。 申請中斷的中斷源的中斷允許位=1,即該中斷沒有被屏蔽。 無同級或更高級中斷正在被服務(wù)。2,中斷響應(yīng)是有條件的,并不是查詢到的所有中斷請求都能被立即響應(yīng),當(dāng)遇到下列三種情況之一時(shí),中斷響應(yīng)被封鎖:(1) CPU正在處理相同的或更高優(yōu)先級的中斷。因?yàn)楫?dāng)一個(gè)中斷被響應(yīng)時(shí),要把對應(yīng)的中斷優(yōu)先級狀態(tài)觸發(fā)器置“1”(該觸發(fā)器指出CPU所處理的中斷優(yōu)先級別),從而封鎖了低級中斷和同級中斷。(2) 所查詢的機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期。作這個(gè)限制的目的是使當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng),以確保當(dāng)前指令完整的執(zhí)行。(3) 正在執(zhí)行的指令是RETI或是訪問IE或IP的指令。因?yàn)榘碝CS-51中斷系統(tǒng)特性的規(guī)定,在執(zhí)行完這些指令后,需要再執(zhí)行一條指令才能響應(yīng)新的中斷請求。如果存在上述三種情況之一,CPU將不能進(jìn)行中斷響應(yīng)。習(xí)題 66.1 MCS-51單片機(jī)的TO、T1用作定時(shí)器時(shí),其定時(shí)時(shí)間與哪些因素有關(guān)?答:定時(shí)器/計(jì)數(shù)器用作定時(shí)方式時(shí),其定時(shí)時(shí)間與時(shí)鐘周期、工作方式、定時(shí)初值等因素有關(guān)。6.2 當(dāng)MCS-51單片機(jī)的TO用于工作方式3時(shí),由于TRl位已被TO占用,該如何控制定時(shí)器T1的開啟和關(guān)閉?答:這時(shí)T1只能用作串行口波特率發(fā)生器或不需要中斷的場合。因?yàn)門R1已被T0借用,所以T1的控制只有和M1、M0 兩個(gè)條件,選擇定時(shí)或計(jì)數(shù)模式,M1、M0選擇工作方式。這時(shí)只要把方式控制字送入TMOD寄存器就可啟動T1運(yùn)行,如果讓它停止工作,只需送入一個(gè)將T1設(shè)置為工作方式3的方式控制字就可以了。6.3 設(shè)MCS-51單片機(jī)的晶振頻率為12MHz,試用單片機(jī)的內(nèi)部定時(shí)方式產(chǎn)生頻率為100kHz的方波信號,由P1.1腳輸出。答:依據(jù)題意,只要使P1.0引腳每隔5us取反一次即可得到10us的方波,因此定是時(shí)間T=5us,可選擇定時(shí)器/計(jì)數(shù)器T0,以中斷方式工作。設(shè)定TMODTMOD的低4位控制T0,設(shè)定T0定時(shí)模式,即=0;工作在方式0,即 M1M0=00H;軟件啟動定時(shí)器,即GAME=0。TMOD的高4位與T0無關(guān),一般取0,所以TMOD控制字為00H。計(jì)算定時(shí)初值晶振頻率為12MHz,機(jī)器周期=1us定時(shí)初值 =8192-5=8187=1FFBH=0001111111111011B因TL0的高3位未用,對計(jì)算出的初值要進(jìn)行修正,即低5位前插入3個(gè)0構(gòu)成低8位初值,從低6位向前取8位構(gòu)成高8位初值,即1111111100011011B=FF1BHORG 0000HAJMP MAIN ;轉(zhuǎn)主程序ORG 000BH ;T0中斷矢量地址AJMP ISER ;轉(zhuǎn)中斷服務(wù)程序ORG 100HMAIN: MOV SP,#60H ;設(shè)堆棧指針MOV TMOD,#00H ;寫控制字MOV TL0,#1BH ;置T0 初值MOV TH0,#0FFHSETB ET0 ;允許T0中斷SETB EA ;CPU開中斷SETB TR0 ;啟動T0SJMP $ ;等待中斷ISER: MOV TL0,#1BH ;T0中斷服務(wù)子程序,重置T0 初值MOV TH0,#0FFHCPL P1.0 ;P1.1取反RETIEND6.4 設(shè)MCS-51單片機(jī)的晶振頻率為6MHz,使用定時(shí)器T1的定時(shí)方式1,在P10輸出周期為20ms、占空比為60的矩形脈沖,以查詢方式編寫程序。答:依據(jù)題意,使P1.0引腳輸出12ms高電平,8ms低電平,即可得到周期為20ms、占空比為60的矩形脈沖,因此定時(shí)時(shí)間T1=12ms,T2=8ms,定時(shí)器/計(jì)數(shù)器T1,以查尋方式工作。設(shè)定TMODTMOD的高4位控制T1,設(shè)定T1定時(shí)模式,即=0;工作在方式1,即 M1M0=01H;軟件啟動定時(shí)器,即GAME=0。TMOD的低4位與T0無關(guān),一般取0,所以TMOD控制字為10H。計(jì)算定時(shí)初值晶振頻率為6MHz,機(jī)器周期=2us定時(shí)初值=65536-6000 =59536=E890H=65536-4000=61536=F060HORG 100HMOV TMOD,#10H ;LOOP0: MOV TL0,#90H ;MOV TH0,#0E8HSETB TR1 ;LOOP1:JNB TF1,LOOP1 ;CLR TF1;SETB P1.0MOV TL0,#60H ;MOV TH0,#0F0HSETB TR1LOOP2:JNB TF1,LOOP2 ;CLR TF1;CLR P1.0;SJMP LOOP0;RET6.5 設(shè)MCS-51單片機(jī)的晶振頻率為6MHz,以計(jì)數(shù)器T1進(jìn)行外部事件計(jì)數(shù),每計(jì)數(shù)100個(gè)外部事件輸入脈沖后,計(jì)數(shù)器T1轉(zhuǎn)為定時(shí)工作方式,定時(shí)5ms后,又轉(zhuǎn)為計(jì)數(shù)方式。如此周而復(fù)始地工作,試編程實(shí)現(xiàn)。答:依據(jù)題意,設(shè)T1工作在計(jì)數(shù)模式時(shí),工作在方式0, 設(shè)T1工作在定時(shí)模式時(shí),工作在方式1 。設(shè)定TMODTMOD的高4位控制T1,設(shè)定T1計(jì)數(shù)模式,即=1;工作在方式1,即 M1M0=10H;軟件啟動定時(shí)器,即GAME=0。TMOD的低4位與T0無關(guān),一般取0,所以TMOD控制字為40H。設(shè)定T1定時(shí)模式,即=0;工作在方式1,即 M1M0=01H;軟件啟動定時(shí)器,即GAME=0。TMOD的低4位與T0無關(guān),一般取0,所以TMOD控制字為10H。計(jì)算計(jì)數(shù)初值計(jì)數(shù)初值=8192-100 =8092=1F9CH=0001111110011100B因TL0的高3位未用,對計(jì)算出的初值要進(jìn)行修正,即低5位前插入3個(gè)0構(gòu)成低8位初值,從低6位向前取8位構(gòu)成高8位初值,則計(jì)數(shù)初值為FC1CH計(jì)算定時(shí)初值晶振頻率為6MHz,機(jī)器周期=2us=65536-2500=63036=F63CHORG 100H;START: MOV TMOD,#40H ;MOV TL0,#1CH;MOV TH0,#0FCH ;SETB TR1;LOOP1:JNB TF1,LOOP1;CLR TF1;MOV TMOD, #10H;MOV TL0,#3CH;MOV TH0,#0F6H;SETB TR1;LOOP2:JNB TF1,LOOP2;CLR TF1;SJMP START;6.6 設(shè)MCS-51單片機(jī)的晶振頻率為12 MHz,要求用定時(shí)器/計(jì)數(shù)器TO產(chǎn)生1 ms的定時(shí),試確定計(jì)數(shù)初值以及TMOD寄存器的內(nèi)容。答:設(shè)T0工作定時(shí)模式,晶振頻率為12MHz,機(jī)器周期=1us方式1: 初值: =65536-1000=64536=FC18HTMOD:00H6.7 設(shè)MCS-51單片機(jī)的晶振頻率為6MHz,要求用定時(shí)器/計(jì)數(shù)器產(chǎn)生100 ms的定時(shí),試確定計(jì)數(shù)初值以及TMOD寄存器的內(nèi)容。答:此題晶振頻率改為6MHz,否則定時(shí)時(shí)間超出最大定時(shí)時(shí)間。設(shè)定TMODTMOD的低4位控制T0,設(shè)定T0定時(shí)模式,即=0;若工作在方式1,即 M1M0=01H;軟件啟動定時(shí)器,即GAME=0。TMOD的高4位與T0無關(guān),一般取0,所以TMOD控制字為01H。計(jì)算定時(shí)初值晶振頻率為6MHz,機(jī)器周期=2us初值: =65536-50000=15536=3CB0H6.8 設(shè)晶振頻率為12 MHz。編程實(shí)現(xiàn)以下功能:利用定時(shí)/計(jì)數(shù)器TO通過P1.7引腳輸出一個(gè)50 Hz的方波。答:依據(jù)題意,只要使P1.7引腳每隔10ms取反一次即可得到20ms的方波,因此定是時(shí)間T=10ms, T0工作在定時(shí)模式的方式1,以中斷方式工作。1,設(shè)定TMODTMOD的低4位控制T0,設(shè)定T0定時(shí)模式,即=0;若工作在方式1,即 M1M0=01H;軟件啟動定時(shí)器,即GAME=0。TMOD的高4位與T0無關(guān),一般取0,所以TMOD控制字為01H。2,計(jì)算定時(shí)初值晶振頻率為12MHz,機(jī)器周期=1us初值: =65536-10000=55536=D8F0HORG 0000HAJMP MAIN ;轉(zhuǎn)主程序ORG 000BH ;T0中斷矢量地址AJMP ISER ;轉(zhuǎn)中斷服務(wù)程序ORG 100HMAIN: MOV SP,#60H ;設(shè)堆棧指針MOV TMOD,#01H ;寫控制字MOV TL0,#0F0H ;置T0 初值MOV TH0,#0D8HSETB ET0 ;允許T0中斷SETB EA ;CPU開中斷SETB TR0 ;啟動T0SJMP $ ;等待中斷ISER: MOV TL0,#0F0H ;T0中斷服務(wù)子程序,重置T0 初值MOV TH0,#0D8H ;CPL P1.7 ;P1.7取反RETIEND6.9 每隔1s讀一次P1O,如果所讀的狀態(tài)為“1,則將片內(nèi)RAM 10H單元內(nèi)容加1;如果所讀的狀態(tài)為“O”,則將片內(nèi)RAM llH單元內(nèi)容加1。設(shè)單片機(jī)的晶振頻率為12 MHz,試編制程序。答:依據(jù)題意,每隔1s讀一次P1.0引腳,再根據(jù)讀出的狀態(tài)分別計(jì)數(shù)。因此定是時(shí)間T=1s, 設(shè)T0工作在定時(shí)模式的方式1,以中斷方式工作。1,設(shè)定TMODTMOD的低4位控制T0,設(shè)定T0定時(shí)模式,即=0;若工作在方式1,即 M1M0=01H;軟件啟動定時(shí)器,即GAME=0。TMOD的高4位與T0無關(guān),一般取0,所以TMOD控制字為01H。2,計(jì)算定時(shí)初值晶振頻率為12MHz,機(jī)器周期=1us因定時(shí)時(shí)間1s已超出定時(shí)器的定時(shí)能力,可將定時(shí)時(shí)間設(shè)為50ms,在中斷服務(wù)程序中對定時(shí)器溢出進(jìn)行計(jì)數(shù)20次時(shí),讀一次P1.0引腳,根據(jù)讀出的狀態(tài)分別計(jì)數(shù)。=65536-50000=15536=3CB0HORG 100HMOV 11H, #00H ; 清計(jì)數(shù)器MOV 10H, #00H ; 清計(jì)數(shù)器MOV TMOD,#01H ;寫控制字,T1工作方式1MOV TL0,#0B0H ;置T0初值MOV TH0,#3CHSTART: MOV A, #20 ;置溢出次數(shù)LOOP: SETB TR1 ;啟動T1LOOP1: JNB TF1,LOOP1 ;MOV TL0,#0B0H ;重置T1 初值MOV TH0,#3CH ;CLR TF1 ;DJNZ A, LOOP ;JNB P1.0, LOOP2 ;INC 11H ;SJMP STRAT ;LOOP2: INC 10H ;SJMP STRAT ;6.10 簡要說明若要擴(kuò)展定時(shí)器/計(jì)數(shù)器的最大定時(shí)時(shí)間,可采用哪些方法?答:1,降低晶體振蕩器主頻,2,采用多次累計(jì)計(jì)數(shù)等方法,見例6-4.習(xí)題 77.1 什么是串行異步通信,它有哪些特點(diǎn)?答:串行異步通信的數(shù)據(jù)通常是以字符(或字節(jié))為單位組成字符幀按順序傳送的。字符幀通過傳輸線由發(fā)送端一幀一幀地發(fā)送到接收端,接收端一幀一幀地接收。特點(diǎn):優(yōu)點(diǎn)是不需要傳送同步脈沖,字符幀長度也不受限制,故所需設(shè)備簡單。缺點(diǎn)是因字符幀中包含有起始位和停止位而降低了有效數(shù)據(jù)的傳輸速率。7.2 串行異步通信的字符格式由哪幾個(gè)部分組成?某異步通信接口,其幀格式由1個(gè)起始位(O),7個(gè)數(shù)據(jù)位,1個(gè)偶校驗(yàn)和1個(gè)停止位組成。用圖示方法畫出發(fā)送字符“5”(ASCII碼為0110101B)時(shí)的幀結(jié)構(gòu)示意圖。答:1,串行異步通信的字符格式由一個(gè)起始位表示字符的開始,一個(gè)停止位表示字符的結(jié)束。數(shù)據(jù)位在起始位之后,停止位之前,這樣構(gòu)成一幀數(shù)據(jù)。奇偶校驗(yàn)位位與數(shù)據(jù)位之后,停止位之前,用于表示串行通信中采用奇校驗(yàn)位還是偶校驗(yàn)位,由用戶根據(jù)需要決定。2,發(fā)送字符“5”(ASCII碼為0110101B)時(shí)的幀結(jié)構(gòu)示意圖:7.3 MCS-51單片機(jī)的串行口由哪些功能模塊組成?各有什么作用?答:MCS-51單片機(jī)的串行口主要由兩個(gè)數(shù)據(jù)緩沖寄存器SBUF,一個(gè)輸入移位寄存器以及兩個(gè)控制寄存器SCON和PCON組成。其中,緩沖寄存器SBUF是兩個(gè)在物理上獨(dú)立的專用寄存器,一個(gè)作發(fā)送緩沖器,另一個(gè)作接收緩沖器。兩個(gè)緩沖器共用一個(gè)地址99H,可通過指令對SBUF的讀寫來區(qū)別,CPU寫SBUF就是修改發(fā)送緩沖器的內(nèi)容;讀SBUF就是讀接收緩沖器的內(nèi)容。控制寄存器SCON和PCON用來設(shè)定串行口的工作方式并對接收和發(fā)送進(jìn)行控制。串行口對外有兩條獨(dú)立的收發(fā)信號線RXD(P3.0)、TXD(P3.1),因此可以同時(shí)發(fā)送、接收數(shù)據(jù),實(shí)現(xiàn)全雙工通信。7.4 MCS-51單片機(jī)的串行口有哪幾種工作方式?有幾種幀格式?各工作方式的波特率如何確定?答:有4種工作方式。工作方式0為同步移位寄存器方式,該方式以8位數(shù)據(jù)為一幀,沒有起始位和停止位,先發(fā)送或接收最低位。工作方式1為8位異步通信方式,適合于點(diǎn)對點(diǎn)的異步通信。這種方式規(guī)定發(fā)送或接收一幀信息為10位,即1個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1個(gè)停止位(1),先發(fā)送或接收最低位。數(shù)據(jù)傳輸率可以改變。工作方式2和3為9位異步通信方式。每幀數(shù)據(jù)均為11位,1位起始位0,8位數(shù)據(jù)位(先低位),1位可程控的第9位數(shù)據(jù)和1位停止位。1. 方式0的波特率串行口工作在方式0時(shí),波特率由振蕩器的頻率fosc所確定:波特率=2.

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論