單片機(jī)課后習(xí)題解答_第1頁(yè)
單片機(jī)課后習(xí)題解答_第2頁(yè)
單片機(jī)課后習(xí)題解答_第3頁(yè)
單片機(jī)課后習(xí)題解答_第4頁(yè)
單片機(jī)課后習(xí)題解答_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、練習(xí)練習(xí)練習(xí)第二章單片機(jī)結(jié)構(gòu)及原理1、MCS-51單片機(jī)內(nèi)部包含哪些主要功能部件?它們的作用是什么?答:(1)一個(gè)8bitCPU是微處理器的核心,是運(yùn)算和邏輯計(jì)算的中心。(2)片內(nèi)震蕩器及時(shí)鐘電路:提供標(biāo)準(zhǔn)時(shí)鐘信號(hào),所有動(dòng)作都依據(jù)此進(jìn)行。(3) 4KROM程序存貯器:存貯程序及常用表格。(4) 128BRAM數(shù)據(jù)存貯器:存貯一些中間變量和常數(shù)等。(5)兩個(gè)16bit定時(shí)器/計(jì)數(shù)器:完全硬件定時(shí)器(6) 32根可編程I/O口線(xiàn):標(biāo)準(zhǔn)8位雙向(4個(gè))I/O接口,每一條I/O線(xiàn)都能獨(dú)立地作輸入或輸出。(7) 一個(gè)可編程全雙工串行口。(8)五個(gè)中斷源。2、什么是指令?什么是程序?答:指令是規(guī)定計(jì)算機(jī)執(zhí)

2、行某種操作的命令。程序是根據(jù)任務(wù)要求有序編排指令的集合。3、如何認(rèn)識(shí)89S51/52存儲(chǔ)器空間在物理結(jié)構(gòu)上可以劃分為4個(gè)空間,而在邏輯上又可以劃分為3個(gè)空間?答:89S51/52存儲(chǔ)器空間在物理結(jié)構(gòu)上設(shè)有4個(gè)存儲(chǔ)器空間:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器、片外數(shù)據(jù)存儲(chǔ)器。在邏輯上有3個(gè)存儲(chǔ)器地址空間:片內(nèi)、片外統(tǒng)一的64KB程序存儲(chǔ)器地址空間,片內(nèi)256B數(shù)據(jù)存儲(chǔ)器地址空間,片外64KB的數(shù)據(jù)存儲(chǔ)器地址空間。4、開(kāi)機(jī)復(fù)位后,CPU使用的是哪組工作寄存器?他們的地址是多少?CP狽口何確定和改變當(dāng)前工作寄存器組?答:開(kāi)機(jī)復(fù)位后,CPU1用的是第0組工作寄存器,地址為00H07H,CPU

3、!過(guò)改變狀態(tài)字寄存器PSW/HRS0和RS1來(lái)確定工作寄存器組。5、什么是堆棧?堆棧有何作用?在程序設(shè)計(jì)時(shí),有時(shí)為什么要對(duì)堆棧指針SP重新賦值?如果CPU在操作中要使用兩組工作寄存器,SP應(yīng)該多大?答:堆棧是一個(gè)特殊的存儲(chǔ)區(qū),主要功能是暫時(shí)存放數(shù)據(jù)和地址,通常用來(lái)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。堆棧指針SP復(fù)位后指向07H單元,00H-1FH為工作寄存器區(qū),20H2FH為位尋址區(qū),這些單元有其他功能,因此在程序設(shè)計(jì)時(shí),需要對(duì)SP重新賦值。如果CPU在操作中要使用兩組工作寄存器,SP應(yīng)該至少設(shè)置為0FH。6、89S51/52的時(shí)鐘周期、機(jī)器周期、指令周期是如何分配的?當(dāng)振蕩頻率為8MHz時(shí),一個(gè)單片機(jī)周期為多少

4、微秒?答:時(shí)鐘周期為時(shí)鐘脈沖頻率的倒數(shù),他是單片機(jī)中最基本的、最小的時(shí)間單位。機(jī)器周期是指完成一個(gè)基本操作所需要的時(shí)間,一個(gè)機(jī)器周期由12個(gè)時(shí)鐘周期組成。指令周期是執(zhí)行一條指令所需要的時(shí)間,由若干個(gè)機(jī)器周期組成。若fosc=8MHz,則一個(gè)機(jī)器周期=1/8X12s=1.5s7、89S51/52擴(kuò)展系統(tǒng)中,片外程序存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器共處同一地址空間為什么不會(huì)發(fā)生總線(xiàn)沖突?答:訪(fǎng)問(wèn)片外程序存儲(chǔ)器和訪(fǎng)問(wèn)數(shù)據(jù)存儲(chǔ)器使用不同的指令用來(lái)區(qū)分同一地址空間。8、程序狀態(tài)字寄存器PSW勺作用是什么?常用狀態(tài)標(biāo)志有哪些位?作用是什么?答:程序太態(tài)字PSW8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息,PSW各位狀態(tài)通

5、常是在指令執(zhí)行的過(guò)程中自動(dòng)形成的,但也可以由用戶(hù)根據(jù)需要采用傳送指令加以改變。各個(gè)標(biāo)志位的意義如下:PSW.7(G):進(jìn)位標(biāo)志位。PSW.6(AQ:輔助進(jìn)位標(biāo)志位,又稱(chēng)為半進(jìn)位標(biāo)志位。PSW.5(F0):用戶(hù)標(biāo)志位。PSW.4PSW.3(RS1和RS0):寄存器組選擇位。PSW.2(O切:溢出標(biāo)志位。PSW.1(空缺位):此位未定義。PSW.0(P):奇偶校驗(yàn)位。9、位地址7CH和字節(jié)地址7CH有何區(qū)別?位地址7CH具體在內(nèi)存中什么位置?答:字節(jié)地址7CH是片內(nèi)數(shù)據(jù)存儲(chǔ)器中的一個(gè)地址單元,該地址單元中可以存放8位二進(jìn)制數(shù),位地址7CH是內(nèi)部數(shù)據(jù)存儲(chǔ)器中位尋址區(qū)中的一位,該地址單元中可以存放1位

6、二進(jìn)制數(shù)。位地址7CH具體在片內(nèi)數(shù)據(jù)存儲(chǔ)器字節(jié)地址為2FH中的第4位(2FH.4)。10、89S51/52中4個(gè)I/O端口的作用是什么?89S51/52的片外三總線(xiàn)是如何分配的?答:I/O端口是單片機(jī)與外界聯(lián)系的重要通道,實(shí)現(xiàn)與外部設(shè)備的信息的傳輸??偩€(xiàn)分配:片外數(shù)據(jù)總線(xiàn)(8根)通過(guò)P0口輸出,片外地址總線(xiàn)(16根)通過(guò)P0口(低8位)和P2口(高8位)輸出,片外控制總線(xiàn)(PSEN,ALE,RD,WR,EA)主要通過(guò)P3口。11、89S51/52中4個(gè)I/O端口在結(jié)構(gòu)上有何異同?89S51/52單片機(jī)的4個(gè)I/O口在結(jié)構(gòu)上是基本相同的,但又各具特點(diǎn)。這四個(gè)端口都是8位雙向口,每個(gè)端口都包括一個(gè)

7、鎖存器、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。在無(wú)片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這四個(gè)端口的每一位都可以作為雙向通用I/O端口使用。在作為一般的通用I/O輸入時(shí),都必須先向鎖存器寫(xiě)入“1”,使輸出驅(qū)動(dòng)場(chǎng)效應(yīng)管FET截止,以免誤讀數(shù)據(jù)。各自特點(diǎn)如下:(1) P0口為雙向8位三態(tài)I/O口,它既可作為通用I/O口,又可作為外部擴(kuò)展時(shí)的數(shù)據(jù)總線(xiàn)及低8位地址總線(xiàn)的分時(shí)復(fù)用口。作為通用I/O口時(shí),輸出數(shù)據(jù)可以得到鎖存,不需外接專(zhuān)用鎖存器;輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性。每個(gè)引腳可驅(qū)動(dòng)8個(gè)TTL負(fù)載。(數(shù)字電路按工藝有肖特基雙極晶體管和CMOS藝兩種,使用雙極晶體管的數(shù)字電路稱(chēng)TTL數(shù)字電路,單片機(jī)輸出端帶負(fù)

8、載能力,意思就是單片機(jī)的P3端口只能并聯(lián)4個(gè)TTL型集成電路輸入端。)(2) P1口為8位準(zhǔn)雙向I/O口,內(nèi)部具有上拉電阻,一般作通用I/O口使用,它的每一位都可以分別定義為輸入線(xiàn)或輸出線(xiàn),作為輸入時(shí),鎖存器必須置1。每個(gè)引腳可驅(qū)動(dòng)4個(gè)TTL負(fù)載。(3) P2口為8位準(zhǔn)雙向I/O口,內(nèi)部具有上拉電阻,可直接連接外部I/O設(shè)備。它與地址總線(xiàn)高8位復(fù)用,可驅(qū)動(dòng)4個(gè)TTL負(fù)載。一般作為外部擴(kuò)展時(shí)的高8位地址總線(xiàn)使用。(4)P3口為8位準(zhǔn)雙向I/O口,內(nèi)部具有上拉電阻,它是雙功能復(fù)用口,每個(gè)引腳可驅(qū)動(dòng)4個(gè)TTL負(fù)載。作為通用I/O口時(shí),功能與P1口相同,常用第二功能。12、復(fù)位的作用是什么?有幾種復(fù)位

9、方法?復(fù)位后單片機(jī)的狀態(tài)如何?答:復(fù)位是單片機(jī)的初始化操作。單片機(jī)在RST引腳產(chǎn)生兩個(gè)機(jī)器周期(即24個(gè)時(shí)鐘周期)以上的高電平即可實(shí)現(xiàn)復(fù)位。主要的復(fù)位方法有上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種。按鍵手動(dòng)復(fù)位又分:按鍵電平復(fù)位和按鍵脈沖復(fù)位。第三章指令系統(tǒng)1、簡(jiǎn)述下列名詞術(shù)語(yǔ)的基本概念:指令、指令系統(tǒng)、程序、匯編語(yǔ)言指令答:指令:規(guī)定單片機(jī)進(jìn)行某種操作的命令稱(chēng)為指令。指令系統(tǒng):?jiǎn)纹瑱C(jī)能夠執(zhí)行的各種指令的集合。程序:一系列指令的有序集合稱(chēng)為程序。匯編語(yǔ)言指令:用助記符形式來(lái)表示機(jī)器指令。2、80C51單片機(jī)有哪幾種尋址方式?這幾種尋址方式是如何尋址的?答:共7種尋址方式,分別為:寄存器尋址,直接尋址,寄

10、存器間接尋址,立即尋址,變址尋址,位尋址和相對(duì)尋址。寄存器尋址方式:由指令指出某一寄存器的內(nèi)容做為操作數(shù)。直接尋址方式:指令中操作數(shù)直接以單元地址的形式給出。寄存器間接尋址方式:寄存器間接尋址方式,寄存器中存放的則是操作數(shù)的地址,即操作數(shù)是通過(guò)寄存器間接得到的。立即尋址方式:操作數(shù)在指令中直接給出。變址尋址方式:變址尋址是為了訪(fǎng)問(wèn)程序存儲(chǔ)器中的數(shù)據(jù)和表格。MC極51的變址尋址是以DPTRPC作基址寄存器,以累加器A作變址寄存器,并以?xún)烧邇?nèi)容相加形成的16?位地址做為操作數(shù)地址,以達(dá)到訪(fǎng)問(wèn)數(shù)據(jù)和表格的目的。位尋址方式:指對(duì)片內(nèi)RAM勺位尋址區(qū)和某些可尋址的特殊功能寄存器進(jìn)行位操作的尋址方相對(duì)尋址

11、方式:相對(duì)尋址方式是為解決程序轉(zhuǎn)移而專(zhuān)門(mén)設(shè)置的,為轉(zhuǎn)移指令所采用。3、要訪(fǎng)問(wèn)特殊功能寄存器和片外數(shù)據(jù)寄存器,應(yīng)采用哪些尋址方式?答:訪(fǎng)問(wèn)特殊功能寄存器可以采用直接尋址、寄存器尋址和位尋址(針對(duì)可以進(jìn)行位尋址的特殊功能寄存器)方式。訪(fǎng)問(wèn)片外數(shù)據(jù)存儲(chǔ)器可采用寄存器間接尋址方式。4、80C51單片機(jī)的指令系統(tǒng)可以分為哪幾類(lèi)?說(shuō)明各指令的功能。答:51單片機(jī)指令系統(tǒng)按功能可分為5類(lèi):(1)數(shù)據(jù)傳送指令(2)算術(shù)運(yùn)算指令(3)邏輯運(yùn)算指令(4)控制轉(zhuǎn)移指令(5)位操作指令主要進(jìn)行數(shù)據(jù)的傳送、交換等;主要進(jìn)行基本的加減乘除運(yùn)算;主要實(shí)現(xiàn)邏輯運(yùn)算與移位運(yùn)算;主要是實(shí)現(xiàn)對(duì)程序流程的控制;5、外部數(shù)據(jù)傳送指令有

12、哪幾條?有和區(qū)別?答:外部數(shù)據(jù)傳送指令有讀指令和寫(xiě)指令兩類(lèi),每類(lèi)指令的尋址范圍不同,分別為:讀外部存儲(chǔ)器指令:寫(xiě)外部存儲(chǔ)器指令:MOVXA,RiMOVXA,DPTRMOVXRiAMOVXDPTRA;尋址范圍為256字節(jié);尋址范圍為64K字節(jié);尋址范圍為256字節(jié);尋址范圍為64K字節(jié)6、在89S51片內(nèi)RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,請(qǐng)分別分析下段程序按序執(zhí)行后的結(jié)果。MOVA,40H;A=48HMOVR0,A;R0=48HMOVP1,#0FFH;P1=FFHMOVR030H;(48H)=38HMOVDPTR#1246H;DPTR=

13、1246HMOV40H38H;(40H)=40HMOVR030H;R0=38HMOV90HR0;(90H)=38HMOV48H#30H;(48H)=30HMOVA,R0;A=40HMOVP2P1;P2=38H7、略8、DAA指令的作用是什么?怎樣使用?答:對(duì)十進(jìn)制BCD作加法時(shí)進(jìn)行調(diào)整,當(dāng)結(jié)果的低4位A0A39,或半進(jìn)位AC=1,則A0A3+6,否則不加;當(dāng)結(jié)果的高4位A4A79,或進(jìn)位CY=1,則A4A7+6,否則不加;這條指令是在進(jìn)彳TBC加加法運(yùn)算時(shí),跟在“ADD和ADDC指令之后,用來(lái)對(duì)BC加的加法運(yùn)算結(jié)果自動(dòng)進(jìn)行修正,使其仍為BC加表示形式。9、試編程將片外數(shù)據(jù)存儲(chǔ)器60H中的內(nèi)容傳

14、送到片內(nèi)RAM54Hl元中。答:MOVR0,#60HMOVXA,R0MOV54H,A10、試編程將寄存器R7的內(nèi)容傳送到R1中去。答:MOVA,R7MOVR1,A11、已知當(dāng)前PC值為210H,請(qǐng)用兩種方法將程序存儲(chǔ)器2F0H中的常數(shù)送入累加器A中。答:(1)以程序計(jì)數(shù)器PC作為基址寄存器MOVA,#0E0HMOVCA,A+PC(2)以數(shù)據(jù)指針DPTR作為基址寄存器MOVDPTR#02F0HMOVA,#00HMOVCA,A+DPTRMOVR0,#0A7H;R0=A7H立即數(shù)送寄存器R0XCHA,R0;A=A7H累加器A中的數(shù)據(jù)與R0中的數(shù)據(jù)進(jìn)行交換SWAPA;A=7AH累加器A中的高低四位進(jìn)行

15、交換XCHA,R0;R0=7AH數(shù)據(jù)交換回R012、試說(shuō)明下段程序中每條指令的作用,并分析當(dāng)指令執(zhí)行完后,R0中的內(nèi)容是什么?13、請(qǐng)用兩種方法實(shí)現(xiàn)累加器A與寄存器B的內(nèi)容交換。答:(1)MOVR0,AMOVA,BMOVB,R0(2) MOVR0,BXCHA,R014、試編程將片外RAM4340H單元的內(nèi)容與R1的內(nèi)容交換。答:MOVR0,#40HMOVXA,R0XCHA,R1MOVXR0A15、已知:A=0C9HB=8DHCY=1。執(zhí)行指令A(yù)DDCA,B結(jié)果如何?執(zhí)行指令SUBBA,B結(jié)果如何?A=57H,CY=1,OV=1,AC=1,P=1A=3BH,CY=0AC=1OV=116、試編程將

16、片外RAM4330H和31H單元中的內(nèi)容相乘,結(jié)果存放在32H(低位)和33H(高位)單元中。答:MOVR0,#30HMOVXA,R0MOVB,AINCR0MOVXA,R0MULABINCR0MOVXR0AMOVA,BINCR0MOVXR0A17、試用3種方法將累加器A中的無(wú)符號(hào)數(shù)乘2.答:(1)MOVR0,AADDA,R0(3) MOVB,#2MULAB(4) RLA18、分析依次執(zhí)行下列指令的結(jié)果:19、MOV30H,#0A4HMOVA,#0D6HMOVR0,#30HMOVR2,#47HANLA,R2ORLA,R0SWAPACPLAXRLA,#0FFHORL30H,A求卜列指令執(zhí)行后,累加

17、器;(30H尸A4H;A=D6H;R0=30H;R2=47H;A=46H;A=E6H;A=6EH;A=91H;A=6EH;(30H)=EEHA及PSW中進(jìn)位CY奇偶位P和溢出位OV的值。(1)當(dāng)A=5BH時(shí);ADDA,#8CH(2)當(dāng)A=5BH時(shí);ANLA,#7AH(3)當(dāng)A=5BH時(shí);XRLA,#7FH(4)當(dāng)A=5BHCY=1時(shí);SUBBA,#0E8H答:(1)A=E7HCY=1,P=0,OV=020、(2) A=5AH,P=0(3) A=24H,P=0(4) A=72H,CY=1,P=0,OV=0把累加器A中的低4位數(shù)據(jù)送到外部數(shù)據(jù)存儲(chǔ)器的2000H單元。答:ANLA,#OFHMOVDP

18、TR#2000HMOVXDPTRA21、試說(shuō)明指令CJNER1#7AH,10H的作用,若本指令地址為250H,其轉(zhuǎn)移地址是多少?答:指令作用:如果以R1內(nèi)容為地址的單元中的數(shù)據(jù)等于7AH,則程序順序執(zhí)行,否則轉(zhuǎn)移后繼續(xù)執(zhí)行。若本指令地址為250H,則轉(zhuǎn)移地址為250H+03H+10H=263H。22、將累加器A中的數(shù)據(jù)由0遞增,加到50,結(jié)果在累加器A中。答:CLRAMOVR0,#50L1:INCADJNZR0,L123、試說(shuō)明壓棧指令和彈棧指令的作用及執(zhí)行過(guò)程。答:25、下述程序執(zhí)行后,SP=?,A=?,B=?。ORG2000HMOVSP,#40HMOVA,#30HLCALL250H;下條指

19、令地址2008H送ADDA,#10HMOVB,A;地址為200AHSJMPL1ORG250HMOVDPTR#200AHPUSHDPL;SP+1=43H,DPg(43H)PUSHDPH;SP+1=44H,DP+(44H)RET;200AHRPC上述程序執(zhí)行后,SP=42HA=30H,B=30HSP的內(nèi)容減1,此時(shí)SP指向新的棧頂。L1:41T42H,SP=42H是第3和第6個(gè)亮,延時(shí)后,最后是第4和第5個(gè)點(diǎn)亮,延時(shí)后循環(huán)。發(fā)光二極管點(diǎn)亮規(guī)律:先是第1和第8個(gè)亮,延時(shí)一段時(shí)間后,第2和第7個(gè)亮,延時(shí)后,再答:壓棧(入?;蜻M(jìn)棧)指令的作用是將數(shù)據(jù)存入堆棧中,其執(zhí)行過(guò)程是先將堆棧指針加1,然后將直接地

20、址單元中的數(shù)據(jù)壓入SP指向的單元中。若數(shù)據(jù)已推入堆棧,則入數(shù)據(jù)所在的存儲(chǔ)單元(即指向棧頂)。彈棧(出棧)指令的作用是將數(shù)據(jù)從堆棧中取出,其執(zhí)行過(guò)程為先將堆棧指針的內(nèi)容送入直接尋址單元中,然后將24、SP的內(nèi)容SP指向最后推SP所指出單元26、若系統(tǒng)晶振頻率為6MHz求子程序DELAY勺延時(shí)時(shí)間,若想加長(zhǎng)或縮短時(shí)間,應(yīng)該怎樣修改?答:DELAY:MOVR2,#0FAHL1:MOVR3,#0FAHL2:DJNZR3,L2DJNZR2,L1RET總時(shí)間計(jì)算:T=4as+(250X4科s+4ss)X250+4s=251.008ms估算:T=250X4科sX250=250ms若想加長(zhǎng)延時(shí)時(shí)間,可以增加循

21、環(huán)次數(shù)或再加一重循環(huán);若想減小延時(shí)時(shí)間,可以減少循環(huán)次數(shù)或較少一重循環(huán)。27、P1口連接8個(gè)共陽(yáng)極連接的發(fā)光二極管,是編制燈亮移位程序。答:MOVA,#0FEHL1:MOVP1,ARLALCALLDELAYSJMPL128、試編一程序,將外部數(shù)據(jù)存儲(chǔ)器答:MOVDPTR#2100HMOVXADPTRORLA#0F0HANLA#0F0HMOVXDPTRA;DELAYF程序同上題2100H單元中的高4位置“1”,其余位清“0”。29、試編程將片內(nèi)數(shù)據(jù)存儲(chǔ)器40H單元的第0為和第7位置1,其余取反。答:MOVA,40HCPLASETBACC.0SETBACC.7MOV40H,A30、將A.5與80H

22、位相與的結(jié)果,通過(guò)P1.4輸出。MOVC,80HANLC,ACC.5MOVP1.4,C31、請(qǐng)用位操作指令,求下列邏輯方程。(1) P1.7=ACC.0m(B.0+P2.1)+P32MOVC,B.0ORLC,P2.1ANLC,ACC.0ORLC,/P3.2MOVP1.7,C(2) PSW.5=P1.3ACC.2B.5P1.1MOVC,P1.3ANLC,ACC.2MOV20H,CMOVc,B.5ANLC,/P1.1ORLC,20HMOVPSW.5,C(3) P2.3=P1.5B.4ACC.7P1.0MOVC,B.4ANLC,/P1.5MOV20H,CMOVC,P1.0ANLC,/ACC.7ORL

23、C,20H(下一行)MOVP2.3,C第四章匯編語(yǔ)言程序設(shè)計(jì)1、編程將片內(nèi)40H60H單元中的內(nèi)容送到以3000H為首的存儲(chǔ)區(qū)內(nèi)。答:MOVR1,#40HMOVR2,#21HMOVDPTR#3000HL1:MOVA,R1MOVXDPTRAINCR1INCDPTRDJNZR2,L12、編程計(jì)算下列算式的程序(1)23H+45H+ABH+03H=MOVA,#23HADDA,#45HADDA,#0ABHXCHA,BADDCA,#00HXCHA,BADDA,#03H(2) CDH+15H-38H-46H=MOVA,#0CDHADDA,#15HSUBBA,#38HSUBBA,#46H(3) 1234H+

24、8347H=MOVA,#34HADDA,#47HMOV30H,AMOVA,#12HADDCA,#83HMOV31,A(4) AB123H-43ADCH=CLRCMOVA,#23HSUBBA,DCHMOV30H,AMOVA,#0B1HSUBBA,#3AHMOV31H,AMOVA,#0AHSUBBA,#04HMOV32H,A;溢出處理;A中為結(jié)果低位,B中為高位;30H存結(jié)果低位,31H存結(jié)果高位;30H為低位,32H為高位3、設(shè)有兩個(gè)4位BC加,分別存放在23H、22H單元和33H、32H單元中,求他們的和,并送入43H、42H單元中(低位在低字節(jié),高位在高字節(jié))答:MOVA,22HADDA,3

25、2HMOV42H,AMOVA,23HADDCA,33HMOV43H,A4、略5、編程計(jì)算片內(nèi)RAMK50H-59H單元中數(shù)的平均值,結(jié)果存放在5AH中。答:MOVR0,#8MOVR1,#50HMOVA#00HL1:ADDA,R1INCR1DJNZR0,L1MOVB,#8DIVABMOV5AH,A6、編寫(xiě)計(jì)算下式的程序。設(shè)乘積和平方結(jié)果均小于255。a、b值分別存在片外3001H和3002H單元中,結(jié)果存于片外3000H單元中。25,a=b(1)Y=Taxb,abMOVDPTR#3001HMOVXA,DPTRMOV30H,A;a暫存30H單元INCDPLMOVXA,DPTRCJNEA,30H,L

26、1;是否a=bMOVA,#25SJMPSAVEL1:JNCL2MOVB,30HMULABSJMPSAVEL2:MOVB,AMOVA,30HDIVABSAVE:MOVDPTR#3000HMOVXDPRTA(a+2b)2+10,(a2_+b)10MOVDPTR#3001HMOVXA,DPTRMOV30H,AINCDPTRMOVXA,DPTRADDA,30HMOVB,AMULAB(a+b)2MOV31H,ACJNEA,#10,L1SJMPSAVEL1:JCL2CLRCSUBBA,#10SJMPSAVEL2:ADDA,#10SAVE:MOVDPTR#3000HMOVCDPTRA7、設(shè)有兩個(gè)長(zhǎng)度均為15

27、的數(shù)組,分別存放在以200H和210H為首地址的存儲(chǔ)區(qū)中,試編程求其對(duì)應(yīng)項(xiàng)之和,結(jié)果存放到以220H為首地址的存儲(chǔ)區(qū)中。答:MOVDPH#02HMOVR1,#15MOVR2,#00H;數(shù)組1首地址低位MOVR3,#10H;數(shù)組2首地址低位MOVR4,#20H;和首地址低位L1:MOVDPL,R2MOVXA,DPTRMOVR1,AMOVDPLR3MOVXADPTRADDAR1MOVDPLR4MOVXDTPRAINCR2INCR3INCR4DJNZR1,L1SJMP$8、設(shè)有100個(gè)無(wú)符號(hào)數(shù),連續(xù)存放在以2000H為首地址的存儲(chǔ)區(qū)中,試編程統(tǒng)計(jì)正數(shù)、負(fù)數(shù)和零的個(gè)數(shù)。答:MOV30H,#00H;正數(shù)

28、計(jì)數(shù)器MOV31H,#00H;負(fù)數(shù)計(jì)數(shù)器MOV32H,#00H;零計(jì)數(shù)器MOVDPTR#2000HMOVR1,#100L4:MOVXADPTRINCDPTRCJNEA#0,L1INC32HSJMPL2L1:JCL3INC30HSJMPL2L3:INC31HL2:DJNZR1,L4SJMP$9、將片外數(shù)據(jù)存儲(chǔ)器地址為1000H1030H的數(shù)據(jù)塊,全部搬遷到片內(nèi)RAM30+60H中,并將原數(shù)據(jù)塊區(qū)域全部清零。答:MOVR0,#30H址的存儲(chǔ)區(qū)中。答:MOVR2,#50MOVR3#20HMOVR4#40H;源地址MOVR5#30HMOVR6,#00H;目的地址SEND:MOVDPHR3;SEND各2

29、040H數(shù)據(jù)塊移入3000H存儲(chǔ)區(qū)MOVDPLR4MOVXADPTRINCDPTRMOVR3DPHMOVR4DPLMOVDPHR5MOVDPLR6MOVXDPTRAINCDPTRMOVR5DPHMOVR6DPLDJNZR2SENDMOVR2,#49;重復(fù)次數(shù)CMP1:MOVDPTR#3000HMOVR3#49;比較次數(shù)CMP2:MOVXADPTRMOVMOVLP:MOVXMOVANDMOVXINCINCDJNZSJMPR2,#31HDPTR,#1000HA,DPTRR0AA#00HDPTRAR0DPTRR2,LP$4位二進(jìn)制數(shù),合并成一個(gè)答:MOVXA,R1ANLA,#0F0HSWAPAMOV

30、R2,AMOVXAR0ANLA#0F0HORLAR211、試編程把以2040H為首地址的連續(xù)50個(gè)單兀的無(wú)符號(hào)數(shù)按降序排列,存放到以10、試編寫(xiě)一子程序,是R1、R0指向的兩個(gè)片外RAM1續(xù)單元中的高字節(jié),裝入累加器A中。已知R0指向低地址,并要求該單元高四位放在A中高四位。3000H為首地MOVB,AINCDPTRMOVXA,DPTRCJNEA,B,L1L1:JCNOMOVEMOV30H,ACLRCMOVA,DPLSUBBA,#01HMOVDPL,AMOVA30HMOVXDPTRAINCDPTR;50個(gè)數(shù)重復(fù)一遍?;排序結(jié)束?MOVABMOVXDPTRANOMOVE:DJNZR3,CMP2D

31、JNZR2,CMP1LJMP$12、試編一查表程序,從首地址為2000H,長(zhǎng)度為100的數(shù)據(jù)塊中找出ASCII碼為A,將其地址送至U20A0H和20A1H單元中。答:MOVDPTR#2000HMOVR2,#100GO_ON:MOVXADPTRCJNEA#41H,IFENDMOVADPHMOVBDPLMOVDPTR#20A0HMOVXDPTRAINCDPTRXCHABMOVXDPTRASJMPOVERIFEND:INCDPTRDJNZR2GO_ONOVER:SJMPOVER13、設(shè)在200H204H單兀中,存放5個(gè)壓縮BC加,編程將他們轉(zhuǎn)換成ASCII碼,存放至U以205H單元為首地址的存儲(chǔ)區(qū)。

32、答:MOVR2,#05HMOVR3#02HMOVR4#00HMOVR5#02HMOVR6,#05HCHLP:MOVDPHR3MOVDPLR4MOVXADPTRINCDPTRMOVR3,DPHMOVR4,DPLMOVB,ASWAPAANLA,#0FHORLA,#30HMOVDPHR5MOVDPL,R6MOVXDPTRAINCDPTRMOVABANLA#0FHORLA#30HMOVXDPTRAMOVR5DPHMOVR6DPLDJNZR2,CHLP14、有一無(wú)符號(hào)數(shù)據(jù)塊長(zhǎng)度在30H單元中,其首地址為31H單元,求出數(shù)據(jù)塊中最大值,并存入40H中。答:MOVR0,#31HMOVR1,30HMOV40H

33、#00HLOOP:MOVAR0CJNEA40HL1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40HAAGAIN:INCR0DJNZR1,LOOPSJMP$15、略16、在以2000H為首地址的存儲(chǔ)區(qū)內(nèi),存放20個(gè)用ASCII碼表示的09之間的數(shù),試編程,將它們轉(zhuǎn)換成BC加,并以壓縮BC加的形式存在3000H-3009H單元中。R2#10R3#20HR4#00HR5#30HR6#00HDPHR3DPLR4ADPTRA#0FHA答:MOVMOVMOVMOVMOVLP:MOVMOVMOVXANLSWAPXCHA,BINCDPTRMOVXA,DPTRANLA,#0FHORLA,B

34、INCDPTRMOVR3,DPHMOVR4,DPLMOVDPHR5MOVDPL,R6MOVXDPTRAINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,LPSJMP$17、試編程實(shí)現(xiàn)下列邏輯表達(dá)式功能。設(shè)P1.7P1.0為8個(gè)變量的輸入端,而其中P1.7又作為變量的輸出端。;輸入端定義X0EQUP1.0X1EQUP1.1X2EQUP1.2X3EQUP1.3X4EQUP1.4X5EQUP1.5X6EQUP1.6X7EQUP1.7(1)Y=X0X1X7+X3+X4X5X6十元MOVC,X0ANLC,X1ANLC,/X2ORLC,X3MOV00H,CMOVC,X4ANLC,X5ANLC

35、,X6ORLC,/X7ORLC,00HMOVP1.7,C(2)Y=X0X1X2X3X4X5X6X7MOVC,X0ANLC,X1CPLCMOV00H,CMOVC,X2ANLC,X3ANLC,X4CPLCMOV01H,CMOVC,X5ANLC,X6ANLC,X7CPLCORLC,O1HCPLCORLC,00HMOVP1.7,C18、略19、略20、試編寫(xiě)延時(shí)1s、1min、1h子程序。DLY_1S:MOVR0,#10R1,#200L3:MOVL2:MOVR2#250L1:DJNZR2L1DJNZR1,L2DJNZRETR0L3;延時(shí)1minDLY_1M:MOVR3#60L4:LCALLDLY_1S

36、DJNZRETR3L4;延時(shí)1hDLY_1H:MOVR4#60L5:LCALLDLY_1MDJNZRETR4L521、用程序?qū)崿F(xiàn)元。c=a2+b2。設(shè)a、b均小于10,a存在31H單兀中,b存在32H單兀中,答:ORG1000HSRMOVA,31HACALLSQRMOVR1,AMOVA32H;單片機(jī)時(shí)鐘fosc=12MHz,計(jì)算為近似值;1s延時(shí)子程序c存33H單ACALLSQRADDA,R1MOV33H,ASJMP$;求平方子程序如下(采用查平方表的方法)SQR:INCAMOVCAA+PCRETTABLE:DB0,1,4,9,16DB25,36,49,64,81END22、如何實(shí)現(xiàn)將內(nèi)存單元

37、40H60H的數(shù)逐個(gè)對(duì)應(yīng)傳到片外2540H2560H單元中?答:MOVMOVMOVR0,#40HDPTR#2540HR2,#21HL1:MOVMOVXINCINCDJNZSJMPAR0DPTRAR0DPTRR2L1$23、分什經(jīng)有21題24、分什經(jīng)有21題25、參考實(shí)驗(yàn)程序26、參考實(shí)驗(yàn)程序第五章定時(shí)/計(jì)數(shù)器1、89S51單片機(jī)內(nèi)部有幾個(gè)定時(shí)/計(jì)數(shù)器,他們有哪些專(zhuān)用寄存器組成?答:89S51單片機(jī)內(nèi)部有兩個(gè)16位定時(shí)/計(jì)數(shù)器,為定時(shí)器0(T0)和定時(shí)器1(T1)。在定時(shí)器/計(jì)數(shù)器的16位的計(jì)數(shù)器是由兩個(gè)8位的專(zhuān)用寄存器THOTL0,TH1、TL1組成。2、89S51單片機(jī)的定時(shí)/計(jì)數(shù)器有哪幾種

38、工作方式,各有什么特點(diǎn)?答:定時(shí)器/計(jì)數(shù)器有四種工作方式:方式0,方式1,方式2,方式3。其中,方式3只適用于T0o以T0為例:方式0,16位寄存器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位組成一個(gè)13位計(jì)數(shù)器;方式1,和方式0的工作相同,唯一的差別是TH0和TL0組成一個(gè)16位計(jì)數(shù)器;方式2,把TL0配置成一個(gè)可以自動(dòng)恢復(fù)初值的8位計(jì)數(shù)器,TH0作為常數(shù)緩沖器。TH0由軟件預(yù)置值。當(dāng)TL0產(chǎn)生溢出時(shí),一方面使溢出標(biāo)志TF0置1,同時(shí)把TH0中的8位數(shù)據(jù)重新裝入TL0中;方式3,將使TL0和TH0成為兩個(gè)相互獨(dú)立的8位計(jì)數(shù)器,TL0利用T0本身的一些控制,它的操作與方式0

39、和方式1類(lèi)似。而TH0被規(guī)定為只用作定時(shí)器功能,對(duì)機(jī)器周期計(jì)數(shù),并借用了T1的控制位TR1和TF1。在這種情況下TH0控制了T1的中斷。這時(shí)T1還可以設(shè)置為方式02,用于任何不需要中斷控制的場(chǎng)合,或者用作串行口的波特率發(fā)生器。3、定時(shí)/計(jì)數(shù)器用作定時(shí)方式時(shí),其定時(shí)時(shí)間與哪些因素有關(guān)?作為計(jì)數(shù)時(shí),限制?答:定時(shí)/計(jì)數(shù)器作定時(shí)時(shí),其計(jì)數(shù)脈沖由系統(tǒng)振蕩器產(chǎn)生的內(nèi)部時(shí)鐘信號(hào)12分頻后提供。定時(shí)時(shí)間與時(shí)鐘頻率和定時(shí)初值有關(guān)。定時(shí)/計(jì)數(shù)器作計(jì)數(shù)時(shí),由于確認(rèn)1次負(fù)跳變要花2個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。對(duì)外界計(jì)數(shù)頻率有何4、當(dāng)定時(shí)器T0用作方式3時(shí)

40、,由于TR1位已被T0占用,如何控制定時(shí)器T1的開(kāi)啟和關(guān)閉?答:定時(shí)器T0用作方式3時(shí),由于TR1位已被T0占用,此時(shí)通過(guò)控制位C/T切換其定時(shí)或計(jì)數(shù)器工作方式。當(dāng)設(shè)置好工作方式時(shí),定時(shí)器為方式3的方式字。T1自動(dòng)開(kāi)始運(yùn)行,若要停止,只需送入一個(gè)置定時(shí)器T15、已知89S51單片機(jī)系統(tǒng)時(shí)鐘頻率為24MHz請(qǐng)利用定時(shí)器電平寬度50因,低電平寬度350pso答:ORG1000HMOVTMOD#02H;設(shè)置工作方式MOVTH0,#09CH;設(shè)置定時(shí)器初值MOVTL0,009CHSETBTR0;啟動(dòng)定時(shí)器LOOPSETBP1.2;P1.0輸出高電平MOVR0#07HDEL:JBCTF0,REP;定時(shí)是

41、否到?AJMPDELREPSETBP1.2;P1.0輸出低電平DJNZR0,DELAJMPLOOPENDT0和P1.2輸出矩形脈沖。矩形波高12MHz請(qǐng)編程使P1.0和P1.1分別輸出周期為2ms和500科s的方波。答:選?方式2,T1MOVTMOD#20HMOVTH1,#06HMOVTL1,#06HSETBTR1L1:MOVR2#04HL2:JNBTF1,$CLRTF1,CPLP1.1DJNZR2L2CPLP1.0LJMPL17、設(shè)系統(tǒng)時(shí)鐘為24MHz試用定時(shí)器T0做外部計(jì)數(shù)器,編程實(shí)現(xiàn)每計(jì)到6、在89S51單片機(jī)中,已知時(shí)鐘頻率為T(mén)0又開(kāi)始計(jì)數(shù),循環(huán)往復(fù)。1000個(gè)脈沖,是T1開(kāi)始答:MO

42、VTMOD#15H;T1定時(shí)萬(wàn)式1,T0計(jì)數(shù)方式1L1:MOVTH0,#0FCHMOVTL0,#18HSETBTR02ms定時(shí),定時(shí)時(shí)間到后,JNBTF0,$CLRTR0CLRTF0MOVTH1,#HMOVTL1,#HSETBTR1JNBTF1$CLRTR1CLRTF1LJMPL18、略9、略第六章80C51的串行接口1、什么是串行異步通信?他有哪些特點(diǎn)?有哪幾種幀格式?答:串行通信即所傳輸數(shù)據(jù)的各位按順序一位一位的發(fā)送或接收。串行通信分為同步和異步兩種方式。在異步通信中數(shù)據(jù)或字符是一幀一幀地傳送的。幀定義為一個(gè)字符的完整的通信格式,通常也稱(chēng)為幀格式。它的主要特點(diǎn):由于異步通信每傳送一幀有固定

43、的格式,通信雙方只需按約定的幀格式來(lái)發(fā)送和接收數(shù)據(jù),所以硬件結(jié)構(gòu)比同步通信方式簡(jiǎn)單;此外它還能利用校驗(yàn)位檢測(cè)錯(cuò)誤。幀格式的一般形式是先用一個(gè)起始位“0”表示字符的開(kāi)始,然后是數(shù)據(jù)位,其后是奇偶校驗(yàn)位,最后是停止位,用以表示字符結(jié)束。2、某異步通信接口按方式3傳送,已知其每分鐘傳送3600個(gè)字符,計(jì)算其傳送波特率。答:設(shè)每個(gè)字符由1個(gè)起始位、8個(gè)數(shù)據(jù)位、1個(gè)可編程位和1個(gè)結(jié)束位組成,其傳送波特率為:11bx3600/60s=660bps3、80C51單片機(jī)的串行口由哪些基本功能部件組成?答:80C51單片機(jī)的串行口基本功能部件主要有:兩個(gè)數(shù)據(jù)緩沖寄存器SBUF一個(gè)串行口控制寄存器SCON一個(gè)輸入

44、移位寄存器。4、80C51單片機(jī)的串行口有幾種工作方式?幾種幀格式?如何設(shè)置不同方式的波特率?答:80C51單片機(jī)的串行口有四種工作方式,由串行口控制寄存器中的SM0SM1控制。80C51單片機(jī)的串行通信有8位、10位、11位三種幀格式。波特率設(shè)置:4種工作方式波特率的計(jì)算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可變的,均由定時(shí)器T1的溢出率控制。具體計(jì)算如下:方式0:波特率固定為時(shí)鐘頻率的1/12,不受SMOD勺影響。(SMO為波特率倍增位)方式1的波特率=2SMOD32X定時(shí)器T1的溢出率方式2的波特率=2SMO/64Xfosc方式3的波特率=2SMO/32X

45、定時(shí)器T1的溢出率5、為什么定時(shí)器T1用作串行口波特率發(fā)生器時(shí),常采用工作方式2?答:在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收的數(shù)據(jù)速率(即波特率)要有一定的約定。串口有四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,有定時(shí)器T1的溢出率控制。定時(shí)器T1用作串行口波特率發(fā)生器時(shí),因?yàn)楣ぷ鞣绞?是自動(dòng)重裝載方式,因而定時(shí)器T1作波特率發(fā)生器常采用工作方式2.6、已知定時(shí)器T1設(shè)置成方式2,用作波特率發(fā)生器,系統(tǒng)時(shí)鐘頻率為24MHz求可能產(chǎn)生的最高和最低的波特率是多少?答:最高波特率:TH1=0FFHTL1=0FFH波特率最高=2/32X24M/(12X(256255

46、)bps=0.125Mbps最低波特率:TH1=00HTL1=00H波特率最低=1/32X24M/(12X(2560)bps=244bps9、串行口異步通信時(shí),ASCII碼“3”的字符格式(10位)如何?答:串行口異步通信時(shí),10位的數(shù)據(jù)幀結(jié)構(gòu)為:一個(gè)起始位(0),8個(gè)數(shù)據(jù)位(先低位后高位),一個(gè)停止位(1)。故ASCII碼“3”的字符格式為:0110011001B。10、若選用定時(shí)器T1作波特率發(fā)生器,設(shè)fosc=6MHz,計(jì)數(shù)初值為0FDH,SMOD=,1求波特率是多少?答:若選用定時(shí)器T1作波特率發(fā)生器,波特率由下式確定:波特率=(定時(shí)器T1溢出率)/n公式中:n為32或16,取決于特殊

47、功能寄存器PCO仲的SMOD&的狀態(tài)。若SMOD=0則n=32。若SMOD=1則n=16o定時(shí)器T1溢出率=定時(shí)器T1的溢出次數(shù)/秒。由題可知:fosc=6MHz計(jì)數(shù)初值為0FDH,SMOD=1故6MHz1612256-0FDH=10.42kHz第七章中斷系統(tǒng)1、什么是中斷?在單片機(jī)中中斷能實(shí)現(xiàn)哪些功能?答:中斷是通過(guò)硬件來(lái)改變CPU序運(yùn)行方向。計(jì)算機(jī)在執(zhí)行程序過(guò)程中,由于CPU以外的原因,有必要盡快終止當(dāng)前程序的執(zhí)行,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,在回來(lái)繼續(xù)執(zhí)行被終止的原程序。這種程序在執(zhí)行過(guò)程中由于外界的原因而被中間打斷的情況成為“中斷”。中斷能實(shí)現(xiàn)的功能:(1)能實(shí)現(xiàn)中斷及返回。(2)能實(shí)現(xiàn)優(yōu)先權(quán)的排隊(duì)。(3)能實(shí)現(xiàn)中斷的嵌套。2、什么是中斷優(yōu)先級(jí)?中斷優(yōu)先級(jí)處理的原則是什么?答:通常,在系統(tǒng)中會(huì)有多個(gè)中斷源,有時(shí)會(huì)出現(xiàn)兩個(gè)或更多個(gè)中斷源同時(shí)提出中斷請(qǐng)求的情況,這就要求計(jì)算機(jī)能區(qū)分各個(gè)中斷源的請(qǐng)求,有能確定首先為哪一個(gè)中斷源服務(wù)。為了解決這一問(wèn)題,通常給各中斷源規(guī)定了優(yōu)先級(jí)別,稱(chēng)為優(yōu)先權(quán)或中斷優(yōu)先級(jí)。中斷優(yōu)先級(jí)處理原則:兩個(gè)或兩個(gè)以上的中斷源同時(shí)提出中斷申請(qǐng)時(shí),計(jì)算機(jī)首先為中斷優(yōu)先權(quán)最高的中斷服務(wù),服務(wù)結(jié)束以

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論