單片機(jī)原理及應(yīng)用(徐泳龍主編)第2版課后習(xí)題參考答案_第1頁(yè)
單片機(jī)原理及應(yīng)用(徐泳龍主編)第2版課后習(xí)題參考答案_第2頁(yè)
單片機(jī)原理及應(yīng)用(徐泳龍主編)第2版課后習(xí)題參考答案_第3頁(yè)
單片機(jī)原理及應(yīng)用(徐泳龍主編)第2版課后習(xí)題參考答案_第4頁(yè)
單片機(jī)原理及應(yīng)用(徐泳龍主編)第2版課后習(xí)題參考答案_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)原理及應(yīng)用習(xí)題答案第一章 計(jì)算機(jī)基礎(chǔ)知識(shí)1-1 微型計(jì)算機(jī)主要由哪幾部分組成?各部分有何功能?答:一臺(tái)微型計(jì)算機(jī)由中央處理單元(CPU)、存儲(chǔ)器、I/O接口及I/O設(shè)備等組成,相互之間通過(guò)三組總線(Bus):即地址總線AB、數(shù)據(jù)總線DB和控制總線CB來(lái)連接。CPU由運(yùn)算器和控制器組成,運(yùn)算器能夠完成各種算術(shù)運(yùn)算和邏輯運(yùn)算操作,控制器用于控制計(jì)算機(jī)進(jìn)行各種操作。存儲(chǔ)器是計(jì)算機(jī)系統(tǒng)中的“記憶”裝置,其功能是存放程序和數(shù)據(jù)。按其功能可分為RAM和ROM。輸入/輸出(I/O)接口是CPU與外部設(shè)備進(jìn)行信息交換的部件。總線是將CPU、存儲(chǔ)器和I/O接口等相對(duì)獨(dú)立的功能部件連接起來(lái),并傳送信息的公共

2、通道。1-3 什么叫單片機(jī)?其主要由哪幾部分組成?答:?jiǎn)纹瑱C(jī)(Single Chip Microcomputer)是指把CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器以及I/O接口電路等主要部件集成在一塊半導(dǎo)體芯片上的微型計(jì)算機(jī)。1-4 在各種系列的單片機(jī)中,片內(nèi)ROM的配置有幾種形式?用戶應(yīng)根據(jù)什么原則來(lái)選用?答:?jiǎn)纹瑱C(jī)片內(nèi)ROM的配置狀態(tài)可分四種:(1)片內(nèi)掩膜(Mask)ROM型單片機(jī)(如8051),適合于定型大批量應(yīng)用產(chǎn)品的生產(chǎn);(2)片內(nèi)EPROM型單片機(jī)(如8751),適合于研制產(chǎn)品樣機(jī);(3)片內(nèi)無(wú)ROM型單片機(jī)(如8031),需外接EPROM,單片機(jī)擴(kuò)展靈活,適用于研制新產(chǎn)品;(4)E

3、EPROM(或Flash ROM)型單片機(jī)(如89C51),內(nèi)部程序存儲(chǔ)器電可擦除,使用更方便。1-5 寫出下列各數(shù)的另兩種數(shù)制的表達(dá)形式(二、十、十六進(jìn)制)1100010100111001000111100100100111111101101100111011011101011198200395851623629149562H4E47H249H3F6CH1D5D71-6 寫出下列各數(shù)的BCD參與:59:01011001,1996:0001100110010110,4859.2:0100100001011001.0010389.41:001110001001.01000001第二章 MCS-5

4、1單片機(jī)的硬件結(jié)構(gòu)2-1 8052單片機(jī)片內(nèi)包含哪些主要邏輯功能部件?答:8052單片機(jī)片內(nèi)包括:8位中央處理器CPU一個(gè)片內(nèi)振蕩器及時(shí)鐘電路256B數(shù)據(jù)存儲(chǔ)器RAM。8KB片內(nèi)程序存儲(chǔ)空間ROM21個(gè)特殊功能寄存器SFR4個(gè)8位并行I/O端口(32條線)1個(gè)可編程全雙工串行口可尋址64KB的外部程序存儲(chǔ)空間和外部數(shù)據(jù)存儲(chǔ)空間3個(gè)16位的定時(shí)器/計(jì)數(shù)器6個(gè)中斷源、2個(gè)優(yōu)先級(jí)嵌套中斷結(jié)構(gòu)2-2 8052的存儲(chǔ)器分哪幾個(gè)空間?如何區(qū)別不同空間的尋址?答:8052的存儲(chǔ)器分為6個(gè)編址空間:片內(nèi)ROM的容量為8KB,其地址為0000H1FFFH;可擴(kuò)展片外ROM的容量為64KB,其地址為0000HFF

5、FFH;片內(nèi)RAM的容量為256B,其地址為00HFFH分為二塊:地址00H7FH共128B為片內(nèi)RAM低區(qū),另128B為片內(nèi)RAM高區(qū),其地址空間為80HFFH,其地址空間與SFR功能寄存器地址重疊; 可擴(kuò)展片外RAM的容量為64KB,其地址為0000H1FFFH;特殊功能寄存器SFR的空間為128B,其地址為80HFFH,但實(shí)際只定義了26B單元,這26B單元分散在80HF0H。程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器在邏輯上是完全分開的。CPU通過(guò)指令MOVC訪問(wèn)程序存儲(chǔ)器。當(dāng)8052第31腳接高電平時(shí), CPU將從片內(nèi)程序存儲(chǔ)器0000H單元開始執(zhí)行,當(dāng)PC值超出片內(nèi)程序存儲(chǔ)空間,即大于1FFFH時(shí),會(huì)

6、自動(dòng)轉(zhuǎn)向片外程序存儲(chǔ)空間。當(dāng)接低電平時(shí),CPU將從片外程序存儲(chǔ)器ROM的0000H單元開始執(zhí)行。CPU通過(guò)MOV指令訪問(wèn)片內(nèi)數(shù)據(jù)存儲(chǔ)空間RAM,低區(qū)128B地址空間00H7FH中地址為00H1FH這32個(gè)單元分為4個(gè)工作寄存器組,分別用R0R7表示,通過(guò)工作寄存器指令進(jìn)行訪問(wèn)。片內(nèi)RAM中的20H2FH單元除可作為一般字節(jié)尋址單元使用外,這16個(gè)單元共128位中的每一位又可單獨(dú)作為軟件觸發(fā)器使用,具有位尋址功能,其位地址范圍為00H7FH;對(duì)片內(nèi)高區(qū)128B尋址只能用寄存器間接尋址,而對(duì)特殊功能寄存器建起必須使用直接尋址。CPU通過(guò)指令MOVX訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器。2-3 DPTR的作用是什么?

7、它由哪幾個(gè)寄存器組成?答:相對(duì)于地址指針,DPTR被稱為數(shù)據(jù)指針,但實(shí)際上DPTR中存放的是一個(gè)16位的地址,作為訪問(wèn)程序存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器的地址指針。當(dāng)對(duì)64KB外部數(shù)據(jù)存儲(chǔ)器空間尋址時(shí),作為間址寄存器使用,而在訪問(wèn)程序存儲(chǔ)器時(shí),作為基址寄存器使用。DPTR是一個(gè)16位的特殊功能寄存器,由兩個(gè)8位寄存器DPH、DPL組成,使用SFR中的82H和83H單元。2-4 簡(jiǎn)述布爾處理存儲(chǔ)器的空間分配。答:在單片機(jī)中位處理又稱布爾處理,允許按位處理的存儲(chǔ)器稱為布爾處理存儲(chǔ)器。其地址空間由二部分構(gòu)成:一部分是片內(nèi)RAM中字節(jié)地址為20H2FH的16字節(jié)的128個(gè)位,這些位編址為00H7FH;另一部分

8、在特殊寄存器中,其地址碼能被8整除的12個(gè)特殊功能寄存器可以按位尋址,但其中4個(gè)未定義,一共有92位可按位尋址。這二部分結(jié)合起來(lái)形成一個(gè)具有220位的位尋址空間。2-5 8052單片機(jī)設(shè)置4組工作寄存器,如何選擇確定和改變當(dāng)前工作寄存器?答:8052片內(nèi)數(shù)據(jù)存儲(chǔ)器的00H1FH這32個(gè)單元分為4級(jí)作為4個(gè)工作寄存器第0組地址00H07H,第一組08H0FH,第二組10H17H,第3組18H1FH。每個(gè)工作寄存器都有8個(gè)單元,分別用R0R7表示。4組寄存器中每一組都可能被選為CPU的工作寄存器,這是通過(guò)程序狀態(tài)字PSW的PSW.3(RS0)和PSW.4(RS1)兩位的狀態(tài)來(lái)選擇決定的。見下表:P

9、SW.4(RS1)PSW.3(RS0)當(dāng)前使用的工作寄存器組R0R7000組(00H07H)011組(08H0FH)102組(10H17H)113組(18H1FH)通過(guò)程序改變RS1和RS0的狀態(tài),就可方便地更換工作寄存器組。2-6 程序狀態(tài)字寄存器PSW的作用是什么?常用的狀態(tài)標(biāo)志位有哪些位?作用分別是什么?答:PSW是一個(gè)8位的特殊功能寄存器,由一些標(biāo)志位組成,用于存放程序運(yùn)行中的各種狀態(tài)信息。它可以進(jìn)行位尋址。各位的作用如下:Cy:進(jìn)位標(biāo)志位。在進(jìn)行加(或減)法運(yùn)算時(shí),若操作結(jié)果的最高位(D7位)有進(jìn)位(或借位)時(shí),Cy由硬件置1,否則Cy清0。在進(jìn)行位操作時(shí),Cy又是位累加器,指令助記

10、符用C表示。AC:輔助進(jìn)位標(biāo)志位。在進(jìn)行加(或減)運(yùn)算時(shí),若操作結(jié)果的低半字節(jié)(D3位)向高半字節(jié)產(chǎn)生進(jìn)位(或借位)時(shí),AC位將由硬件自動(dòng)置1,否則AC位清0。F0:用戶標(biāo)志位。用戶根據(jù)需要對(duì)F0置位或復(fù)位,作為軟件標(biāo)志。RS1和RS0:工作寄存器組選擇控制位。由用戶用軟件改變RS1和RS0的狀態(tài),以選擇內(nèi)RAM中的哪組工作寄存器為當(dāng)前工作寄存器組。OV:溢出標(biāo)志位。當(dāng)進(jìn)行補(bǔ)碼運(yùn)算時(shí),運(yùn)算結(jié)果超出128127范圍時(shí),產(chǎn)生溢出,則OV自動(dòng)置1,否則OV清0。PSW.1:保留位。8051中未定義。P:奇偶校驗(yàn)標(biāo)志位。每條指令執(zhí)行完后,該位始終跟蹤累加器A中1的數(shù)目的奇偶性。如果A中有奇數(shù)個(gè)1,則P

11、1;否則P0。2-7 8052單片機(jī)的引腳有何功能?在使用8032時(shí),引腳就如何處理?答:8052單片機(jī)的31腳為, 為訪問(wèn)外部或內(nèi)部程序存儲(chǔ)器控制信號(hào)。當(dāng)引腳接高電平且PC值小于1FFFH時(shí),CPU訪問(wèn)內(nèi)部程序存儲(chǔ)器讀取指令,當(dāng)引腳接低電平時(shí),CPU只訪問(wèn)外部等量齊觀存儲(chǔ)器讀取指令。在8032芯片中沒(méi)有內(nèi)部程序存儲(chǔ)器,因此,8032芯片的31腳只能接地。2-8 8052內(nèi)部RAM中低128 B單元?jiǎng)澐譃槟膸讉€(gè)主要部分?各部分主要功能是什么?答:8052內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM中低128B單元地址空間00H7FH被劃分為三個(gè)部分。第一部分地址為00H1FH這32個(gè)單元分為4個(gè)工作寄存器組,分別用R

12、0R7表示,通過(guò)工作寄存器指令進(jìn)行訪問(wèn)。片內(nèi)RAM中的第二部分20H2FH單元除可作為一般字節(jié)尋址單元使用外,這16個(gè)單元共128位中的每一位又可單獨(dú)作為軟件觸發(fā)器使用,具有位尋址功能,其位地址范圍為00H7FH;第三部分地址30H7FH,這部分存儲(chǔ)區(qū)域可作為8位數(shù)據(jù)緩沖區(qū)使用,一般地,用戶把堆棧就設(shè)置在這部分區(qū)域。2-9 8052內(nèi)部RAM中高128B單元與特殊功能寄存器區(qū)地址空間重疊,使用中是如何區(qū)分這兩個(gè)空間的?答:對(duì)8052片內(nèi)高區(qū)(80H0FFH)128B只能 采用寄存器間接尋址,而對(duì)特殊功能寄存器SFR建起必須采用直接尋址。2-10 什么叫堆棧?堆棧指針SP的作用是什么?答:堆棧是

13、按照“先進(jìn)后出,后進(jìn)先出”的原則來(lái)存取數(shù)據(jù)的一個(gè)內(nèi)部RAM區(qū)域,這個(gè)存儲(chǔ)器區(qū)域的一端是固定的(棧底),另一端是活動(dòng)的(棧頂),每個(gè)存儲(chǔ)單元是不能按字節(jié)任意訪問(wèn)的。堆棧指針SP始終指向棧頂單元,棧頂隨著數(shù)據(jù)入棧和出棧上下浮動(dòng)。2-12 什么是時(shí)鐘周期、機(jī)器周期和指令周期?答:(1)時(shí)鐘周期(又稱為振蕩周期)是指振蕩器產(chǎn)生一個(gè)振蕩脈沖信號(hào)所用的時(shí)間,是振蕩頻率的倒數(shù),稱為拍節(jié)。(2)機(jī)器周期是指CPU完成某一個(gè)規(guī)定操作所需的時(shí)間,8051單片機(jī)的一個(gè)機(jī)器周期包含6個(gè)狀態(tài),并依次表示為S1S6,每個(gè)狀態(tài)分為2個(gè)節(jié)拍。因此一個(gè)機(jī)器周期包含12個(gè)時(shí)鐘周期(振蕩周期),依次表示為:S1P1、S1P2、S2

14、P1、S6P1、S6P2。(3)指令周期是指CPU執(zhí)行一條指令所需要的時(shí)間稱為指令周期。MCS-51單片機(jī)指令周期根據(jù)指令的不同,可包含有1或2或4個(gè)機(jī)器周期。第三章 MCS-51單片機(jī)指令系統(tǒng)3-1 指出下列每一條指令的尋址方式及其完成的操作。MOV 2FH,#40H ;立即尋址,將40H移入片內(nèi)2FH單元MOV A,2FH;直接尋址,將片內(nèi)2FH單元的數(shù)移入累加器AMOV R1,#2FH;立即尋址,將2FH移入當(dāng)前寄存器組的R1單元MOV A,R1;寄存器間接尋址,將寄存器R1中所存地址中的值移入累加器AMOV 2FH,A;隱含尋址,將累加器A中的值移入片內(nèi)2FH單元3-2 內(nèi)部RAM的4

15、FH單元,可用哪幾種尋址方式?分別舉例說(shuō)明。答:直接尋址:MOV R1,4FH間接尋址:MOV R1,#4FH寄存器間接尋址:MOV A,R13-3 指出下列各條指令中,45H代表什么?MOV A,#45H;數(shù)值MOV A,45H;源地址MOV 45H,46H;目標(biāo)地址MOV 45H,#45H;目標(biāo)地址和數(shù)值MOV C,45H;源地址3-4 已知:(A)=7AH,(R0)=30H,(30H)=0A5H,(PSW)=80H,請(qǐng)寫出下列各條指令的執(zhí)行結(jié)果:答:PSW的各位為11110000,即Cy=1,AC=1,F0=1,RS1=1,RS0=0,OV=0,P=0(1)SUBB A,30H結(jié)果:(A

16、)=D4H,CY=1,AC=0,OV=1,P=0(2)SUBB A,#30H結(jié)果:(A)=49H,CY=0,AC=0,OV=0,P=1(3)ADD A,R0結(jié)果:(A)=AAH,CY=0,AC=0,OV=1,P=0(4)ADD A,30H結(jié)果:(A)=1FH,CY=1,AC=0,OV=0,P=1(5)ADD A,#30H結(jié)果:(A)=AAH,CY=0,AC=0,OV=1,P=0(6)ADDC A,30H結(jié)果:(A)=20H,CY=1,AC=1,OV=0,P=1(7)SWAP A 結(jié)果:(A)=A7H,對(duì)標(biāo)志位無(wú)影響(8)XCHD A,R0結(jié)果:(A)=75H,(30H)=AAH,(R0)=AA

17、H,P=1(9)XCH A,30H結(jié)果:(A)=0A5H,(30H)=7AH,P=0(10)XCH A,R0結(jié)果:(A)=30H,(R0)=7AH,P=0(11)MOV A,R0結(jié)果:(A)=0A5H,P=0(12)XCH A,R0結(jié)果:(A)=0A5H,(30H)=7AH,P=03-5 試分析以下程序段的執(zhí)行結(jié)果:MOV SP,#3AHMOV A,#20HMOV B,#30HPUSH ACCPUSH BPOP ACCPOP B結(jié)果:(SP)=3AH,(A)=30H,(B)=20H,(3BH)=20H,(3CH)=30H3-6 指出下列指令的執(zhí)行結(jié)果,并寫出每條指令的機(jī)器碼。MOV 30H,#

18、52H;(30H)=52H01110101(753052H)MOV A,#70H;(A)=70H01110100(7470H)MOV A,30H;(A)=52H11100101(E530H)MOV R0,#30H;(R0)=30H10101000(7830H)MOV A,R0;A=52H11100010(E6H)3-7 分析下列指令的執(zhí)行結(jié)果,并寫出每條指令的機(jī)器碼。MOV A,#70H;(A)=70H01110100(74H)MOV DPTR,#2030H;(DPTR)=2030H10010000(90H)MOVX DPTR,A;(2030H)=70H11110000(F0H)MOV 30H

19、,#40H;(30H)=40H01110101(75H)MOV R0,#30H;(R0)=30H01111000(78H)MOV A,R0;(A)=40H11100110(E6H)3-8 設(shè)R0的內(nèi)容為32H,A的內(nèi)容為48H,內(nèi)部RAM的32H單元內(nèi)容為80H,40單元內(nèi)容為08H,指出在執(zhí)行下列程序段后上述各單元內(nèi)容的變化。MOV A,R0MOV R0,40HMOV 40H,AMOV R0,#35H結(jié)果:(R0)=35H,(A)=80,(32H)=08H,(40H)=80H3-9 已知:(A)=81H,(R0)=20H,(20H)=35H,指出執(zhí)行完下列程序段后A的內(nèi)容。ANL A,#17

20、H;(A)=00000001ORL 20H,A;(20H)=00110101XRL A,R0;(A)=00110100CPL A;(A)=11001011結(jié)果:(A)=CBH3-10 用指令實(shí)現(xiàn)下述數(shù)據(jù)傳送:(1)內(nèi)部RAM20H單元送內(nèi)部RAM40H單元。答:MOV 40H,20H(2)外部RAM20H單元送R0寄存器。答:MOV R1,#20H MOVX A,R1 MOV R0,A(3)外部RAM20H單元送內(nèi)部RAM20H單元答:MOV R1,#20H MOVX A,R1 MOV 20H,A(4)外部RAM1000H單元送內(nèi)部RAM20H單元答:MOV DPTR,#1000H MOVX

21、A,DPTR MOV 20H,A(5)外部ROM1000H單元送內(nèi)部RAM20H單元。答:MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR MOV 20H,A (6) 外部ROM1000H單元送外部RAM20H單元。答:MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A3-11 已知16位二進(jìn)制數(shù)的高8位和低8位分別存放在20H和21H單元,請(qǐng)編寫將其右移一們的程序。CLR CMOV A,20HRRC AMOV 20H,AMOV A,21HRRC AMOV 21H,A3-12 編程實(shí)現(xiàn)內(nèi)部

22、RAM R0R7的內(nèi)容傳遞到20H27H單元。3-13 試編程進(jìn)行兩個(gè)16位數(shù)的減法,6F5DH-13B4H,結(jié)果存入內(nèi)部RAM的30H和31H單元,30H存放差的低8位。CLR CMOV A,#5DHSUBB A,#B4HMOV 30H,AMOV A,#6FHSUBB A,13HMOV 31H,A3-14 編寫程序,若累加器A的內(nèi)容分別滿足下列條件時(shí),程序則至LABEL存儲(chǔ)單元,設(shè)A中存放的是無(wú)符號(hào)數(shù)。A>=10A>0(A)<=10CJNE A,#10H,LABJNZ LABELMOV R0,ALAB:JNC LABELMOV A,#10.CJNE A,R0,LABLABE

23、L:LABEL:LAB:JNC LABEL.LABEL: 3-15 已知(SP)=25H,(PC)=2345H,(24H)=12H,(25H)=34H,(26H)=56H.問(wèn)此時(shí)執(zhí)行“RET”指令后,(SP)=?,(PC)=?答:(SP)=23H,(PC)=3412H執(zhí)行RET時(shí),PCH(SP),SPSP-1,PCL(SP),SPSP-13-16 若(sp)=25H,(PC)=2345H,標(biāo)號(hào)LABEL所在的地址為3456H,問(wèn)執(zhí)行調(diào)用指令“LCALL LABEL”后,堆棧指針和堆棧內(nèi)容發(fā)生什么變化?(PC)的值等于什么?答:最后堆棧指針SP=27H。堆棧指針SP=26H處SP內(nèi)容為45H,指

24、針SP=27H處內(nèi)容為23H。最后程序計(jì)數(shù)器指針PC=3456H。執(zhí)行LCALL后,PCPC+3,SPSP+1,(SP) PCL,SPSP+1,(SP)PCH,PCaddr16。3-17 試編寫程序,查找在內(nèi)部RAM的20H50H單元中是否有0AAH這一數(shù)據(jù)。若有,則將51H單元置01H,若未找到,則將51H單元置00H。MOV 51H,#00H;先設(shè)沒(méi)找到MOV R0,#20H;起始地址LOOP:MOV A,R0;取出數(shù)字CJNE A,#0AAH,NEXT;不相等就跳轉(zhuǎn)INC 51H;相等將51單元置1SJMP EEE;找到轉(zhuǎn)去結(jié)束NEXT:INC R0;下一個(gè)地址CJNE R0,#51H,

25、LOOP;地址沒(méi)找完就繼續(xù)EEE:SJMP $;暫停3-18 試編寫程序,統(tǒng)計(jì)在外部RAM 2000H205FH單元中出現(xiàn)00H的次數(shù),并將統(tǒng)計(jì)結(jié)果豐收入內(nèi)部RAM 50H單元。MOV R0,#00H;RO設(shè)為計(jì)數(shù)器,初始為0MOV DPTR,#2000H;置片外RAM起始地址MOV R1,#60H;置傳送數(shù)據(jù)個(gè)數(shù)LOOP:MOVX A,DPTR;外部RAM單元內(nèi)容送AJNZ NEXT;傳送數(shù)據(jù)不為0 跳轉(zhuǎn)INC R0;傳送數(shù)據(jù)為0,計(jì)數(shù)器加1NEXT:INC DPTR;下一個(gè)地址DJNZ R1,LOOP;地址沒(méi)找完就繼續(xù)MOV 50H,R0;統(tǒng)計(jì)結(jié)果存入50H單元SJMP $;暫停3-19

26、已知R3和R4中存有一個(gè)16位的二進(jìn)制數(shù),高位在R3中代位在R4中。請(qǐng)編程將其求補(bǔ),并存回原處。答:首先假設(shè)R3、R4中是原碼,根據(jù)原碼求補(bǔ)的方法當(dāng)最高位(R3的D7位)為0時(shí)表示為正數(shù),那么補(bǔ)碼與原碼相同,當(dāng)最高位為1時(shí),表明是負(fù)數(shù),負(fù)數(shù)的補(bǔ)碼是最高位不變,其余位取反加1.MOV A,R3JB ACC.7,NEGSJMP $NEG:MOV A,R4CPL ACLR CADD A,#01HMOV R4,AMOV A,R3CPL AADDC A,#00HSETB ACC.7MOV R3,ASJMP $3-20 編寫一個(gè)程序,把片外RAM從2000H開始存放的10個(gè)數(shù)傳送到片內(nèi)RAM 30H開始單

27、元。START:MOV R0,#30HMOV R1,#10HMOV DPTR,#2000HLOOP:MOVX A,DPTRMOV R0,AINC R0INC DPTRDJNZ R1,LOOPSJMP $3-21 試編程將內(nèi)部RAM的30H至4FH單元的內(nèi)容分別傳送到外部RAM的2040H205FH單元。START:MOV R0,#30HMOV R1,#20HMOV DPTR,#2040HLOOP:MOV A,R0MOVX DPTR,AINC DPTRINC R0DJNZ R1,LOOPSJMP $3-22 若外部RAM的(2000H)=X,(2001H)=Y,編程實(shí)現(xiàn)Z=3X+2Y,結(jié)果存入內(nèi)

28、部RAM的20H單元,設(shè)Z<=255。START:MOV DPTR,#2000HMOVX A,DPTRMOV B,#03HMUL ABMOV R0,AINC DPTRMOVX A,DPTRADD A,AADD A,R0MOV 20H,A3-23 試對(duì)內(nèi)部RAM 20H單元的內(nèi)容進(jìn)行判斷,若為正數(shù),轉(zhuǎn)向2100H若為負(fù)數(shù),轉(zhuǎn)向2200H;若為0,轉(zhuǎn)向2300H。START:MOV A,20HJB ACC.7,NEG;為負(fù)數(shù)JNB ACC.7,POSI;為0LJMP #2100HSJMP EEENEG:LJMP #2200HSJMP EEEPOSI:LJMP #2300HSJMP EEEEE

29、E:SJMP $3-24 已知30H、31H中存有一個(gè)16位二進(jìn)制數(shù),高位在前低位在后。試編程將它們乘2,再存回原單位中。START:MOV A,31HADD A,31HMOV 31H,AMOV A,30HADDC A,30HMOV 30H,ASJMP $3-25 已知從外部RAM 2000H開始的單元中有20個(gè)帶符號(hào)的補(bǔ)碼數(shù),試編程把正數(shù)和0取出來(lái)存放到內(nèi)部RAM20H開始的存儲(chǔ)單元中(負(fù)數(shù)為作處理)。START:MOV R0,#20H;需處理的數(shù)的個(gè)數(shù)MOV DPTR,#2000H;需處理數(shù)的起始地址MOV R1,#20H;用于存儲(chǔ)的目標(biāo)地址LOOP:MOVX A,DPTRJB ACC.7

30、,NEG;負(fù)數(shù)不需處理MOV R1,AINC R1NEG:INC DPTRDJNZ R0,LOOPSJMP $第四章 匯編語(yǔ)言程序設(shè)計(jì)4-1 什么叫偽指令?偽指令與指令有什么區(qū)別?答:偽指令不屬于單片機(jī)指令集中的指令,在匯編時(shí)不產(chǎn)生目標(biāo)代碼,不影響程序的執(zhí)行,僅指明在匯編時(shí)執(zhí)行一些特定的操作。如為程序指定一個(gè)存儲(chǔ)區(qū)、將一些數(shù)據(jù)、表格常數(shù)存放在指定的存儲(chǔ)單元、對(duì)地址賦用戶名等。指令是計(jì)算機(jī)所能執(zhí)行的一種基本操作的描述,是計(jì)算機(jī)軟件的基本單元。51單片機(jī)單片機(jī)的指令有二種表達(dá)方式:機(jī)器碼指令和匯編語(yǔ)言指令。4-2 循環(huán)程序由哪幾部分組成?答:由初始化部分、循環(huán)處理部分、循環(huán)控制部分、循環(huán)結(jié)束部分這

31、四部分組成。4-3 什么是子程序?對(duì)于子程序設(shè)計(jì)有什么要求?答:一段具有某一特定功能,能被其它程序所調(diào)用,調(diào)用結(jié)束后能自動(dòng)返回到調(diào)用處的程序塊就稱為子程序。對(duì)子程序設(shè)計(jì)的要求:4-4 試對(duì)下列程序進(jìn)行人工匯編,并說(shuō)明此程序的功能。地址指令碼ORG 1000H;ACDL:MOV R0,#25H;1000H7825MOV R1,#2BH;1002H792bMOV R2,#06H;1004H7A06CLR C;1006HC3CLR A;1007HE4LOOP:MOV A,R0;1008HE6ADDC A,R1;1009H37DEC R0;100AH18DEC R1;100BH19DJNZ R2,LO

32、OP;100CHDAFASJMP $;100EH80FEEND;1008H-100EH=-06H,其補(bǔ)碼為(11111010)20FAH功能:將25H單及前5個(gè)數(shù)與2BH單元及前5個(gè)數(shù)分6組相加,結(jié)果丟棄。4-5 從內(nèi)部RAM的20H單元開始,有15個(gè)數(shù)據(jù)。試編一程序,把其中的正數(shù)、負(fù)數(shù)分別送到41H和61H開始的存儲(chǔ)單元,并分別將正數(shù)、負(fù)數(shù)的個(gè)數(shù)送40H單元和60H單元。MOV R0,#41H;存放正數(shù)的起始地址MOV R1,#61H;存放負(fù)數(shù)的起始地址MOV SP,#2EH;指明棧頂?shù)刂稭OV R3,#00H;正數(shù)個(gè)數(shù)MOV R4,#00H;負(fù)數(shù)個(gè)數(shù)MOV R7,#15;需判斷數(shù)的個(gè)數(shù)LO

33、OP:POP ACC;出棧放入AJB ACC.7,NEG;負(fù)數(shù)跳轉(zhuǎn)CJNE A,#00H,LOOP1;非負(fù)非零轉(zhuǎn)正數(shù)處理SJMP LOOP;零不處理,取下一個(gè)數(shù)LOOP1:MOV R0,A;正數(shù)保存INC R0;正數(shù)存放地址加1INC R3;正數(shù)個(gè)數(shù)加1SJMP LOOP2;未結(jié)束就繼續(xù)NEG:MOV R1,A;將負(fù)數(shù)送負(fù)數(shù)保存地址INC R1;負(fù)數(shù)地址加1INC R4;負(fù)數(shù)個(gè)數(shù)加1LOOP2:DJNZ R7,LOOP;未結(jié)束就繼續(xù)MOV 40H,R3;正數(shù)個(gè)數(shù)送40H單元MOV 60H,R4;負(fù)數(shù)個(gè)數(shù)送60H單元SJMP $END4-6 設(shè)內(nèi)部RAM的30H和31H單元中有二個(gè)帶符號(hào)數(shù)求出其

34、中的大數(shù)存放在32H單元中。MOV A,30HXRL A,31HJB ACC.7,LOOPMOV A,30HSUBB A,31HJC LOOP1MOV 32H,30HSJMP $LOOP1:MOV 32H,31HSJMP $LOOP:MOV A,30HJB ACC.7,LOOP1MOV 32H,ASJMP $4-7 試編制實(shí)現(xiàn)ASCII碼轉(zhuǎn)十進(jìn)制數(shù)的程序。在8032單片機(jī)內(nèi)RAM的40H單元中存放一個(gè)代碼。若此代碼為十進(jìn)制數(shù)的ASCII碼,則將其相應(yīng)的十進(jìn)制數(shù)送片內(nèi)RAM的50H單元,否則將此單元置成0FFH。MOV A,40HCLR CSUBB A,#30H;數(shù)字比其ASCII碼值小30HJ

35、C LOOP;存的ASCII值小于0的ASCII碼值跳轉(zhuǎn)MOV R0,AMOV A,#09H;減30H后差大于0,是否不SUBB A,R0; 大于9?JC LOOP;差大于9,跳轉(zhuǎn)MOV 50H,R0;將數(shù)字存入50H單元SJMP $LOOP:MOV 50H,#0FFH;不是數(shù)字,存入0FFHSJMP $END4-8 試編程將存放在8032單片機(jī)內(nèi)部RAM中首址為20H、長(zhǎng)度為50H的數(shù)據(jù)快傳送到片外RAM以20H為首址的連續(xù)單元中。MOV R0,#20HMOV R1,#20HMOV R7,#50HLOOP:MOV A,R0MOVX R1,AINC R0INC R1DJNZ R7,LOOPSJ

36、MP $4-9 設(shè)一個(gè)字符串存放在8032單片機(jī)內(nèi)部RAM以20H為首址的連續(xù)單元中,字符串以回車結(jié)束。要求統(tǒng)計(jì)該字符串中字符C(C=43H)的個(gè)數(shù),并將其存入外部RAM的40H單元。試編寫實(shí)現(xiàn)上述要求的程序。MOV R0,#20HMOV R2,#00HLOOP:MOV A,R0XRL A,#0DH;判斷是否是回車符JZ EXITMOV A,R0XRL A,#43HJNZ LOOP2INC R2LOOP2:INC R0SJMP LOOPEXIT:MOV DPTR,#0040HMOV A,R2MOVX DPTR,ASJMP $ END4-10 設(shè)有一長(zhǎng)度為20H的字符串,它存放在片外RAM100

37、0H為首地址的連續(xù)單元中。試編制將其中數(shù)字與字母分開并將它們送到片內(nèi)RAM以30H和50H為首地址的連續(xù)單元中的程序。 MOV DPTR,#1000HMOV R7,#20HMOV R0,#30HMOV R1,#50HLOOP:MOVX A,DPTRCJNE A,#30H,LOOP1SJMP ISNUMLOOP1:JNC LOOP2SJMP ISCHARLOOP2:CJNE A,#3AH,LOOP3LOOP3:JC ISNUMSJMP ISCHARISCHAR:MOV R1,AINC R1SJMP NEXTISNUM:CLR CSUBB A,#30HMOV R0,AINC R0SJMP NEXT

38、NEXT:INC DPTRDJNZ R7,LOOPSJMP $END4-11 試編程將片內(nèi)RAM區(qū)DATA1單元開始的20H個(gè)單字節(jié)依次與DATA2單元為起始地址的20H個(gè)單字節(jié)進(jìn)行交換。MAIN:MOV R7,#20HDATA1 EQU 20HDATA2 EQU 40HMOV R0,#DATA1MOV R1,#DATA2LOOP:MOV A,R0XCH A,R1MOV R0,AINC R0INC R1DJNZ R7,LOOPSJMP $END4-13 設(shè)片內(nèi)RAM的20H4FH單元中有若個(gè)無(wú)符號(hào)數(shù),試編程求出其中的最大值及所在單元地址,將最大值存入片內(nèi)RAM的50H單元,最大值所在單元地址存

39、入片內(nèi)RAM的51H單元。MOV R0,#20HMOV R7,#20HMOV A,R0MOV R2,AMOV A,R0MOV R1,ALOOP:INC R0CLR CSUBB A,R0JNC LOOP1MOV A,R0MOV R2,AMOV A,R0MOV R1,ALOOP1:MOV A,R1DJNZ R7,LOOPMOV 50H,R1MOV 51H,R2SJMP $END4-14 設(shè)片外RAM從1000H單元開始存放100個(gè)無(wú)符號(hào)8位二進(jìn)制數(shù)。試編程將它們從大到小依次入片內(nèi)RAM從10H開始的單元中。MOV R7,#100MOV DPTR,#1000HMOV R0,#10HLOOP:MOVX

40、 A,DPTRMOV R0,AINC DPTRINC R0DJNZ R7,LOOPMOV R7,#99 MOV R6,#99NEXT:MOV R0,#10H MOV A,R0MOV R1,ALOOP2:INC R0MOV A,R0CLR CSUBB A,R1JNZ LOOP3SJMP LOOP4LOOP3:JC LOOP4MOV A,R0DEC R0MOV R0,AMOV A,R1INC R0MOV R0,ALOOP4:MOV A,R0MOV R1,A DJNZ R7,LOOP2 DEC R6 MOV A,R6 MOV R7,A INC R6 DJNZ R6,NEXTSJMP $END4-15

41、 設(shè)有2個(gè)4B的BCD數(shù):X=24350809,Y=12450379。X從片內(nèi)RAM的25H單元開始存放,Y從片內(nèi)RAM的35H單元開始存放,求兩數(shù)的和。設(shè)數(shù)據(jù)在內(nèi)存中按照低字節(jié)在前,高字節(jié)在后的順序存放。MOV 25H,#24HMOV 26H,#35HMOV 27H,#08HMOV 28H,#09HMOV 35H,#12HMOV 36H,#45HMOV 37H,#03HMOV 38H,#79HMOV R7,#04HMOV R0,#25HMOV R1,#35HCLR CLOOP:MOV A,R0ADDC A,R1DA AMOV R0,AINC R0INC R1DJNZ R7,LOOPSJMP

42、$END 4-16 設(shè)晶振頻率為6MHz,試編一能延時(shí)20ms的子程序答:一個(gè)機(jī)器周期T=12/6*106=2s,延時(shí)20ms需要20000/2=10000個(gè)機(jī)器周期。擬用以下程序:工作需要機(jī)器周期數(shù)START:MOV R6,#data1;1LOOP1:MOV R7,#data2;1NOP;1NOP;1LOOP:NOP;1NOP;1NOP;1DJNZ R7,LOOP;2DJNZ R6,LOOP;2RET;2延時(shí)周期數(shù)為1+(5*data2+5)*data1+2,選擇最合適的data1和data2Data1=200,data2=99,延時(shí)機(jī)器周期數(shù)為10003個(gè),延時(shí)20.006ms4-17 利

43、用查表技術(shù)將累加器A中的一位BCD碼轉(zhuǎn)換成相應(yīng)的十進(jìn)制數(shù)的七段碼,結(jié)果仍放在A中(設(shè)顯示管09的七段碼分別是40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH)。SUB1:INC AMOVC A,A+PCRETDB 40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH4-18 試編一采用查表法求120的二次方數(shù)的子程序。要求:X在累加器A中,1X20,二次方高位存放在R6中,低位存放在R7中。SUB:MOV DPTR,#0100HMOV R0,AADD A,R0MOV R0,AMOVC A,A+DPTRMOV R7,AINC DPTRMOV

44、 A,R0MOVC A,A+DPTRMOV R6,ARETORG 102HDB 01H,00H,04H,00H,09H,00H,10H,00H,19H,00HDB 24H,00H,31H,00H,40H,00H,51H,00H,64H,00HDB 79H,00H,90H,00H,0A9H,00H,0C4H,00H,0E1H,00HDB 00H,01H,21H,01H,44H,01H,69H,01H,90H,01H第五章 MCS-51單片機(jī)中斷系統(tǒng)5-1 MCS-51單片機(jī)的中斷系統(tǒng)由哪些功能部件組成?分別有什么作用?答:51單片機(jī)的中斷系統(tǒng)由與中斷有關(guān)的特殊功能寄存器(中斷允許控制寄存器IE、

45、中斷優(yōu)先等控制寄存器IP、定時(shí)器/計(jì)數(shù)器控制寄存器TCON、T2CON、串行口控制寄存器SCON)和6個(gè)中斷源(2個(gè)外部中斷源P3.2、P3.3,3個(gè)定時(shí)器/計(jì)數(shù)器中斷源T0P3.4、T1P3.5、T2P1.0),1個(gè)串行接口中斷源(RXDp3.0接收數(shù)據(jù)中斷、TXDpP3.1發(fā)送數(shù)據(jù)中斷)組成。中斷允許控制寄存器IE由七個(gè)控制位構(gòu)成,其中D7位EA是所有中斷的總開關(guān),若EA=1,CPU中斷允許,EA=0時(shí),CPU屏蔽一切中斷請(qǐng)求。其余6位D5D0分別控制6個(gè)中斷源,置1為允許申請(qǐng)中斷,清0為禁止申請(qǐng)中斷。其字節(jié)地址是A8H,位地址是A8HADH和AFH,每位都可由軟件來(lái)置1或清0。中斷優(yōu)先等

46、控制寄存器IP用于設(shè)置每個(gè)中斷的優(yōu)先級(jí),該寄存器由6個(gè)控制位構(gòu)成(D5D1)分別控制每個(gè)中斷源的優(yōu)先級(jí),置1為高優(yōu)先級(jí),置0為低優(yōu)先級(jí)。其位地址為B8HBDH,每位都可由軟件來(lái)置1或清0。定時(shí)器/計(jì)數(shù)器控制寄存器TCON字節(jié)地址88H,其位地址88H8FH,除D6和D4位用于控制定時(shí)器/計(jì)數(shù)器0、1啟停外,其余6位分二組分別控制定時(shí)器/計(jì)數(shù)器0、1的中斷信號(hào)方式(IT0/IT1),外部中斷請(qǐng)求標(biāo)志位(IE0/IE1)、溢出標(biāo)志位(TF0/TF1)、T2CON字節(jié)地址為C8H,可按位尋址,但只有2位(D7和D6位)用作中斷控制,當(dāng)T2EX(P1.1腳)的負(fù)跳變有效時(shí)T2的硬件置D6位EXF2(T

47、2CON.6)=1,tm CPU申請(qǐng)中斷。當(dāng)T2計(jì)數(shù)溢出時(shí)由硬件置D7(TF2,T2CON.7)=1,向CPU申請(qǐng)中斷。 串行口控制寄存器SCON字節(jié)地址為98H,其位地址98H 9FH。與中斷有關(guān)的只有D0位和D1位。串行口發(fā)送了一幀信息,便由硬件置TI=1,向CPU申請(qǐng)中斷。串行口接收一鄧一幀信息,便由硬件置RI=1,向CPU申請(qǐng)中斷。5-2 MCS-51系列單片機(jī)能提供幾個(gè)中斷源? 答:MCS-51系列單片機(jī)能提供6個(gè)中斷源,。5-3 MCS-51單片機(jī)的中斷系統(tǒng)中有幾個(gè)優(yōu)先級(jí)?如何設(shè)定?MCS-51單片機(jī)有2個(gè)中斷優(yōu)先級(jí)。各個(gè)中斷源的優(yōu)先級(jí)是由特殊功能寄存器IP來(lái)確定,IP中和各個(gè)中斷

48、源對(duì)應(yīng)位為1時(shí),此中斷源為高優(yōu)先級(jí),否則為低優(yōu)先級(jí)。在同一優(yōu)先級(jí)中,各個(gè)中斷源的優(yōu)先順序是由自然優(yōu)先級(jí)來(lái)確定的。5-4 CPU響應(yīng)中斷有哪條件?在什么情況下中斷響應(yīng)會(huì)受阻?答:CPU響應(yīng)中斷的基本條件有以下三個(gè):有中斷源提出中斷請(qǐng)求。中斷總允許位EA=1,即CPU開放中斷。申請(qǐng)中斷的中斷源的中斷允許位(ET2、ES、ET1、EX1、ET0、EX0)為1,即沒(méi)有被屏蔽。在中斷源提出中斷申請(qǐng)后,有二種情況可以使中斷受阻:中斷允許寄存器IE中對(duì)應(yīng)于有中斷請(qǐng)求的控制位為0,屏蔽了中斷請(qǐng)求,即CPU沒(méi)無(wú)法收到中斷請(qǐng)求。中斷允許寄存器IE的D7位(EA位)為0,即CPU沒(méi)有開放中斷響應(yīng)。CPU正在處理同等

49、級(jí)或高等級(jí)中斷時(shí),CPU將在處理完該中斷并返回執(zhí)行一條指令后才響應(yīng)新中斷請(qǐng)求?,F(xiàn)行的機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期。正在執(zhí)行的指令是RETI或訪問(wèn)IE、IP指令。5-5 簡(jiǎn)述MCS-51系列單片機(jī)的中斷響應(yīng)過(guò)程。答:MCS-51系列單片機(jī)的中斷響應(yīng)過(guò)程是按照以下順序執(zhí)行的:開中斷中斷請(qǐng)求中斷判斷中斷響應(yīng)中斷返回。5-6 MCS-51單片機(jī)中斷響應(yīng)時(shí)間是否固定?為什么?答:MCS-51單片機(jī)中斷響應(yīng)時(shí)間不固定,因?yàn)楫?dāng)中斷源向CPU提出中斷請(qǐng)求時(shí),CPU正在執(zhí)行的指令的指令周期是不一樣的,一般情況下中斷響應(yīng)時(shí)間在38個(gè)機(jī)器周期之間。當(dāng)然如果中斷到來(lái)時(shí)是在處理同級(jí)或高級(jí)中斷服務(wù)程序中,則響

50、應(yīng)時(shí)間就無(wú)法估計(jì)了。5-7 MCS-51中若要擴(kuò)充8個(gè)中斷源,可采用哪些方法?如何確定優(yōu)先級(jí)?答:一般可采取中斷加查詢方式,軟件先查詢到的為高優(yōu)先級(jí),最后查詢到的為低優(yōu)先級(jí)。5-8 8031芯片的INT0、INT1引腳分別輸入壓力超限、溫度超限中斷請(qǐng)求信號(hào),定時(shí)器/計(jì)數(shù)器0作定時(shí)檢測(cè)的實(shí)時(shí)時(shí)鐘,用戶規(guī)定的中斷優(yōu)先權(quán)排隊(duì)次序?yàn)椋簤毫Τ逌囟瘸薅〞r(shí)檢測(cè)。要求確定IE、IP的內(nèi)容,以實(shí)現(xiàn)上述要求。答:IE設(shè)87H,IP設(shè)05H。第六章 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器6-1 MCS-51單片機(jī)內(nèi)部設(shè)有幾個(gè)定時(shí)器/計(jì)數(shù)器?它們是由哪些專用寄存器組成的?設(shè)有3個(gè)定時(shí)器/計(jì)數(shù)器T0、T1、T2。它們由特殊功能寄存器工作方式寄存器TMOD(字節(jié)地址89H,不能按位尋址,用來(lái)控制T0和T1的工作方式),TCON控制寄存器(字節(jié)地址88H,位地址88H8FH ,用高4位控制定時(shí)器/計(jì)數(shù)器0、1的啟、停,和作溢出標(biāo)志位),定時(shí)器/計(jì)數(shù)器2的控制寄存器T2CON(其字節(jié)址

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論