單片機(jī)原理和應(yīng)用課后習(xí)題參考的答案1-6章_第1頁
單片機(jī)原理和應(yīng)用課后習(xí)題參考的答案1-6章_第2頁
單片機(jī)原理和應(yīng)用課后習(xí)題參考的答案1-6章_第3頁
單片機(jī)原理和應(yīng)用課后習(xí)題參考的答案1-6章_第4頁
單片機(jī)原理和應(yīng)用課后習(xí)題參考的答案1-6章_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《單片機(jī)原理及應(yīng)用》習(xí)題答案

第一章計算機(jī)基礎(chǔ)知識

1-1微型計算機(jī)主要由哪幾局部組成各局部有何功能

答:一臺微型計算機(jī)由中央處理單元(CPU)、存儲器、I/O接口及I/O設(shè)備

等組成,相互之間通過三組總線(Bush即地址總線AB、數(shù)據(jù)總線DB和控制總

線CB來連接。

CPU由運(yùn)算器和控制器組成,運(yùn)算器能夠完成各種算術(shù)運(yùn)算和邏輯運(yùn)算操作,

控制器用于控制計算機(jī)進(jìn)展各種操作。

存儲器是計算機(jī)系統(tǒng)中的“記憶〃裝置,其功能是存放程序和數(shù)據(jù)。按其功

能可分為RAM和ROMo

輸入/輸出(I/O)接口是CPU與外部設(shè)備進(jìn)展信息交換的部件。

總線是將CPU、存儲器和I/O接口等相對獨(dú)立的功能部件連接起來,并傳送

信息的公共通道。

1-3什么叫單片機(jī)其主要由哪幾局部組成

答:單片機(jī)(SingleChipMicrocomputer)是指把CPU>RAM、ROM、定時

器/計數(shù)器以及I/O接口電路等主要部件集成在一塊半導(dǎo)體芯片上的微型計算

機(jī)。

1-4在各種系列的單片機(jī)中,片內(nèi)ROM的配置有幾種形式用戶應(yīng)根據(jù)什么原

則來選用

答:單片機(jī)片內(nèi)ROM的配置狀態(tài)可分四種:

(1)片內(nèi)掩膜(Mask)ROM型單片機(jī)(如8051),適合于定型大批量應(yīng)用產(chǎn)

品的生產(chǎn);

⑵片內(nèi)EPROM型單片機(jī)(如8751),適合于研制產(chǎn)品樣機(jī);

(3)片內(nèi)無ROM型單片機(jī)(如8031),需外接EPROM,單片機(jī)擴(kuò)展靈活,適

用于研制新產(chǎn)品;

(4)EEPROM(或FlashROM)型單片機(jī)[如89c51),內(nèi)部程序存儲器電可

擦除,使用更方便。

1-5寫出以下各數(shù)的另兩種數(shù)制的表達(dá)形式(二、十、十六進(jìn)制)

110001010011101011111111101101

982003958516236291495

62H4E47H249H3F6CH1D5D7

1-6寫出以下各數(shù)的BCD參與:

59:01011001,1996:0001100110010110,4859.2:0100100001011001.0010

389.41:001110001001.01000001

第二章MCS-51單片機(jī)的硬件構(gòu)造

2-18052單片機(jī)片內(nèi)包含哪些主要邏輯功能部件

答:8052單片機(jī)片內(nèi)包括:

①8位中央處理器CPU一個

②片內(nèi)振蕩器及時鐘電路

③256B數(shù)據(jù)存儲器RAMo

④8KB片內(nèi)程序存儲空間ROM

⑤21個特殊功能存放器SFR

⑥4個8位并行I/O端口(32條線)

⑦1個可編程全雙工串行口

⑧可尋址64KB的外部程序存儲空間和外部數(shù)據(jù)存儲空間

⑨3個16位的定時器/計數(shù)器

⑩6個中斷源、2個優(yōu)先級嵌套中斷構(gòu)造

2-28052的存儲器分哪幾個空間如何區(qū)別不同空間的尋址

答:⑴8052的存儲器分為6個編址空間:

①片內(nèi)ROM的容量為8KB,其地址為0000H1FFFH;

②可擴(kuò)展片外ROM的容量為64KB,其地址為OOOOH>FFFH;

片內(nèi)RAM的容量為256B,其地址為OOH~FFH分為二塊:③地址00H~7FH共

128B為片內(nèi)RAM低區(qū),④另128B為片內(nèi)RAM高區(qū),其地址空間為80H'FFH,其

地址空間與SFR功能存放器地址重疊;

⑤可擴(kuò)展片外RAM的容量為64KB,其地址為OOOOH^IFFFH;

⑥特殊功能存放器SFR的空間為128B,其地址為80H~FFH,但實(shí)際只定義了

26B單元,這26B單元分散在80H'F0H。

⑵程序存儲器和數(shù)據(jù)存儲器在邏輯上是完全分開的。

CPU通過指令MOVC訪問程序存儲器。當(dāng)8052第31腳瓦接高電平時,CPU

將從片內(nèi)程序存儲器0000H單元開場執(zhí)行,當(dāng)PC值超出片內(nèi)程序存儲空間,即

大于1FFFH時,會自動轉(zhuǎn)向片外程序存儲空間。當(dāng)麗接低電平時,CPU將從片

外程序存儲器ROM的0000H單元開場執(zhí)行。

CPU通過MOV指令訪問片內(nèi)數(shù)據(jù)存儲空間RAM,低區(qū)128B地址空間001r7FH

中地址為00H1FH這32個單元分為4個工作存放器組,分別用R0、R7表示,通

過工作存放器指令進(jìn)展訪問。片內(nèi)RAM中的20H~2FH單元除可作為一般字節(jié)尋址

單元使用外,這16個單元共128位中的每一位又可單獨(dú)作為軟件觸發(fā)器使用,

具有位尋址功能,其位地址范圍為00H'7FH;對片內(nèi)高區(qū)128B尋址只能用存放

器間接尋址,而對特殊功能存放器建起必須使用直接尋址。

CPU通過指令MOVX訪問片外數(shù)據(jù)存儲器。

2-3DPTR的作用是什么它由哪幾個存放器組成

答:相對于地址指針,DPTR被稱為數(shù)據(jù)指針,但實(shí)際上DPTR中存放的是一

個16位的地址,作為訪問程序存儲器和外部數(shù)據(jù)存儲器的地址指針。當(dāng)對64KB

外部數(shù)據(jù)存儲器空間尋址時,作為間址存放器使用,而在訪問程序存儲器時,作

為基址存放器使用。DPTR是一個16位的特殊功能存放器,由兩個8位存放器DPH、

DPL組成,使用SFR中的82H和83H單元。

2-4簡述布爾處理存儲器的空間分配。

答:在單片機(jī)中位處理又稱布爾處理,允許按位處理的存儲器稱為布爾處理

存儲器。其地址空間由二局部構(gòu)成:一局部是片內(nèi)RAM中字節(jié)地址為20H~2FH

的16字節(jié)的128個位,這些位編址為OOH'7FH;另一局部在特殊存放器中,其

地址碼能被8整除的12個特殊功能存放器可以按位尋址,但其中4個未定義,

一共有92位可按位尋址。這二局部結(jié)合起來形成一個具有220位的位尋址空間。

2-58052單片機(jī)設(shè)置4組工作存放器,如何選擇確定和改變當(dāng)前工作存放

答:8052片內(nèi)數(shù)據(jù)存儲器的00H1FH這32個單元分為4級作為4個工作存

放器第0組地址00H'07H,第一組08H~0FH,第二組10H~17H,第3組181rlFH。

每個工作存放器都有8個單元,分別用R0~R7表示。4組存放器中每一組都可能

被選為CPU的工作存放器,這是通過程序狀態(tài)字PSW的PSW.3(RSO)和PSW.4(RS1)

兩位的狀態(tài)來選擇決定的。見下表:

PSW.4(RS1)PSW.3(RSO)當(dāng)前使用的工作存放器組RO'R7

000組(00H'07H)

011組(08H'OFH)

102組

113組(18H'1FH)

通過程序改變RS1和RSO的狀態(tài),就可方便地更換工作存放器組。

2-6程序狀態(tài)字存放器PSW的作用是什么常用的狀態(tài)標(biāo)志位有哪些位作用

分別是什么

答:PSW是一個8位的特殊功能存放器,由一些標(biāo)志位組成,用于存放程序

運(yùn)行中的各種狀態(tài)信息。它可以進(jìn)展位尋址。各位的作用如下:

Cy:進(jìn)位標(biāo)志位。在進(jìn)展加(或減)法運(yùn)算時,假設(shè)操作結(jié)果的最高位(D7

位)有進(jìn)位(或借位)時,Cy由硬件置1,否則Cy清0。在進(jìn)展位操作時,Cy

又是位累加器,指令助記符用C表示。

AC:輔助進(jìn)位標(biāo)志位。在進(jìn)展加(或減)運(yùn)算時,假設(shè)操作結(jié)果的低半字節(jié)

(D3位)向高半字節(jié)產(chǎn)生進(jìn)位(或借位)時,AC位將由硬件自動置1,否則AC

位清Oo

F0:用戶標(biāo)志位。用戶根據(jù)需要對F0置位或復(fù)位,作為軟件標(biāo)志。

RS1和RSO:工作存放器組選擇控制位。由用戶用軟件改變RS1和RSO的狀

態(tài),以選擇內(nèi)RAM中的哪組工作存放器為當(dāng)前工作存放器組.

0V:溢出標(biāo)志位。當(dāng)進(jìn)展補(bǔ)碼運(yùn)算時,運(yùn)算結(jié)果超出一128?+127范圍時,

產(chǎn)生溢出,則0V自動置1,否則0V清0。

PSW.1:保存位。8051中未定義。

P:奇偶校驗標(biāo)志位。每條指令執(zhí)行完后,該位始終跟蹤累加器A中1的數(shù)

目的奇偶性。如果A中有奇數(shù)個1,則P=l;否則P=0。

2-78052單片機(jī)的麗引腳有何功能在使用8032時,麗引腳就如何處理

答:8052單片機(jī)的31腳為蘇,麗為訪問外部或內(nèi)部程序存儲器控制信號。

當(dāng)誨引腳接高電平且PC值小于1FFFH時,CPU訪問內(nèi)部程序存儲器讀取指令,

當(dāng)說引腳接低電平時,CPU只訪問外部等量齊觀存儲滯讀取指令。

在8032芯片中沒有內(nèi)部程序存儲器,因此,8032芯片的31腳而只能接地。

2-88052內(nèi)部RAM中低128B單元劃分為哪幾個主要局部各局部主要功能

是什么

答:8052內(nèi)部數(shù)據(jù)存儲器RAM中低128B單元地址空間00H~7FH被劃分為三

個局部。第一局部地址為OOFflFH這32個單元分為4個工作存放器組,分別用

R0~R7表示,通過工作存放器指令進(jìn)展訪問。片內(nèi)RAM中的第二局部20H~2FH單

元除可作為一般字節(jié)尋址單元使用外,這16個單元共128位中的每一位又可單

獨(dú)作為軟件觸發(fā)器使用,具有位尋址功能,其位地址范圍為OOH'7FH;第三局部

地址30H~7FH,這局部存儲區(qū)域可作為8位數(shù)據(jù)緩沖區(qū)使用,一般地,用戶把堆

棧就設(shè)置在這局部區(qū)域。

2-98052內(nèi)部RAM中高128B單元與特殊功能存放器區(qū)地址空間重疊,使用

中是如何區(qū)分這兩個空間的

答:對8052片內(nèi)高區(qū)(80H'0FFH)128B只能采用存放器間接尋址,而對特

殊功能存放器SFR建起必須采用直接尋址。

2-10什么叫堆棧堆棧指針SP的作用是什么

答:堆棧是按照“先進(jìn)后出,后進(jìn)先出〃的原則來存取數(shù)據(jù)的一個內(nèi)部RAM

區(qū)域,這個存儲器區(qū)域的一端是固定的[棧底),另一端是活動的(棧頂),每個

存儲單元是不能按字節(jié)任意訪問的。

堆棧指針SP始終指向棧頂單元,棧頂隨著數(shù)據(jù)入棧和出棧上下浮動。

2-12什么是時鐘周期、機(jī)器周期和指令周期

答:(1)時鐘周期(又稱為振蕩周期)是指振蕩器產(chǎn)生一個振蕩脈沖信號所

用的時間,是振蕩頻率的倒數(shù),稱為拍節(jié)。

(2)機(jī)器周期是指CPU完成某一個規(guī)定操作所需的時間,8051單片機(jī)的一

個機(jī)器周期包含6個狀態(tài),并依次表示為S1?S6,每個狀態(tài)分為2個節(jié)拍。因

此一個機(jī)器周期包含12個射鐘周期(振蕩周期),依次表示為:SIPkS1P2、

S2P1、…、S6P1、S6P2o

(3)指令周期是指CPU執(zhí)行一條指令所需要的時間稱為指令周期。MCS-51

單片機(jī)指令周期根據(jù)指令的不同,可包含有1或2或4個機(jī)器周期。

第三章MCS-51單片機(jī)指令系統(tǒng)

3-1指出以下每一條指令的尋址方式及其完成的操作。

MOV2FH,#40H;立即尋址,將40H移入片內(nèi)2FH單元

MOVA,2FH;直接尋址,將片內(nèi)2FH單元的數(shù)移入累加器A

MOVR1,#2FH;立即尋址,將2FH移入當(dāng)前存放器組的R1單元

MOVA,@R1;存放器間接尋址,將存放器R1中所存地址中的值移入累加器A

MOV2FH,A;隱含尋址,將累加器A中的值移入片內(nèi)2FH單元

3-2內(nèi)部RAM的4FH單元,可用哪幾種尋址方式分別舉例說明。

答:直接尋址:MOVRI,4FH

間接尋址:MOVRI,#4FH

存放器間接尋址:MOVA,@R1

3-3指出以下各條指令中,45H代表什么

MOVA,#45H;數(shù)值

MOVA,45H;源地址

MOV45H,46H;目標(biāo)地址

MOV45H,#45H;目標(biāo)地址和數(shù)值

MOVC,45H;源地址

3-4:(A)=7AH,(RO)=30H,(30H)=0A5H,(PSW)=80H,請寫出以下各條指

令的執(zhí)行結(jié)果:

答:PSW的各位為11110000,即Cy=l,AC=1,F0=l,RS1=1,RSO=O,0V=0,P=0

(l)SUBBA,30H

結(jié)果:(A)=D4H,CY=1,AC=O,0V=l,P=0

(2)SUBBA,#30H

結(jié)果:(A)=49H,CY=O,AC=O,0V=0,P=1

(3)ADDA,R0

結(jié)果:(A)=AAH,CY=O,AC=O,OV=1,P=0

(4)ADDA,30H

結(jié)果:(A)=1FH,CY=1,AC=O,0V=0,P=1

(5)ADDA,#30H

結(jié)果:(A)=AAH,CY=O,AC=O,OV=1,P=0

(6)ADDCA,30H

結(jié)果:(A)=20H,CY=1,AC=1,0V=0,P=1

(7)SWAPA

結(jié)果:(A)=A7H,對標(biāo)志位無影響

(8)XCHDA,@RO

結(jié)果:(A)=75H,(30H)=AAH,(RO)=AAH,P=1

(9)XCHA,30H

結(jié)果:(A)=0A5H,(30H)=7AH,P=0

(10)XCHA,RO

結(jié)果:(A)=30H,(RO)=7AH,P=0

(11)MOVA,@RO

結(jié)果:(A)=0A5H,P=0

(12)XCHA,?RO

結(jié)果:(A)=0A5H,(30H)=7AH,PR

3-5試分析以下程序段的執(zhí)行結(jié)果:

MOVSP,#3AH

MOVA,#20H

MOVB,#30H

PUSHACC

PUSHB

POPACC

POPB

結(jié)果:(SP)=3AH,(A)=30H,(B)=20H,(3BH)=20H,(3CH)=30H

3-6指出以下指令的執(zhí)行結(jié)果,并寫出每條指令的機(jī)器碼。

MOV30H,#52H;(30H)=52H01110101(753052H)

MOVA,#70H;(A)=70H01110100(7470H)

MOVA,30H;(A)=521111100101(E530H)

MOVR0,#30H;(R0)=30H10101000(7830H)

MOVA,@R0;A=52H11100010(E6H)

3-7分析以下指令的執(zhí)行結(jié)果,并寫出每條指令的機(jī)器碼。

MOVA,#70H;(A)=70H01110100(74H)

MOVDPTR,#2030H;(DPTR)=2030H10010000(90H)

MOVX@DPTR,A;(2030H)=70Hl1110000(FOH)

MOV30H,#40H;(30H)=40H01110101(75H)

MOVR0,#30H;(R0)=30H01111000(78H)

MOVA,@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)容的變化。

MOVA,@R0

MOV@R0,40H

MOV40H,A

MOVR0,#35H

結(jié)果:(R0)=35H,(A)=80,(32H)=08H,(40H)=80H

3-9;(A)=81H,(R0)=20H,(20H)=35H,指出執(zhí)行完以下程序段后A的內(nèi)容。

ANLA,#17H;(A)=00000001

ORL20H,A;(2011)=00110101

XRLA,0R0;(A)=00110100

CPLA;(A)=11001011

結(jié)果:(A);CBH

3-10用指令實(shí)現(xiàn)下述數(shù)據(jù)傳送:

(1)內(nèi)部RAM20H單元送內(nèi)部RAM40H單元。

答:MOV40H,20H

(2)外部RAM20H單元送R0存放器。

答:MOVRl,#20HMOVXA,@R1MOVR0,A

(3)外部RAM20H單元送內(nèi)部RAM20H單元

答:MOVRI,#20HMOVXA,@R1MOV20H,A

(4)外部RAM1000H單元送內(nèi)部RAM20H單元

答:MOVDPTR,ftlOOOHMOVXA,@DPTRMOV20H,A

(5)外部R0M1000H單元送內(nèi)部RAM20H單元。

答:MOVDPTR,#1000HMOVA,#00HMOVCA,@A+DPTRMOV20H,A

(6)外部R0M1000H單元送外部RAM20H單元。

答:MOVDPTR,#1000HMOVA,ttOOHMOVCA,@A+DPTRMOVRI,#20HMOVX

@R1,A

3-1116位二進(jìn)制數(shù)的高8位和低8位分別存放在20H和21H單元,請編寫

將其右移一們的程序。

CLRC

MOVA,20H

RRCA

MOV20H,A

MOVA,21H

RRCA

MOV21H,A

3-12編程實(shí)現(xiàn)內(nèi)部RAMR0~R7的內(nèi)容傳遞到20H~27H單元。

3-13試編程進(jìn)展兩個16位數(shù)的減法,6F5DH-13B4H,結(jié)果存入內(nèi)部RAM的

30H和31H單元,30H存放差的低8位。

CLRC

MOVA,#5DH

SUBBA,#B4H

MOV30H,A

MOVA,#6FH

SUBBA,13H

MOV31H,A

3-14編寫程序,假設(shè)累加器A的內(nèi)容分別滿足以下條件時,程序則至LABEL

存儲單元,設(shè)A中存放的是無符號數(shù)。

①A>=10②A>0③(A)<=10

CJNEA,#10H,LABJNZLABELMOVRO,A

LAB:JNCLABELMOVA,#10

CJNEA,RO,LAB

LABEL:LABEL:LAB:JNCLABEL

LABEL:

3-15(SP)=25H,(PC)=2345H,(24H)=12H,(25H)=34H,(26H)=56H.問此時執(zhí)

行“RET指令后,(SP):?,(PC);?

答:(SP)=23H,(PC)=3412H

執(zhí)行RET時,PCH-(SP),SP-SP-l,PCL-(SP),SP-SPT

3-16假設(shè)(sp)=25H,(PC)=2345H,標(biāo)號LABEL所在的地址為3456H,問執(zhí)

行調(diào)用指令"LCALLLABEL"后,堆棧指針和堆棧內(nèi)容發(fā)生什么變化(PC)的值

等于什么

答:最后堆棧指針SP=27Ho堆棧指針SP=26H處SP內(nèi)容為45H,指針SP=27H

處內(nèi)容為23H。最后程序計數(shù)器指針PO3456H。

執(zhí)行LCALL后,PC-PC+3,SP-SP+1,(SP)-PCL,SP-SP+L(SP)-PCH,PC

-addrl6。

3-17試編寫程序,查找在內(nèi)部RAM的20H~50H單元中是否有0AAH這一數(shù)

據(jù)。假設(shè)有,則將51H單元置01H,假設(shè)未找到,則將51H單元置00H。

MOV51H,#00H;先設(shè)沒找到

MOVR0,#20H;起始地址

LOOP:MOVA,@RO;取出數(shù)字

CJNEA,#OAAH,NEXT;不相等就跳轉(zhuǎn)

INC51H;相等將51單元置1

S.TMPEEE;找到轉(zhuǎn)去完畢

NEXT:INCR0;下一個地址

CJNERO,#51H,LOOP;地址沒找完就繼續(xù)

EEE:SJMP$;暫停

3-18試編寫程序,統(tǒng)計在外部RAM2000H~205FH單元中出現(xiàn)00H的次數(shù),

并將統(tǒng)計結(jié)果豐收入內(nèi)部RAM50H單元。

MOVRO,#00H;R0設(shè)為計數(shù)器,初始為0

MOVDPTR,#2000H;置片外RAM起始地址

MOVRI,#60H;置傳送數(shù)據(jù)個數(shù)

LOOP:MOVXA,@DPTR;外部RAM單元內(nèi)容送A

JNZNEXT;傳送數(shù)據(jù)不為0跳轉(zhuǎn)

INCRO:傳送數(shù)據(jù)為0,計數(shù)器加1

NEXT:INCDPTR;下一個地址

DJNZRI,LOOP;地址沒找完就繼續(xù)

MOV50H,RO;統(tǒng)計結(jié)果存入5011單元

SJMP$;暫停

3-19R3和R4中存有一個16位的二進(jìn)制數(shù),高位在R3中代位在R4中。請

編程將其求補(bǔ),并存回原處。

答:首先假設(shè)R3、R4中是原碼,根據(jù)原碼求補(bǔ)的方法當(dāng)最高位(R3的D7

位)為0時表示為正數(shù),那么補(bǔ)碼與原碼一樣,當(dāng)最高位為1時,說明是負(fù)數(shù),

負(fù)數(shù)的補(bǔ)碼是最高位不變,其余位取反加1.

MOVA,R3JBACC.7,NEG

SJMP$MOVA,R3

NEG:MOVA,R4CPLA

CPLAADDCA,#OOH

CLRCSETBACC.7

ADDA,#O1HMOVR3,A

MOVR4,ASJMP$

3-20編寫一個程序,把片外RAM從2000H開場存放的10個數(shù)傳送到片內(nèi)

RAM30H開場單元。

START:MOVRO,#30HINCRd

MOVR1,#1OHINCDPTR

MOVDPTR,#2000HDJNZRI,LOOP

LOOP:MOVXA,@DPTRSJMPi

MOV@R0,A

3-21試編程將內(nèi)部RAM的30H至4FH單元的內(nèi)容分別傳送到外部RAM的

2040H~205FH單元。

START:MOVR0,#30HTNCDPTR

MOVRl,#20HINCRO

MOVDPTR,#2040HDJNZRI,LOOP

LOOP:MOVA,@R0SJMP$

MOVX@DPTR,A

3-22假設(shè)外部RAM的(2000H)=X,(2001H)=Y,編程實(shí)現(xiàn)Z=3X+2Y,結(jié)果存

入內(nèi)部RAM的20H單元,設(shè)ZC255。

START:MOVDPTR,#2000HINCDPTR

MOVXA,@DPTRMOVXA,@DPTR

MOVB,#03HADDA,A

MULABADDA,R0

MOVR0,AMOV2011,A

3-23試對內(nèi)部RAM20H單元的內(nèi)容進(jìn)展判斷,假設(shè)為正數(shù),轉(zhuǎn)向2100H假

設(shè)為負(fù)數(shù),轉(zhuǎn)向2200H;假設(shè)為0,轉(zhuǎn)向2300H。

START:MOVA,20H

JBACC.7,NEG;為負(fù)數(shù)

JNBACC.7,POSI;為0

LJMP#21OOH

SJMPEEE

NEG:LJMP#2200H

SJMPEEE

POSI:LJMP#2300H

SJMPEEE

EEE:SJMP$

3-2430H、31H中存有一個16位二進(jìn)制數(shù),高位在前低位在后。試編程將

它們乘2,再存回原單位中。

START:MOVA,31HADDCA,30H

ADDA,31HMOV30H,A

MOV31H,ASJMP$

MOVA,30H

3-25從外部RAM2000H開場的單元中有20個帶符號的補(bǔ)碼數(shù),試編程把

正數(shù)和0取出來存放到內(nèi)部RAM20H開場的存儲單元中(負(fù)數(shù)為作處理)。

START:MOVR0,#2011;需處理的數(shù)的個數(shù)

MOVDPTR,#2000H;需處理數(shù)的起始地址

MOVRl,#20H;用于存儲的目標(biāo)地址

LOOP:MOVXA,?DPTR

JBACC.7,NEG;負(fù)數(shù)不需處理

MOV@R1,A

INCRI

NEG:INCDPTR

DJNZRO,LOOP

SJMP$

第四章匯編語言程序設(shè)計

4-1什么叫偽指令偽指令與指令有什么區(qū)別

答:偽指令不屬于單片機(jī)指令集中的指令,在匯編時不產(chǎn)生目標(biāo)代碼,不影

響程序的執(zhí)行,僅指明在匯編時執(zhí)行一些特定的操作。如為程序指定一個存儲區(qū)、

將一些數(shù)據(jù)、表格常數(shù)存放在指定的存儲單元、對地址賦用戶名等。

指令是計算機(jī)所能執(zhí)行的一種基本操作的描述,是計算機(jī)軟件的基本單

元。51單片機(jī)單片機(jī)的指令有二種表達(dá)方式:機(jī)器碼指令和匯編語言指令。

4-2循環(huán)程序由哪幾局部組成

答:由初始化局部、循環(huán)處理局部、循環(huán)控制局部、循環(huán)完畢局部這四局部

組成。

4-3什么是子程序?qū)τ谧映绦蛟O(shè)計有什么要求

答:一段具有某一特定功能,能被其它程序所調(diào)用,調(diào)用完畢后能自動返回

到調(diào)用處的程序塊就稱為子程序。

對子程序設(shè)計的要求:

4-4試對以下程序進(jìn)展人工匯編,并說明此程序的功能

地址指令碼

ORG1000H;

ACDL:MOVRO,#25H;1000H7825

MOVRl,#2BH;1002H792b

MOVR2,#06H;1004H7A06

CLRC;1006HC3

CLRA;1007HE4

LOOP:MOVA,@R0;1008HE6

ADDCA,@Rl;1009H37

DECRO;1OOAH18

DECR1J00BH19

DJNZR2,LOOP;1OOCHDAFA

SJMP$;1OOEH80FE

END;

1008H-100EH=-06H,其補(bǔ)碼為(11111010)2-OFAH

功能:將25H單及前5個數(shù)與2BH單元及前5個數(shù)分6組相加,結(jié)果丟棄。

4-5從內(nèi)部RAM的20H單元開場,有15個數(shù)據(jù)。試編一程序,把其中的正

數(shù)、負(fù)數(shù)分別送到41H和61H開場的存儲單元,并分別將正數(shù)、負(fù)數(shù)的個數(shù)送

40H單元和60H單元。

MOVRO,#41H;存放正數(shù)的起始地址

MOVR1,#61H;存放負(fù)數(shù)的起始地址

MOVSP,#2EH;指明棧頂?shù)刂?/p>

MOVR3,#00H;正數(shù)個數(shù)

MOVR4,#00H;負(fù)數(shù)個數(shù)

MOVR7,#15;需判斷數(shù)的個數(shù)

LOOP:POPACC;出棧放入A

JBACC.7,NEG;負(fù)數(shù)跳轉(zhuǎn)

CJNEA,#OOH,L00P1;非負(fù)非零轉(zhuǎn)正數(shù)處理

SJMPLOOP;零不處理,取下一個數(shù)

L00P1:MOV@RO,A;正數(shù)保存

INCRO;正數(shù)存放地址加1

INCR3;正數(shù)個數(shù)加1

SJMPLOOP2;未完畢就繼續(xù)

NEG:MOV@R1,A;將負(fù)數(shù)送負(fù)數(shù)保存地址

INCRI;負(fù)數(shù)地址加1

INCR4;負(fù)數(shù)個數(shù)加1

L00P2:DJNZR7,LOOP;未完畢就繼續(xù)

MOV40H,R3;正數(shù)個數(shù)送40H單元

MOV60H,R4;負(fù)數(shù)個數(shù)送60H單元

SJMP$

END

4-6設(shè)內(nèi)部RAM的30H和31H單元中有二個帶符號數(shù)求出其中的大數(shù)存放在

32H單元中。

MOVA,30HSJMP$

XRLA,31HL00P1:MOV32H,31H

JBACC.7,LOOPSJMP$

MOVA,30HLOOP:MOVA,3DH

SUBBA,31HJBACC.7,L00P1

JCL00P1MOV32H,A

MOV32H,30HSJMP$

4-7試編制實(shí)現(xiàn)ASCII碼轉(zhuǎn)十進(jìn)制數(shù)的程序。在8032單片機(jī)內(nèi)RAM的40H

單元中存放一個代碼。假設(shè)此代碼為十進(jìn)制數(shù)的ASCII碼,則將其相應(yīng)的十進(jìn)

制數(shù)送片內(nèi)RAM的50H單元,否則將此單元置成0FFH。

MOVA,40H

CLRC

SUBBA,#30H;數(shù)字比其ASCII碼值小30H

JCLOOP;存的ASCII值小于0的ASCII碼值跳轉(zhuǎn)

MOVRO,A

MOVA,#09H;減30H后差大于0,是否不

SUBBA,R0;大于9

JCLOOP;差大于9,跳轉(zhuǎn)

MOV50H,R0;將數(shù)字存入50H單元

SJMP$

LOOP:MOV50H,#0FFH;不是數(shù)字,存入OFFH

SJMP$

END

4-8試編程將存放在8032單片機(jī)內(nèi)部RAM中首址為20H、長度為50H的數(shù)

據(jù)快傳送到片外RAM以20H為首址的連續(xù)單元中。

MOVRO,#20HINCR0

MOVRI,#20HINCRI

MOVR7,#50HDJNZR7,LOOP

LOOP:MOVA,@R0SJMP$

MOVX@R1,A

4-9設(shè)一個字符串存放在8032單片機(jī)內(nèi)部RAM以20H為首址的連續(xù)單元中,

字符串以回車完畢。要求統(tǒng)計該字符串中字符c「C=43H)的個數(shù),并將其存入

外部RAM的40H單元。試編寫實(shí)現(xiàn)上述要求的程序。

MOVR0,#20HINCR2

MOVR2,#00HL00P2:INCRO

LOOP:MOVA,@R0SJMPLOOP

XRLA,4ODHEXIT:MOVDPTR,#0040H

;判斷是否是回車符MOVA,R2

JZEXITMOVX@DPTR,A

MOVA,@R0SJMP$

XRLA,#43HEND

JNZL00P2

4-10設(shè)有一長度為20H的字符串,它存放在片外RAM1000H為首地址的連

續(xù)單元中。試編制將其中數(shù)字與字母分開并將它們送到片內(nèi)RAM以30H和50H

為首地址的連續(xù)單元中的程序。

MOVDPTR,#1000HL00P2:CJNEA,#3AH,L00P3

MOVR7,#2011L00P3:JCISNUM

MOVR0,#30HSJMPISCHAR

MOVRI,#50HISCHAR:MOV@^1,A

LOOP:MOVXA,@DPTRINCRI

CJNEA,#30H,L00P1SJMPNEXT

SJMPISNUMISNUM:CLRC

L00P1:JNCL00P2SUBBA,#30H

SJMPISCHARMOV@R0,A

INCRODJNZR7,LOOP

SJMPNEXTSJMPi

NEXT:INCDPTREND

4-11試編程將片內(nèi)RAM區(qū)DATA1單元開場的20H個單字節(jié)依次與DATA2單

元為起始地址的20H個單字節(jié)進(jìn)展交換。

MAIN:MOVR7,#20HMOV@R0,A

DATA1EQU20HINCRO

DATA2EQU40HINCRI

MOVRO,#DATA1DJNZR7,LOOP

MOVR1,#DATA2SJMP$

LOOP:MOVA,@R0END

XCHA,@R1

4-13設(shè)片內(nèi)RAM的20T4FH單元中有假設(shè)個無符號數(shù),試編程求出其中的

最大值及所在單元地址,將最大值存入片內(nèi)RAM的50H單元,最大值所在單元

地址存入片內(nèi)RAM的51H單元。

MOVRO,#20HMOVA,RO

MOVR7,#20HMOVR2,A

MOVA,ROMOVA,@R0

MOVR2,AMOVRI,A

MOVA,@R0LOOP1:MOVA,RI

MOVRI,ADJNZF.7,LOOP

LOOP:INCROMOV5CHI,RI

CLRCMOV51H,R2

SUBBA,@R0SJMP$

JNCL00P1END

4-14設(shè)片外RAM從1000H單元開場存放100個無符號8位二進(jìn)制數(shù)。試編

程將它們從大到小依次入片內(nèi)RAM從10H開場的單元中。

MOVR7,#100DJNZR7,LOOP

MOVDPTR,#1000HMOVR7,#99

MOVR0,#10HMOVR6,#99

LOOP:MOVXA,@DPTRNEXT:MOVR0,力OH

MOV@R0,AMOVA,@R0

INCDPTRMOVRI,A

INCR0L00P2:INCRO

MOVA,@R0MOV@R0,A

CLRCL00P4:MOVA,@R0

SUBBA,RIMOVRI,A

JNZL00P3DJNZR7,L00P2

SJMPL00P4DECR6

L00P3:JCL00P4MOVA,R6

MOVA,@ROMOVR7,A

DECR0INCR6

MOV@R0,ADJNZR6,NEXT

MOVA,RISJMPi

INCR0END

4-15設(shè)有2個4B的BCD數(shù):X=24350809,Y=12450379oX從片內(nèi)RAM的

25H單元開場存放,Y從片內(nèi)RAM的35H單元開場存放,求兩數(shù)的和。設(shè)數(shù)據(jù)在

內(nèi)存中按照低字節(jié)在前,高字節(jié)在后的順序存放。

MOV25H,#24HCLRC

MOV26H,#35HLOOP:MOVA,@R0

MOV27H,#08HADDCA,@R1

MOV28H,#09HDAA

MOV35H,#12HMOV@R0,A

MOV36H,#45HINCRO

MOV37H,#03HINCRI

MOV3811,#7911DJNZR7,LOOP

MOVR7,#04HSJMP$

MOVR0,#25HEND

MOVRI,#35H

4-16設(shè)晶振頻率為6MHz,試編一能延時20ms的子程序

答:一個機(jī)器周期1=12/6*1()6=2.,延時201ns需要20000/2=10000個機(jī)器

周期。

擬用以下程序:工作需要機(jī)器周期數(shù)

START:MOVR6,ftdatal;1

L00P1:MOVR7,#data2;1

NOP;1

NOP;1

LOOP:NOP;1

NOP;1

NOP;1

DJNZR7,LOOP;2

DJNZR6,LOOP;2

RET;2

延時周期數(shù)為1+(5*data2+5)*datal+2,選擇最適宜的datal和data2

Datal=200,data2=99,延時機(jī)器周期數(shù)為10003個,延時20.006ms

4-17利用查表技術(shù)將累加器A中的一位BCD碼轉(zhuǎn)換成相應(yīng)的十進(jìn)制數(shù)的七

段碼,結(jié)果仍放在A中(設(shè)顯示管0~9的七段碼分別是40H,79H,24H,30H,

19H,12H,02H,78H,00H,1BH)。

SUB1:INCA

MOVCA,@A+PC

RET

DB40H,79H,24H,30H,19H,12H,02H,78H,OOH,1BH

4-18試編一采用查表法求廣20的二次方數(shù)的子程序。要求:X在累加器A

中,1WXW20,二次方高位存放在R6中,低位存放在R7中。

SUB:MOVDPTR,#0100H

MOVR0,A

ADDA,R0

MOVR0,A

MOVCA,@A+DPTR

MOVR7,A

INCDPTR

MOVA,R0

MOVCA,?A+DPTR

MOVR6,A

RET

ORG102H

DB01H,OOH,04H,OOH,09H,OOH,10H,OOH,19H,OOH

DB24H,OOH,31H,OOH,40H,OOH,51H,OOH,64H,OOH

DB79H,OOH,90H,OOH,0A9H,OOH,0C4H,OOH,0E1H,OOH

DBOOH,01H,21H,01H,44H,01H,6911,0111,90H,01H

第五章MCS-51單片機(jī)中斷系統(tǒng)

5-1MCS-51單片機(jī)的中斷系統(tǒng)由哪些功能部件組成分別有什么作用

答:51單片機(jī)的中斷系統(tǒng)由與中斷有關(guān)的特殊功能存放器(中斷允許控制存

放器IE、中斷優(yōu)先等控制存放器IP、定時器/計數(shù)器控制存放器TCON、T2C0N、

串行口控制存放器SCON)和6個中斷源(2個外部中斷源WT01P3.2]、

加門[P3.3],3個定時器/計數(shù)器中斷源TO[P3.4]、T1[P3.5]、T2[PL0]),1個

串行接口中斷源(RXD[p3.0]接收數(shù)據(jù)中斷、TXDp接3.1]發(fā)送數(shù)據(jù)中斷)組成。

中斷允許控制存放器IE由七個控制位構(gòu)成,其中D7位EA是所有中斷的總

開關(guān),假設(shè)EA=1,CPU中斷允許,EAR時,CPU屏蔽一切中斷請求。其余6位

D5~D0分別控制6個中斷源,置1為允許申請中斷,清0為制止申請中斷。其字

節(jié)地址是A8H,位地址是A8H“ADH和AFH,每位都可由軟件來置1或清0。

中斷優(yōu)先等控制存放器1P用于設(shè)置每個中斷的優(yōu)先級,該存放器由6個控

制位構(gòu)成(D5~D1)分別控制每個中斷源的優(yōu)先級,置1為高優(yōu)先級,置。為低

優(yōu)先級。其位地址為B8H“BDH,每位都可由軟件來置1或清0。

定時器/計數(shù)器控制存放器TCON字節(jié)地址88H,其位地址88H~8FH,除D6

和D4位用于控制定時器/計數(shù)器0、1啟停外,其余6位分二組分別控制定時器/

計數(shù)器0、1的中斷信號方式(IT0/IT1),外部中斷請求標(biāo)志位(IE0/IE1).溢

出標(biāo)志位(TF0/TF1)、T2C0N字節(jié)地址為C8H,可按位尋址,但只有2位(D7和

D6位)用作中斷控制,當(dāng)T2EX1P1.1腳)的負(fù)跳變有效時T2的硬件置D6位EXF2

(T2C0N.6)=l,tmCPU申請中斷。當(dāng)T2計數(shù)溢出時由硬件置D7(TF2,T2C0N.7)

:1,向CPU申請中斷。

串行口控制存放器SCON字節(jié)地址為98H,其位地址98H~9FH。與中斷有關(guān)

的只有D0位和D1位。串行口發(fā)送了一幀信息,便由硬件置TI=L向CPU申請

中斷。串行口接收一鄧一幀信息,便由硬件置R「l,向CPU申請中斷。

5-2MCS-51系列單片機(jī)能提供幾個中斷源

答:MCS-51系列單片機(jī)能提供6個中斷源,。

5-3MCS-51單片機(jī)的中斷系統(tǒng)中有幾個優(yōu)先級如何設(shè)定

MCS-51單片機(jī)有2個中斷優(yōu)先級。各個中斷源的優(yōu)先級是由特殊功能存放

器TP來確定,IP中和各個中斷源對應(yīng)位為1時,此中斷源為高優(yōu)先級,否則為

低優(yōu)先級。在同一優(yōu)先級中,各個中斷源的優(yōu)先順序是由自然優(yōu)先級來確定的。

5-4CPU響應(yīng)中斷有哪條件在什么情況下中斷響應(yīng)會受阻

答:CPU響應(yīng)中斷的基本條件有以下三個:①有中斷源提出中斷請求。②

中斷總允許位EA=1,即CPU開放中斷。③申請中斷的中斷源的中斷允許位(ET2、

ES、ET1、EXI、ETO、EXO)為1,即沒有被屏蔽。

在中斷源提出中斷申請后,有二種情況可以使中斷受阻:①中斷允許存放器

IE中對應(yīng)于有中斷請求的控制位為0,屏蔽了中斷請求,即CPU沒無法收到中斷

請求。②中斷允許存放器IE的D7位(EA位)為0,即CPU沒有開放中斷響應(yīng)。

CPU正在處理同等級或高等級中斷時,CPU將在處理完該中斷并返回執(zhí)行一

條指令后才響應(yīng)新中斷請求。

現(xiàn)行的機(jī)器周期不是所執(zhí)行指令的最后一個機(jī)器周期。

正在執(zhí)行的指令是RETI或訪問IE、IP指令。

5-5簡述MCS-51系列單片機(jī)的中斷響應(yīng)過程。

答:MCS-51系列單片機(jī)的中斷響應(yīng)過程是按照以下順序執(zhí)行的:開中斷一

中斷請求f中斷判斷一中斷響應(yīng)f中斷返回。

5-6MCS-51單片機(jī)中斷響應(yīng)時間是否固定為什么

答:MCS-51單片機(jī)中斷響應(yīng)時間不固定,囚為當(dāng)中斷源向CPU提出中斷請

求時,CPU正在執(zhí)行的指令的指令周期是不一樣的,一般情況下中斷響應(yīng)時間在

3、8個機(jī)器周期之間。當(dāng)然如果中斷到來時是在處理同級或高級中斷服務(wù)程序

中,則響應(yīng)時間就無法估計了。

5-7MCS-51中假設(shè)要擴(kuò)大8個中斷源,可采用哪些方法如何確定優(yōu)先級

答:一般可采取中斷加查詢方式,軟件先查詢到的為高優(yōu)先級,最后查詢到

的為低優(yōu)先級。

5-88031芯片的INTO、INT1引腳分別輸入壓力超限、溫度超限中斷請求信

號,定時器/計數(shù)器0作定時檢測的實(shí)時時鐘,用戶規(guī)定的中斷優(yōu)先權(quán)排隊次序

為:壓力超限一溫度超限一定時檢測。要求確定IE、IP的內(nèi)容,以實(shí)現(xiàn)上述要

求。

答:IE設(shè)87H,IP設(shè)05Ho

第六章MCS-51單片機(jī)定時器/計數(shù)器

6-1MCS-51單片機(jī)內(nèi)部設(shè)有幾個定時器/計數(shù)器它們是由哪些專用存放器組

成的

設(shè)有3個定時器/計數(shù)器TO、Tl、T20

它們由特殊功能存放器工作方式存放器TMOD(字節(jié)地址89H,不能按位尋址,

用來控制TO和T1的工作方式),TCON控制存放器(字節(jié)地址88H,位地址88H~8FH,

用高4位控制定時器/計數(shù)器0、1

溫馨提示

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

評論

0/150

提交評論