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

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

3、變狀態(tài)字寄存器psw中的rs0和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單元,00h1fh為工作寄存器區(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/8×12s=1.5s7、89s51/52擴(kuò)展系統(tǒng)中,片外程序存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器共處同一地址空間為什么不會(huì)發(fā)生總線沖突?答:訪問(wèn)片外程序存儲(chǔ)器和訪問(wèn)數(shù)據(jù)存儲(chǔ)器使用不同的指令用來(lái)區(qū)分同一地址空間。8、程序狀態(tài)字寄存器psw的作用是什么?常用狀態(tài)標(biāo)志有哪些位?作用是什么?答:程序狀態(tài)字psw是8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息,psw中各

5、位狀態(tài)通常是在指令執(zhí)行的過(guò)程中自動(dòng)形成的,但也可以由用戶根據(jù)需要采用傳送指令加以改變。各個(gè)標(biāo)志位的意義如下:psw.7(cy):進(jìn)位標(biāo)志位。psw.6(ac):輔助進(jìn)位標(biāo)志位,又稱為半進(jìn)位標(biāo)志位。psw.5(f0):用戶標(biāo)志位。psw.4、psw.3(rs1和 rs0):寄存器組選擇位。psw.2(ov):溢出標(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ū)中的一位,該地址

6、單元中可以存放1位二進(jìn)制數(shù)。位地址7ch具體在片內(nèi)數(shù)據(jù)存儲(chǔ)器字節(jié)地址為2fh中的第4位(2fh.4)。10、89s51/52中4個(gè)i/o端口的作用是什么?89s51/52的片外三總線是如何分配的?答:i/o端口是單片機(jī)與外界聯(lián)系的重要通道,實(shí)現(xiàn)與外部設(shè)備的信息的傳輸。總線分配:片外數(shù)據(jù)總線(8根)通過(guò)p0口輸出,片外地址總線(16根)通過(guò)p0口(低8位)和p2口(高8位)輸出,片外控制總線(psen ,ale , rd ,wr ,ea)主要通過(guò)p3口。11、89s51/52中4個(gè)i/o端口在結(jié)構(gòu)上有何異同?89s51/52單片機(jī)的個(gè)i/o口在結(jié)構(gòu)上是基本相同的,但又各具特點(diǎn)。這四個(gè)端口都是位雙

7、向口,每個(gè)端口都包括一個(gè)鎖存器、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。在無(wú)片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這四個(gè)端口的每一位都可以作為雙向通用i/o端口使用。在作為一般的通用i/o輸入時(shí),都必須先向鎖存器寫(xiě)入“”,使輸出驅(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ù)總線及低8位地址總線的分時(shí)復(fù)用口。作為通用i/o口時(shí),輸出數(shù)據(jù)可以得到鎖存,不需外接專用鎖存器;輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性。每個(gè)引腳可驅(qū)動(dòng)8個(gè)ttl負(fù)載。(數(shù)字電路按工藝有肖特基雙極晶體管和cmos工藝兩種,使用雙極晶體管的數(shù)字電路稱ttl數(shù)字

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

9、是什么?有幾種復(fù)位方法?復(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)行某種操作的命令稱為指令。指令系統(tǒng):?jiǎn)纹瑱C(jī)能夠執(zhí)行的各種指令的集合。程序:一系列指令的有序集合稱為程序。匯編語(yǔ)言指令:用助記符形式來(lái)表示機(jī)器指令。2、80c51單片機(jī)有哪幾種尋址方式?這幾種尋址方式是如何尋址的?答:共7種尋址方式,分別為:寄存

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

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

12、5)位操作指令 5、外部數(shù)據(jù)傳送指令有哪幾條?有和區(qū)別?答:外部數(shù)據(jù)傳送指令有讀指令和寫(xiě)指令兩類,每類指令的尋址范圍不同,分別為:讀外部存儲(chǔ)器指令:movxa,ri;尋址范圍為256字節(jié)movxa,dptr;尋址范圍為64k字節(jié)寫(xiě)外部存儲(chǔ)器指令:movxri,a;尋址范圍為256字節(jié)movxdptr,a;尋址范圍為64k字節(jié)6、在89s51片內(nèi)ram中,已知(30h)=38h,(38h)=40h,(40h)=48h,(48h)=90h,請(qǐng)分別分析下段程序按序執(zhí)行后的結(jié)果。mova,40h;a=48hmov r0,a;r0=48hmovp1,#0ffh;p1=ffhmovr0,30h;(48h)

13、=38hmovdptr,#1246h;dptr=1246hmov40h,38h;(40h)=40hmovr0,30h;r0=38hmov90h,r0;(90h)=38hmov 48h,#30h;(48h)=30hmova,r0;a=40hmovp2,p1;p2=38h7、略8、daa 指令的作用是什么?怎樣使用?答:對(duì)十進(jìn)制bcd數(shù)作加法時(shí)進(jìn)行調(diào)整,當(dāng)結(jié)果的低4位a0a3>9,或半進(jìn)位ac=1,則a0a36,否則不加;當(dāng)結(jié)果的高4位a4a7>9,或進(jìn)位cy=1,則a4a76,否則不加;這條指令是在進(jìn)行bcd碼加法運(yùn)算時(shí),跟在“add”和“addc”指令之后,用來(lái)對(duì)bcd碼的加法運(yùn)算

14、結(jié)果自動(dòng)進(jìn)行修正,使其仍為bcd碼表示形式。9、試編程將片外數(shù)據(jù)存儲(chǔ)器60h中的內(nèi)容傳送到片內(nèi)ram54h單元中。答: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+dptr12、試說(shuō)明下段程序中每條指令的作用,并分析當(dāng)指令執(zhí)行完后,r0中的內(nèi)容是什

15、么?movr0,#0a7h;r0=a7h,立即數(shù)送寄存器r0xcha,r0;a=a7h,累加器a中的數(shù)據(jù)與r0中的數(shù)據(jù)進(jìn)行交換swapa;a=7ah,累加器a中的高低四位進(jìn)行交換xcha,r0;r0=7ah,數(shù)據(jù)交換回r013、請(qǐng)用兩種方法實(shí)現(xiàn)累加器a與寄存器b的內(nèi)容交換。答:(1)movr0,a mova,b movb,r0(2)movr0,b xcha,r014、試編程將片外ram中40h單元的內(nèi)容與r1的內(nèi)容交換。答:movr0,#40hmovxa,r0xcha,r1movxr0,a15、已知:a=0c9h,b=8dh,cy=1。執(zhí)行指令 addca,b結(jié)果如何? a=57h,cy=1,

16、ov=1,ac=1,p=1執(zhí)行指令 subba,b結(jié)果如何? a=3bh,cy=0,ac=1,ov=116、試編程將片外ram中30h和31h單元中的內(nèi)容相乘,結(jié)果存放在32h(低位)和33h(高位)單元中。答:movr0,#30hmovxa,r0movb,aincr0movxa,r0mulabincr0movxr0,amova,bincr0movxr0,a17、試用3種方法將累加器a中的無(wú)符號(hào)數(shù)乘2.答:(1)movr0,a add a,r0(2)movb,#2 mulab(3)rla18、分析依次執(zhí)行下列指令的結(jié)果:mov30h,#0a4h;(30h)=a4hmova,#0d6h;a=d6

17、hmovr0,#30h;r0=30hmovr2,#47h;r2=47hanla,r2;a=46horla,r0 ;a=e6hswapa;a=6ehcpla;a=91hxrla,#0ffh;a=6ehorl30h,a;(30h)=eeh19、求下列指令執(zhí)行后,累加器a及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=5bh,cy=1時(shí);subba,#0e8h答:(1)a=e7h,cy=1,p=0,ov=0 (2)a=5ah ,p=0 (3)a=24h ,p=0(4)a=

18、72h,cy=1,p=0,ov=020、把累加器a中的低4位數(shù)據(jù)送到外部數(shù)據(jù)存儲(chǔ)器的2000h單元。答:anla,#ofhmovdptr,#2000hmovxdptr,a21、試說(shuō)明指令cjne r1,#7ah,10h的作用,若本指令地址為250h,其轉(zhuǎn)移地址是多少?答:指令作用:如果以r1內(nèi)容為地址的單元中的數(shù)據(jù)等于7ah,則程序順序執(zhí)行,否則轉(zhuǎn)移后繼續(xù)執(zhí)行。若本指令地址為250h,則轉(zhuǎn)移地址為250h03h10h= 263h。22、將累加器a中的數(shù)據(jù)由0遞增,加到50,結(jié)果在累加器a中。答:clramov r0,#50l1:incadjnzr0,l123、試說(shuō)明壓棧指令和彈棧指令的作用及執(zhí)

19、行過(guò)程。答:壓棧(入?;蜻M(jìn)棧)指令的作用是將數(shù)據(jù)存入堆棧中,其執(zhí)行過(guò)程是先將堆棧指針sp的內(nèi)容加1,然后將直接地址單元中的數(shù)據(jù)壓入sp指向的單元中。若數(shù)據(jù)已推入堆棧,則sp指向最后推入數(shù)據(jù)所在的存儲(chǔ)單元(即指向棧頂)。彈棧(出棧)指令的作用是將數(shù)據(jù)從堆棧中取出,其執(zhí)行過(guò)程為先將堆棧指針sp所指出單元的內(nèi)容送入直接尋址單元中,然后將sp的內(nèi)容減1,此時(shí)sp指向新的棧頂。24、下述程序執(zhí)行后,sp=?,a=?,b=?。org2000hmovsp,#40hmova,#30hlcall250h;下條指令地址2008h送41h、42h,sp=42hadda,#10hmovb,a;地址為200ahl1:s

20、jmpl1org250hmovdptr,#200ahpushdpl;sp+1=43h,dpl(43h)pushdph;sp+1=44h,dph(44h)ret;200ahpc答:上述程序執(zhí)行后,sp=42h,a=30h,b=30h。25、發(fā)光二極管點(diǎn)亮規(guī)律:先是第1和第8個(gè)亮,延時(shí)一段時(shí)間后,第2和第7個(gè)亮,延時(shí)后,再是第3和第6個(gè)亮,延時(shí)后,最后是第4和第5個(gè)點(diǎn)亮,延時(shí)后循環(huán)。26、若系統(tǒng)晶振頻率為6mhz,求子程序delay的延時(shí)時(shí)間,若想加長(zhǎng)或縮短時(shí)間,應(yīng)該怎樣修改?答:delay:movr2,#0fahl1:movr3,#0fahl2:djnzr3,l2djnz r2,l1ret總時(shí)間

21、計(jì)算:t=4s(250×4s4s)×2504s=251.008ms估算:t=250×4s×250=250ms若想加長(zhǎng)延時(shí)時(shí)間,可以增加循環(huán)次數(shù)或再加一重循環(huán);若想減小延時(shí)時(shí)間,可以減少循環(huán)次數(shù)或較少一重循環(huán)。27、p1口連接8個(gè)共陽(yáng)極連接的發(fā)光二極管,是編制燈亮移位程序。答:mova,#0fehl1:movp1,arlalcalldelay;delay子程序同上題sjmpl128、試編一程序,將外部數(shù)據(jù)存儲(chǔ)器2100h單元中的高4位置“1”,其余位清“0”。答:movdptr,#2100hmovxa,dptrorla,#0f0hanla,#0f0hmov

22、xdptr,a29、試編程將片內(nèi)數(shù)據(jù)存儲(chǔ)器40h單元的第0為和第7位置1,其余取反。答:mova,40hcplasetbacc.0setbacc.7mov40h,a30、將a.5與80h位相與的結(jié)果,通過(guò)p1.4輸出。movc,80hanlc,acc.5movp1.4,c31、請(qǐng)用位操作指令,求下列邏輯方程。(1)movc,b.0orlc,p2.1anlc,acc.0orlc,/p3.2movp1.7,c(2)movc,p1.3anlc,acc.2mov20h,cmovc,b.5anlc,/p1.1orlc,20hmovpsw.5,c(3)movc,b.4anlc,/p1.5mov20h,cm

23、ovc,p1.0anlc,/acc.7orlc,20h (è下一行)movp2.3,c第四章 匯編語(yǔ)言程序設(shè)計(jì)1、編程將片內(nèi)40h60h單元中的內(nèi)容送到以3000h為首的存儲(chǔ)區(qū)內(nèi)。答:movr1,#40hmovr2,#21hmovdptr,#3000hl1:mova,r1movxdptr,aincr1incdptrdjnzr2,l12、編程計(jì)算下列算式的程序(1)23h+45h+abh+03h=mova,#23hadda,#45hadda,#0abhxcha,b;溢出處理addca,#00hxcha,badda,#03h;a中為結(jié)果低位,b中為高位(2)cdh+15h-38h-46h

24、=mova,#0cdhadda,#15hsubba,#38hsubba,#46h(3)1234h+8347h=mova,#34hadda,#47hmov30h,amova,#12haddca,#83hmov31,a;30h存結(jié)果低位,31h存結(jié)果高位(4)ab123h-43adch=clrcmova,#23hsubba,dchmov30h,amova,#0b1hsubba,#3ahmov31h,amova,#0ahsubba,#04hmov32h,a;30h為低位,32h為高位3、設(shè)有兩個(gè)4位bcd碼,分別存放在23h、22h單元和33h、32h單元中,求他們的和,并送入43h、42h單元中(

25、低位在低字節(jié),高位在高字節(jié))。答:mova,22hadda,32hmov42h,amova,23haddca,33hmov43h,a4、略5、編程計(jì)算片內(nèi)ram區(qū)50h59h單元中數(shù)的平均值,結(jié)果存放在5ah中。答:movr0,#8movr1,#50hmova,#00hl1:adda,r1incr1djnzr0,l1movb,#8divabmov5ah,a6、編寫(xiě)計(jì)算下式的程序。設(shè)乘積和平方結(jié)果均小于255。a 、b值分別存在片外3001h和3002h單元中,結(jié)果存于片外3000h單元中。(1) movdptr,#3001hmovxa,dptrmov30h,a;a暫存30h單元incdplmo

26、vxa,dptrcjnea,30h,l1;是否a=bmova,#25sjmpsavel1:jncl2movb,30hmulabsjmpsavel2:movb,amova,30hdivabsave:movdptr,#3000hmovxdprt,a(2) movdptr,#3001hmovxa,dptrmov30h,aincdptrmovxa,dptradda,30hmovb,amulab; (ab)2mov31h,acjnea,#10,l1sjmpsavel1:jcl2clrcsubba,#10sjmpsavel2:adda,#10save:movdptr,#3000hmovcdptr,a7、設(shè)

27、有兩個(gè)長(zhǎng)度均為15的數(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,amovdpl,r3movxa,dptradda,r1movdpl,r4movxdtpr,aincr2incr3incr4djnzr1,l1sjmp$8、設(shè)有100個(gè)無(wú)符號(hào)數(shù),連續(xù)存放在以2000h為首地址的存儲(chǔ)區(qū)中,試編程統(tǒng)計(jì)正數(shù)、負(fù)數(shù)和零的個(gè)

28、數(shù)。答:mov30h,#00h;正數(shù)計(jì)數(shù)器mov31h,#00h;負(fù)數(shù)計(jì)數(shù)器mov32h,#00h;零計(jì)數(shù)器movdptr,#2000hmovr1,#100l4:movxa,dptrincdptrcjnea,#0,l1inc32hsjmpl2l1:jcl3inc30hsjmpl2l3:inc31hl2:djnzr1,l4sjmp$9、將片外數(shù)據(jù)存儲(chǔ)器地址為1000h1030h的數(shù)據(jù)塊,全部搬遷到片內(nèi)ram 30h60h中,并將原數(shù)據(jù)塊區(qū)域全部清零。答:mov r0,#30hmov r2,#31hmov dptr ,#1000hlp:movx a,dptrmov r0,aand a,#00hmo

29、vx dptr,ainc r0inc dptrdjnz r2,lpsjmp$10、試編寫(xiě)一子程序,是r1、r0指向的兩個(gè)片外ram連續(xù)單元中的高4位二進(jìn)制數(shù),合并成一個(gè)字節(jié),裝入累加器a中。已知r0指向低地址,并要求該單元高四位放在a中高四位。答:movxa,r1anla,#0f0hswapamovr2,amovxa,r0anla,#0f0horla,r211、試編程把以2040h為首地址的連續(xù)50個(gè)單元的無(wú)符號(hào)數(shù)按降序排列,存放到以3000h為首地址的存儲(chǔ)區(qū)中。答:movr2,#50movr3,#20hmovr4,#40h;源地址movr5,#30hmovr6,#00h;目的地址send:m

30、ovdph,r3;send將2040h數(shù)據(jù)塊移入3000h存儲(chǔ)區(qū)movdpl,r4movxa,dptrincdptrmovr3,dphmovr4,dplmovdph,r5movdpl,r6movxdptr,aincdptrmovr5,dphmovr6,dpldjnzr2,sendmovr2,#49;重復(fù)次數(shù)cmp1:movdptr,#3000hmovr3,#49;比較次數(shù)cmp2:movxa,dptrmovb,aincdptrmovxa,dptrcjnea,b,l1l1:jcnomovemov30h,aclrcmova,dplsubba,#01hmovdpl,amova,30hmovxdptr

31、,aincdptrmova,bmovxdptr,anomove:djnzr3,cmp2;50個(gè)數(shù)重復(fù)一遍?djnzr2,cmp1;排序結(jié)束?ljmp$12、試編一查表程序,從首地址為2000h,長(zhǎng)度為100的數(shù)據(jù)塊中找出ascii碼為a,將其地址送到20a0h和20a1h單元中。答:movdptr,#2000hmovr2,#100go_on:movxa,dptrcjnea,#41h,ifendmova,dphmovb,dplmovdptr,#20a0hmovxdptr,aincdptrxcha,bmovxdptr,asjmpoverifend:incdptrdjnzr2,go_onover:s

32、jmpover13、設(shè)在200h204h單元中,存放5個(gè)壓縮bcd碼,編程將他們轉(zhuǎn)換成ascii碼,存放到以205h單元為首地址的存儲(chǔ)區(qū)。答:movr2,#05hmovr3,#02hmovr4,#00hmovr5,#02hmovr6,#05hchlp:movdph,r3movdpl,r4movxa,dptrincdptrmovr3,dphmovr4,dplmovb,aswapaanla,#0fhorla,#30hmovdph,r5movdpl,r6movxdptr,aincdptrmova,banla,#0fhorla,#30hmovxdptr,amovr5,dphmovr6,dpldjnzr

33、2,chlp14、有一無(wú)符號(hào)數(shù)據(jù)塊長(zhǎng)度在30h單元中,其首地址為31h單元,求出數(shù)據(jù)塊中最大值,并存入40h中。答:movr0,#31hmovr1,30hmov40h,#00hloop:mova,r0cjnea,40h,l1sjmpagainl1:jncl2sjmpagainl2:mov40h,aagain:incr0djnzr1,loopsjmp$15、略16、在以2000h為首地址的存儲(chǔ)區(qū)內(nèi),存放20個(gè)用ascii碼表示的09之間的數(shù),試編程,將它們轉(zhuǎn)換成bcd碼,并以壓縮bcd碼的形式存在3000h3009h單元中。答:movr2,#10movr3,#20hmovr4,#00hmovr5

34、,#30hmovr6,#00hlp:movdph,r3movdpl,r4movxa,dptranla,#0fhswapaxcha,bincdptrmovxa,dptranla,#0fhorla,bincdptrmovr3,dphmovr4,dplmovdph,r5movdpl,r6movxdptr,aincdptrmovr5,dphmovr6,dpldjnzr2,lpsjmp$17、試編程實(shí)現(xiàn)下列邏輯表達(dá)式功能。設(shè)p1.7p1.0為8個(gè)變量的輸入端,而其中p1.7又作為變量的輸出端。;輸入端定義x0equp1.0x1equp1.1x2equp1.2x3equp1.3x4equp1.4x5equ

35、p1.5x6equp1.6x7equp1.7(1)movc,x0anlc,x1anlc,/x2orlc,x3mov00h,cmovc,x4anlc,x5anlc,x6orlc,/x7orlc,00hmovp1.7,c(2)movc,x0anlc,x1cplcmov00h,cmovc,x2anlc,x3anlc,x4cplcmov01h,cmovc,x5anlc,x6anlc,x7cplcorlc,o1hcplcorlc,00hmovp1.7,c18、略 19、略20、試編寫(xiě)延時(shí)1s、1min、1h子程序。;單片機(jī)時(shí)鐘fosc=12mhz,計(jì)算為近似值;1s延時(shí)子程序dly_1s:movr0,#

36、10l3:movr1,#200l2:movr2,#250l1:djnzr2,l1djnzr1,l2djnzr0,l3ret;延時(shí)1mindly_1m:movr3,#60l4:lcalldly_1sdjnzr3,l4ret;延時(shí)1hdly_1h:movr4,#60l5:lcalldly_1mdjnzr4,l5ret21、用程序?qū)崿F(xiàn)c=a2+b2。設(shè)a、b均小于10,a存在31h單元中,b存在32h單元中,c存33h單元。答:org1000hsr:mova,31hacallsqrmovr1,amova,32hacallsqradda,r1mov33h,asjmp$;求平方子程序如下(采用查平方表的

37、方法)sqr:incamovca, a+pc rettable:db 0, 1, 4, 9, 16db 25,36,49,64,81end22、如何實(shí)現(xiàn)將內(nèi)存單元40h60h的數(shù)逐個(gè)對(duì)應(yīng)傳到片外2540h2560h單元中?答:movr0,#40hmovdptr,#2540hmovr2,#21hl1:mova,r0movxdptr,aincr0incdptrdjnzr2,l1sjmp$23、參考21題24、參考21題25、參考實(shí)驗(yàn)程序26、參考實(shí)驗(yàn)程序第五章 定時(shí)/計(jì)數(shù)器1、89s51單片機(jī)內(nèi)部有幾個(gè)定時(shí)/計(jì)數(shù)器,他們有哪些專用寄存器組成?答:89s51單片機(jī)內(nèi)部有兩個(gè)16位定時(shí)/計(jì)數(shù)器,為定時(shí)

38、器0(t0)和定時(shí)器1(t1)。在定時(shí)器/計(jì)數(shù)器的16位的計(jì)數(shù)器是由兩個(gè)8位的專用寄存器th0、tl0,th1、tl1組成。2、89s51單片機(jī)的定時(shí)/計(jì)數(shù)器有哪幾種工作方式,各有什么特點(diǎn)?答:定時(shí)器/計(jì)數(shù)器有四種工作方式:方式0,方式1,方式2,方式3。其中,方式3只適用于t0。以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í),一方面

39、使溢出標(biāo)志tf0置1,同時(shí)把th0中的8位數(shù)據(jù)重新裝入tl0中;方式3,將使tl0和th0成為兩個(gè)相互獨(dú)立的8位計(jì)數(shù)器,tl0利用t0本身的一些控制,它的操作與方式0和方式1類似。而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í),對(duì)外界計(jì)數(shù)頻率有何限制?答:定時(shí)/計(jì)數(shù)器作定時(shí)時(shí),其計(jì)數(shù)脈沖由系統(tǒng)振蕩器產(chǎn)生的內(nèi)部時(shí)鐘信號(hào)12分頻后提供。定時(shí)時(shí)間與時(shí)鐘頻率和定時(shí)初值有關(guān)

40、。定時(shí)/計(jì)數(shù)器作計(jì)數(shù)時(shí),由于確認(rèn)1次負(fù)跳變要花2個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。4、當(dāng)定時(shí)器t0用作方式3時(shí),由于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í)器t1自動(dòng)開(kāi)始運(yùn)行,若要停止,只需送入一個(gè)置定時(shí)器t1為方式3的方式字。5、已知89s51單片機(jī)系統(tǒng)時(shí)鐘頻率為24mhz,請(qǐng)利用定時(shí)器t0和p1.2輸出矩形脈沖。矩形波高電平寬度50µs,低電平寬度350µs。答:org 100

41、0hmov tmod,02h ;設(shè)置工作方式mov th0,09ch;設(shè)置定時(shí)器初值mov tl0,09chsetb tr0;啟動(dòng)定時(shí)器loop:setbp1.2;p1.0輸出高電平movr0,07hdel:jbc tf0,rep;定時(shí)是否到?ajmp delrep:setbp1.2;p1.0輸出低電平djnzr0,delajmp loopend6、在89s51單片機(jī)中,已知時(shí)鐘頻率為12mhz,請(qǐng)編程使p1.0和p1.1分別輸出周期為2ms和500s的方波。答:選擇方式2,用定時(shí)器t1movtmod,#20hmovth1,#06hmovtl1,#06hsetbtr1l1:movr2,#04h

42、l2:jnbtf1,$clrtf1,cplp1.1djnzr2,l2cplp1.0ljmpl17、設(shè)系統(tǒng)時(shí)鐘為24mhz,試用定時(shí)器t0做外部計(jì)數(shù)器,編程實(shí)現(xiàn)每計(jì)到1000個(gè)脈沖,是t1開(kāi)始2ms定時(shí),定時(shí)時(shí)間到后,t0又開(kāi)始計(jì)數(shù),循環(huán)往復(fù)。答:movtmod,#15h;t1定時(shí)方式1,t0計(jì)數(shù)方式1l1:movth0,#0fchmovtl0,#18hsetbtr0jnbtf0,$clrtr0clrtf0movth1,# hmovtl1,# hsetbtr1jnbtf1,$clrtr1clrtf1ljmpl18、略9、略第六章 80c51的串行接口1、什么是串行異步通信?他有哪些特點(diǎn)?有哪幾種

43、幀格式?答:串行通信即所傳輸數(shù)據(jù)的各位按順序一位一位的發(fā)送或接收。串行通信分為同步和異步兩種方式。在異步通信中數(shù)據(jù)或字符是一幀一幀地傳送的。幀定義為一個(gè)字符的完整的通信格式,通常也稱為幀格式。它的主要特點(diǎn):由于異步通信每傳送一幀有固定的格式,通信雙方只需按約定的幀格式來(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è)可編程位

44、和1個(gè)結(jié)束位組成,其傳送波特率為: 11b×3600/60s=660bps3、80c51單片機(jī)的串行口由哪些基本功能部件組成?答: 80c51單片機(jī)的串行口基本功能部件主要有:兩個(gè)數(shù)據(jù)緩沖寄存器sbuf,一個(gè)串行口控制寄存器scon,一個(gè)輸入移位寄存器。4、80c51單片機(jī)的串行口有幾種工作方式?幾種幀格式?如何設(shè)置不同方式的波特率?答:80c51單片機(jī)的串行口有四種工作方式,由串行口控制寄存器中的sm0、sm1控制。80c51單片機(jī)的串行通信有8位、10位、11位三種幀格式。波特率設(shè)置:4種工作方式波特率的計(jì)算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可

45、變的,均由定時(shí)器t1的溢出率控制。具體計(jì)算如下:方式0:波特率固定為時(shí)鐘頻率的1/12,不受smod的影響。(smod為波特率倍增位)方式1的波特率=2smod/32×定時(shí)器t1的溢出率 方式2的波特率=2smod/64×fosc方式3的波特率=2smod/32×定時(shí)器t1的溢出率5、為什么定時(shí)器t1用作串行口波特率發(fā)生器時(shí),常采用工作方式2?答:在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收的數(shù)據(jù)速率(即波特率)要有一定的約定。串口有四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,有定時(shí)器t1的溢出率控制。定時(shí)器t1用作串行口波特率發(fā)生器

46、時(shí),因?yàn)楣ぷ鞣绞?是自動(dòng)重裝載方式,因而定時(shí)器t1作波特率發(fā)生器常采用工作方式2.6、已知定時(shí)器t1設(shè)置成方式2,用作波特率發(fā)生器,系統(tǒng)時(shí)鐘頻率為24mhz,求可能產(chǎn)生的最高和最低的波特率是多少?答:最高波特率:th1=0ffh,tl1=0ffh波特率最高=2/32×24m/(12×(256255)bps=0.125mbps最低波特率:th1=00h,tl1=00h波特率最低=1/32×24m/(12×(2560)bps=244bps9、串行口異步通信時(shí),ascii碼“3”的字符格式(10位)如何?答:串行口異步通信時(shí),10位的數(shù)據(jù)幀結(jié)構(gòu)為:一個(gè)起始位(

47、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,取決于特殊功能寄存器pcon中的smod位的狀態(tài)。若smod=0,則n=32。若smod=1,則n=16。定時(shí)器t1溢出率=定時(shí)器t1的溢出次數(shù)/秒。由題可知:fosc=6mhz,計(jì)數(shù)初值為0fdh,smod=1,故第七章 中斷系統(tǒng)1、什么是中斷?在單片機(jī)中中斷能實(shí)現(xiàn)

48、哪些功能?答:中斷是通過(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í)別,稱為優(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é)束以后,再響應(yīng)級(jí)別較低的中斷源。3、80c51有幾個(gè)中斷源,各中斷標(biāo)志如何產(chǎn)生的,又如何清“0”的?cpu響應(yīng)中

溫馨提示

  • 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)論