




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵路設(shè)施拆除安全技術(shù)措施
- 老年人照護(hù)技能培訓(xùn)實(shí)習(xí)報告范文
- 醫(yī)療行業(yè)費(fèi)用報銷及審批流程解析
- 超聲科消毒流程的評估與改進(jìn)
- 三年級體育課程改革與計劃
- 五年級下冊語文學(xué)習(xí)資源整合計劃
- 八年級上冊數(shù)學(xué)小組合作學(xué)習(xí)計劃
- 家長參與的八年級英語教學(xué)計劃
- 九年級語文下冊教學(xué)計劃與家校合作
- 機(jī)場消防安全管理職責(zé)
- 校園春季傳染病預(yù)防
- 《小學(xué)數(shù)學(xué)“對分課堂”教學(xué)模式的實(shí)踐探索》3900字(論文)
- 初中數(shù)學(xué)幾何《旋轉(zhuǎn)模型費(fèi)馬點(diǎn)》壓軸題含答案解析
- 2025年中國中信集團(tuán)招聘筆試參考題庫含答案解析
- 江西省宜春市豐城市第九中學(xué)2024-2025學(xué)年九年級上學(xué)期第二次段考化學(xué)試卷(日新班)(無答案)
- 燃?xì)夤景踩a(chǎn)實(shí)施方案
- 【MOOC】涂附磨具-河南工業(yè)大學(xué) 中國大學(xué)慕課MOOC答案
- 2024解析:第十四章內(nèi)能的利用-基礎(chǔ)練(解析版)
- 2024年湖南省初中學(xué)業(yè)水平考試·數(shù)學(xué)
- 北師大版(2024新版)七年級上冊數(shù)學(xué)全冊教案
- 食品安全、消防安全、交通安全
評論
0/150
提交評論