《單片機(jī)原理與應(yīng)用》習(xí)題答案主編:蘇珊高如新譚興國(guó)電子科技出版社_第1頁(yè)
《單片機(jī)原理與應(yīng)用》習(xí)題答案主編:蘇珊高如新譚興國(guó)電子科技出版社_第2頁(yè)
《單片機(jī)原理與應(yīng)用》習(xí)題答案主編:蘇珊高如新譚興國(guó)電子科技出版社_第3頁(yè)
《單片機(jī)原理與應(yīng)用》習(xí)題答案主編:蘇珊高如新譚興國(guó)電子科技出版社_第4頁(yè)
《單片機(jī)原理與應(yīng)用》習(xí)題答案主編:蘇珊高如新譚興國(guó)電子科技出版社_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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)用電子科技出版社主編:蘇珊高如新譚興國(guó)第一章習(xí)題答案1 .什么叫單片機(jī)?它有哪些主要特點(diǎn)?單片機(jī)是將中央處理器(CPU)、隨機(jī)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、中斷系統(tǒng)、定時(shí)/計(jì)數(shù)器、I/O口等主要計(jì)算機(jī)部件集成在一片集成電路芯片上的單片微型計(jì)算機(jī)(SingleChipMicrocomputer)的簡(jiǎn)稱。具有體積小、功耗低、價(jià)格便宜、控制功能強(qiáng)等特點(diǎn)。2 .請(qǐng)簡(jiǎn)述單片機(jī)的技術(shù)發(fā)展歷史,單片機(jī)的主要技術(shù)發(fā)展方向是什么?單片機(jī)技術(shù)發(fā)展經(jīng)歷了單芯片微機(jī)形成階段、性能完善提高階段和微控制器化階段三個(gè)主要階段。目前單片機(jī)主要技術(shù)發(fā)展方向是:大容量高性能化、小容量低價(jià)格化、外圍電路內(nèi)裝

2、化、多品種化以及I/O接口功能的增強(qiáng)、功耗降低等。3 .單片機(jī)主要用在哪些方面?由于單片機(jī)體積小、功耗低、價(jià)格便宜,廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天專用設(shè)備的智能化管理及過(guò)程控制等領(lǐng)域;又由于單片機(jī)具有較強(qiáng)的實(shí)時(shí)數(shù)據(jù)處理能力和控制功能,可以使系統(tǒng)保持在最佳工作狀態(tài),提高系統(tǒng)的工作效率和產(chǎn)品質(zhì)量,所以在工業(yè)控測(cè)控、航空航天、尖端武器等各種實(shí)時(shí)控制系統(tǒng)中,都作為控制器件使用。第二章習(xí)題參考答案1.單片機(jī)系統(tǒng)復(fù)位后,PC值為(0000H)2 .MCS-51單片機(jī)中,一個(gè)機(jī)器周期=(6)狀態(tài)周期=(12)振蕩周期。當(dāng)主頻為12MHz時(shí),一個(gè)機(jī)器周期為(1s)3 .PSW中RS1RS0=

3、01時(shí),寄存器R2的地址為(10H)PSW中RS1RS0=10時(shí),寄存器R2的地址為(12H二4 .MCS-51單片機(jī)的EA=0,程序存儲(chǔ)器訪問(wèn)的是(片外ROM)5 .MCS-51單片機(jī)上有(4)個(gè)獨(dú)立的存儲(chǔ)空間。6 .MCS-51系列單片機(jī)在片內(nèi)集成了哪些主要邏輯功能部件?答:有微處理器CPU、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、定時(shí)/計(jì)數(shù)器、中斷源、弁行I/O端口等功能部件組成。DPTR有哪些特1的功能,始終7 .程序計(jì)數(shù)器(PC)作為不可尋址寄存器,它有哪些特點(diǎn)?數(shù)據(jù)地址指針點(diǎn)?答:PC是一個(gè)16位的特殊功能寄存器,又稱程序指針,它具有自動(dòng)加指向下一條指令的首地址,以保證程序按順序執(zhí)行;DPTR是一

4、個(gè)16位的專用地址指針寄存器。作間址寄存器使用,用來(lái)存儲(chǔ)外接64KB的數(shù)據(jù)存儲(chǔ)器和I/O端口,DPTR也可以拆成兩個(gè)獨(dú)立8位的寄存器,即DPH(高8位字節(jié))和DPL(低8位字節(jié)),分別占據(jù)83H和82H兩個(gè)地址。8 .MCS-51單片機(jī)片內(nèi)256B的數(shù)據(jù)存儲(chǔ)器可分為幾個(gè)區(qū)?分別作什么用?答:00H1FH共32個(gè)單元通常作為工作寄存器區(qū),20H2FH可用位尋址區(qū),可直接進(jìn)行位操作,30H7FH共80個(gè)單元為用戶RAM區(qū),作堆棧或數(shù)據(jù)緩沖器用,80HFFH為特殊功能寄存器區(qū)。9 .開(kāi)機(jī)復(fù)位后,CPU使用的是哪組工作寄存器?它們的地址是什么?CPU如何確定和改變當(dāng)前工作寄存器組?答:開(kāi)機(jī)復(fù)位后,由于

5、PSW復(fù)位值是00H,CPU使用的是0區(qū)的工作寄存器R0R7,它們的地址是0007H,可以通過(guò)改變PSW的RS1RS0兩個(gè)位的值確定和改變當(dāng)前工作寄存器組。10 堆棧有哪些功能?堆棧指針(SP)的作用是什么?在程序設(shè)計(jì)時(shí),為什么還要對(duì)SP重新賦值答:堆棧是一個(gè)特殊的存儲(chǔ)區(qū),用來(lái)暫存數(shù)據(jù)和地址。堆棧指針SP是用來(lái)管理堆棧的它指示出堆棧頂部在片內(nèi)RAM中的位置。系統(tǒng)復(fù)位后,SP初始化為07H,使得堆棧實(shí)際上從08H單元開(kāi)始。由于08H1FH單元分屬于工作寄存器13區(qū),20H2FH為位尋址區(qū),若程序中要用到這些區(qū),應(yīng)把SP值改為30H或更大的值。11 MCS-51的SFR占用了什么空間?其尋址方式如

6、何?答:MCS-51的SFR占用了片內(nèi)數(shù)據(jù)存儲(chǔ)器的空間,地址范圍為80HFFH。其尋址方式為直接尋址。12 程序狀態(tài)寄存器PSW的作用是什么?常用狀態(tài)位有哪些?它們的作用各是什么?答:PSW是一個(gè)8位的特殊功能寄存器。用于存放程序運(yùn)行中的各種狀態(tài)信息。常用狀態(tài)位及其作用:(1) 進(jìn)位標(biāo)志位Cy。在進(jìn)行加或減運(yùn)算時(shí),如果操作結(jié)果最高位有進(jìn)位或借位,Cy由硬件置“1”,否則清“0”。(2) 輔助進(jìn)位標(biāo)志位Ac。在進(jìn)行加或減運(yùn)算時(shí),如果低四位數(shù)向高位有進(jìn)位或借位,硬件會(huì)自動(dòng)將Ac置“l(fā)”,否則清“0”。(3) 工作寄存器區(qū)指針RSlRS0。用于選擇CPU當(dāng)前工作寄存器的工作區(qū)。可由用戶用軟件來(lái)改變R

7、SlRS0的組合,以切換當(dāng)前選用的寄存器的工作區(qū)。(4) 溢出標(biāo)志位OV。當(dāng)進(jìn)行算術(shù)運(yùn)算時(shí),如果產(chǎn)生溢出,則由硬件將OV位置“l(fā)”,否則清“0”。(5)奇偶標(biāo)志位P。該位始終跟蹤累加器A中含“1”個(gè)數(shù)的奇偶性。如果A中有奇數(shù)個(gè)“1”,則P置“l(fā)”,否則置“0”。13 MCS-51單片機(jī)復(fù)位條件是什么?常用復(fù)位電路有哪些?答:復(fù)位條件是在單片機(jī)的RST引腳輸入持續(xù)至少兩個(gè)機(jī)器周期高電平。MCS-51單片機(jī)通常采用上電復(fù)位和上電+按鈕電平復(fù)位兩種方式。第三章習(xí)題參考答案1. 選擇題:1 )可以實(shí)現(xiàn)片外數(shù)據(jù)存儲(chǔ)器訪問(wèn)的指令是(A)。A MOVXB. MOV2)下列指令中,可以實(shí)現(xiàn)將累加器C. NOP

8、A 的第 0 位置D. DIV1 (其它位不變)的指令是(的指令是(B )。AMOVA,#01HB.SETBACC.0C.ANLA,#0FFHD.SETBACC3 )MOVXADPTR指令中,源操作數(shù)的尋址方式是(B)A.寄存器尋址B.寄存器間接尋址C.直接尋址D.立即尋址4 )LCALL指令操作碼地址是2000H,執(zhí)行完子程序返回指令后,PC=(D)。D. 2003HD. MOVA2000HB.2001HC.2002H5 )對(duì)程序存儲(chǔ)器的讀操作,只能使用(B)AMOVXB.MOVCC.PUSH6 )執(zhí)行下面指令后,30H內(nèi)容是(C)MOVR1,#30HMOV40H,#0E0HMOVR1,40

9、HA40HB.30HC.0E0HD.FFH7 )下列指令格式正確的是(D)。A DEL : XCHA , 30HB. MOV : INC AC. 2AB : MOV A , #20H8 )當(dāng)執(zhí)行指令( A )后,累加器D. ABC : MOV 23H , AA 的內(nèi)容為 00H 。A ANL A , #00HC. XRL A , #00HB. ORL A , #00HD. 以上都不對(duì)2比較下面各組指令,并在指令后添加注釋(1) MOVA,20H;20H內(nèi)容送累加器AMOVC,20H;位地址20H內(nèi)容送位累加器C(2) MOVA,20H;20H內(nèi)容送累加器AMOVR1 ,#20H ; 20H 送

10、累加器AMOVA,R1;20H指向地址的內(nèi)容累加器A(3) 3)CJNEA,R1,L1;比較A和R1指向地址的內(nèi)容,若相等程序順序運(yùn)行,不相等則轉(zhuǎn)L1處DJNZR2,L1;R2內(nèi)容減1,不等于0轉(zhuǎn)L1處,等于0則順序運(yùn)行3判斷下列指令是否正確,并改正錯(cuò)誤(1) .SUBB30H,#12H該指令錯(cuò)誤,帶進(jìn)位減法指令目的操作數(shù)必須是A,要將立即數(shù)12H和30H內(nèi)容相加,MOVA,30HSUBBA,#12H(2) .MOVA,2000H該指令錯(cuò)誤,MOV為內(nèi)部數(shù)據(jù)傳送指令,范圍只是在內(nèi)部數(shù)據(jù)存儲(chǔ)器和累加器傳送,地址不超過(guò)FFH。要將外部2000H送累加器可改為MOVDPTR,2000HMOVXA,D

11、PTR(3) .ADDR0,0A3H該指令錯(cuò)誤,要將A3H內(nèi)容和R0內(nèi)容相加,可改為:MOVA,R0ADDA,0A3H(4) .CJNE20H,#20H,L1該指令錯(cuò)誤,CJNE第一操作數(shù)可以是A、寄存器Rn或Ri可改為:MOVR1,20HCJNER1,#20H,L1(5) .RLCA該指令正確4設(shè)R0的內(nèi)容為32H,A的內(nèi)容為48H,而片內(nèi)RAM32H單元的內(nèi)容為80H,40H單元的內(nèi)容為08H。請(qǐng)指出在執(zhí)行下列程序段后,上述各單元的內(nèi)容變化。MOVA,R0;R0指向地址32H內(nèi)容送A,即(A)=80HMOVR0,40H;32H(40H),即(32H)=(40H)=08HMOV40H,A;4

12、0H(A),即(40H)=(A)=80HMOVR0,#35H;R0-35H,(R0)=35H5根據(jù)要求要求寫出相應(yīng)的指令。1 ).將R0的內(nèi)容送R1MOVA,R0MOVR1,A2 )將30H內(nèi)容送20H。MOV20H,30H3 )將立即數(shù)30H送R0HMOVR0,#30H5 )將R0的內(nèi)容送以R1中內(nèi)容為地址的存儲(chǔ)單元。MOVA,R0MOVR1,A6 )將內(nèi)部RAM30H內(nèi)容送外部20H單元。MOVA,30MOVR1,#20HMOVXR1,A7 )將外部RAM3000H內(nèi)容送內(nèi)部30H單元。MOVDPTR,#3000HMOVXA,DPTRMOV30H,A8 )將ROM2000H內(nèi)容送R1。MO

13、VDPTR,#3000HMOVCA,A+DPTRMOVR1,A9 )將ROM2000H內(nèi)容送內(nèi)部30H單元。MOVDPTR,#2000HMOVCA,A+DPTRMOV20H,A10 )將ROM2000H內(nèi)容送外部20H單元。MOVDPTR,#2000HMOVCA,A+DPTRMOVR1,#20HMOVXR1,A6 .編程將片外數(shù)據(jù)存儲(chǔ)器地址為40H60H區(qū)域的數(shù)據(jù)塊,全部搬移到片內(nèi)RAM的同地址區(qū)域,并將原數(shù)據(jù)區(qū)全部填為FFH。MOVR0,#40HMOVR1,#33LOOP:MOVXA,R0MOVR0,AMOVA,#0FFHMOVXR0,AINCR0DJNZR1,LOOPRET7 .編程找出片

14、外2000H200FH數(shù)據(jù)區(qū)中的最小值,結(jié)果存放于R2中。MOVDPTR,#2000HMOVR7,#0FHMOVXA,DPTRMOVBLOOP:INCDPTRMOVXA,DPTRCJNEA,B,LOOP1LOOP1:JNCLOOP2MOVB,ALOOP2:DJNZR7,LOOPMOVR7,BRET第四章習(xí)題參考答案1 .是在外部RAM中的xdata區(qū)定義了無(wú)符號(hào)字符型的字變量OUTX2,它的地址是(1002H)。2 .(1)編程容易;(2)容易實(shí)現(xiàn)復(fù)雜的數(shù)值計(jì)算;(3)容易閱讀、調(diào)試、維護(hù)程序;(4)容易實(shí)現(xiàn)模塊化開(kāi)發(fā);(5)程序可移植性好。3.bit,data,idata,pdata,cod

15、e,xdata,sbit,sfr,sfr164. bit和sbit都是C51擴(kuò)展的變量類型。bit是位變量,編譯器在編譯過(guò)程中分配地址。除非指定,否則這個(gè)地址是隨機(jī)分配的。這個(gè)地址是整個(gè)可尋址空間,也就是內(nèi)部RAM、外擴(kuò)RAM和ROM。sbit是對(duì)應(yīng)可位尋址空間的一個(gè)位,包括可位尋址區(qū):20H2FH和特殊功能寄存器區(qū)。一旦用了形如sbixxx=REGE八6的定義,這個(gè)sbit量就確定地址了。bit和sbit的最大區(qū)別在于,bit是定義一個(gè)變量;sbit經(jīng)常用在寄存器中的,方便對(duì)寄存器的某位進(jìn)行操作。5. (1)使用C51運(yùn)行庫(kù)中的預(yù)定義宏;(2)通過(guò)指針訪問(wèn);(3)使用C51擴(kuò)展關(guān)鍵字_at_

16、。6. (1)中斷函數(shù)不能進(jìn)行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯(cuò)。( 2)中斷函數(shù)沒(méi)有返回值,如果企圖定義一個(gè)返回值將得不到正確的結(jié)果,建議在定義中斷函數(shù)時(shí)將其定義為void類型,以明確說(shuō)明沒(méi)有返回值。( 3)在任何情況下都不能直接調(diào)用中斷函數(shù),否則會(huì)產(chǎn)生編譯錯(cuò)誤。因?yàn)橹袛嗪瘮?shù)的返回是由8051單片機(jī)的RETI指令完成的,RETI指令影響8051單片機(jī)的硬件中斷系統(tǒng)。如果在沒(méi)有實(shí)際中斷情況下直接調(diào)用中斷函數(shù),RETI指令的操作結(jié)果會(huì)產(chǎn)生一個(gè)致命的錯(cuò)誤。( 4)如果在中斷函數(shù)中調(diào)用了其它函數(shù),則被調(diào)用函數(shù)所使用的寄存器必須與中斷函數(shù)相同。否則會(huì)產(chǎn)生不正確的結(jié)果。( 5)C5

17、1編譯器對(duì)中斷函數(shù)編譯時(shí)會(huì)自動(dòng)在程序開(kāi)始和結(jié)束處加上相應(yīng)的內(nèi)容,具體如下:在程序開(kāi)始處對(duì)ACC、B、DPH、DPL和PSW入棧,結(jié)束時(shí)出棧。中斷函數(shù)未加usingm修飾符的,開(kāi)始時(shí)還要將R0R1入棧,結(jié)束時(shí)出棧。如中斷函數(shù)加usingm修飾符,則在開(kāi)始將PSW入棧后還要修改PSW中的工作寄存器組選擇位。( 6)C51編譯器從絕對(duì)地址8n+3處產(chǎn)生一個(gè)中斷向量,其中n為中斷號(hào),也即interrupt后面的數(shù)字。該向量包含一個(gè)到中斷函數(shù)入口地址的絕對(duì)跳轉(zhuǎn)。( 7)中斷函數(shù)最好寫在文件的尾部,并且禁止使用extern存儲(chǔ)類型說(shuō)明。防止其它程序調(diào)用。7. 有small,compact和large三種存

18、儲(chǔ)器模式。Small存儲(chǔ)器模式參數(shù)及局部變量放入可直接尋址的內(nèi)部存儲(chǔ)器(最大128B,默認(rèn)存儲(chǔ)器類型為data)compact存儲(chǔ)器模式參數(shù)及局部變量放入分頁(yè)外部數(shù)據(jù)存儲(chǔ)器(最大256B,默認(rèn)存儲(chǔ)器類型為pdata)large存儲(chǔ)器模式參數(shù)及局部變量直接放入外部數(shù)據(jù)存儲(chǔ)器(最大64KB,默認(rèn)存儲(chǔ)器類型為xdata)8. #include<reg51.h>main()inti;unsignedcharxdata*p=0x2000;/*指針指向2000H單元*/for(i=0;i<256;i+)/*清零2000H-20FFH單元*/*p=0;p+;9. (1)unsignedch

19、arcodedis_code10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;10. unsignedchardataTL0_L_at_0x30;unsignedchardataTH0_H_at_0x31;11. unsignedcharidatadata_buf20;12. unsignedcharxdatadata_array100;13. unsignedcharbdatastatus;sbitflag_lamp1=statusA0;sbitflag_lamp2=statusA1;sbitflag_machine1=statusA2

20、;sbitflag_machine2=statusA3;sbitflag_port1=statusA4;sbitflag_port2=statusA5;sbitflag_calcu1=statusA6;sbitflag_calcu2=statusA7;第五章習(xí)題參考答案1. MCS-51單片機(jī)有5_個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)。優(yōu)先級(jí)由軟件填寫特殊功能寄存器IP加以選擇。2. 外部中斷請(qǐng)求標(biāo)志位是IE0矛口IX3. 8051單片機(jī)響應(yīng)中斷后,產(chǎn)生長(zhǎng)調(diào)用指令LCALL,執(zhí)行該指令的過(guò)程包括:首先把當(dāng)前PC的內(nèi)容壓入堆棧,對(duì)斷點(diǎn)保護(hù),然后把長(zhǎng)調(diào)用指令的16位地址送PC.,使程序轉(zhuǎn)向執(zhí)行中_斷入口地址區(qū)

21、。4.8051單片機(jī)的IP寄存器功能是設(shè)置中斷優(yōu)先級(jí)5.用指令完成下列要求。.INT1、T0開(kāi)中斷,其余禁止中斷;MOVIE,#86H.全部開(kāi)中斷MOVIE,#FFH.INT0、T0開(kāi)中斷,其余保持不變;SETBEASETBEX0.INT1、串行口為高優(yōu)先級(jí),其余為低優(yōu)先級(jí);MOVIP,#85H5.子程序和中斷程序有何異同,為什么子程序返回指令RET和中斷返回指令RETI不能相互替代?答:中斷類似于子程序設(shè)計(jì)中的調(diào)用子程序,但它們有著本質(zhì)的區(qū)別。調(diào)用子程序是程序員事先安排好的,而中斷是由一些特殊事件觸發(fā)的,是隨機(jī)的。RET功能是恢復(fù)堆棧中PC的值,從調(diào)用指令的下一條指令開(kāi)始運(yùn)行程序,不影響標(biāo)志

22、位。RETI除了具有RET指令功能外,還清除內(nèi)部相應(yīng)的中斷狀態(tài)觸發(fā)器,因此中斷服務(wù)程序必須以RETI為指令結(jié)束。CPU執(zhí)行RETI指令后至少再執(zhí)行一條指令,才能響應(yīng)新的中斷請(qǐng)求,因此不能互換。1.外部中斷有幾種中斷觸發(fā)方式?對(duì)跳變觸發(fā)和電平觸發(fā)信號(hào)有什么要求?如何設(shè)置?答:外部中斷有低電平觸發(fā)和邊沿觸發(fā)兩種觸發(fā)方式。低電平觸發(fā)時(shí),施加在相應(yīng)引腳上的低電平在中斷返回前必須撤消,否則將再次申請(qǐng)中斷造成出錯(cuò)。即施加在INTi引腳上的低電平持續(xù)時(shí)間應(yīng)大于一個(gè)機(jī)器周期,且小于中斷服務(wù)程序的執(zhí)行時(shí)間。在邊沿觸發(fā)方式中,為了保證CPU在兩個(gè)機(jī)器周期內(nèi)能夠檢測(cè)到由高至低跳變的電平,輸入的高電平和低電平的持續(xù)時(shí)

23、間至少要保持12個(gè)振蕩周期(即一個(gè)機(jī)器周期的時(shí)間)。通過(guò)TCON寄存器的IT1和IT0來(lái)設(shè)置。ITi設(shè)置為“0”時(shí),相應(yīng)的外部中斷為低電平觸發(fā)方式;設(shè)置為“1”時(shí),相應(yīng)的外部中斷為邊沿觸發(fā)方式,7 .為何要在程序的首地址安排一條跳轉(zhuǎn)到主程序的指令?在響應(yīng)中斷的過(guò)程中為什么要保護(hù)現(xiàn)場(chǎng)?應(yīng)如何保護(hù)?答:因?yàn)槌绦虻氖椎刂放c外中斷0的入口地址之間只相差3各單元,放不下完整的主程序,一般將主程序放到0030H以后的單元,故要安排一條跳轉(zhuǎn)到主程序的指令。主程序中通常用到PSW、工作寄存器和特殊功能寄存器等。如果在中斷服務(wù)程序中要用這些寄存器,會(huì)造成這些現(xiàn)場(chǎng)寄存器中數(shù)據(jù)的混亂,在中斷服務(wù)前應(yīng)將它們的內(nèi)容保護(hù)

24、起來(lái)稱保護(hù)現(xiàn)場(chǎng)。通常利用堆棧操作來(lái)保護(hù)現(xiàn)場(chǎng)。8 .利用INT0做一個(gè)計(jì)數(shù)器。當(dāng)INT0有脈沖時(shí),A的內(nèi)容加1。弁且當(dāng)A的內(nèi)容大于或等于100時(shí)將P1.0置位。ORG0000HLJMPMIN0ORG0003HLJMPINTB0ORG0030HMIN0:MOVSP,#30H;主程序SETBIT0SETBEX0SETBEAMOVA,#00MIN1:NOPLJMPMIN1ORG0100HINTB0:PUSHPSW;INT0的中斷服務(wù)程序ADDA,#01CJNE A#100INTB1LJMPINTB2INTB1:JCINTB3INTB2:SETBP1.0INTB3:POPPSWRETIEND第六章習(xí)題答

25、案1 .當(dāng)定時(shí)器T0工作在方式3時(shí),要占用定時(shí)器T1直工F1和TR1兩個(gè)控制位。2 .在定時(shí)器工作在方式1下,計(jì)數(shù)器的計(jì)數(shù)器的寬度為6位,若fosc=12MHz,最大定時(shí)時(shí)間為13,若fosc=6MHz,則最大定時(shí)時(shí)間為23 .定時(shí)時(shí)間與定時(shí)器的工作方式、計(jì)數(shù)初值及晶振頻率有關(guān)。4 .MCS-51的定時(shí)器/計(jì)數(shù)器作計(jì)數(shù)器使用時(shí),計(jì)數(shù)脈沖由外部信號(hào)通過(guò)引腳,P3.4和P3.5提供。5 .MCS-51的定時(shí)器/計(jì)數(shù)器T0門控信號(hào)GATE設(shè)置為1時(shí),只有INT0引腳為高電平且由軟件使TR0置1時(shí),才能啟動(dòng)定時(shí)器工作。6 .MCS-51系列單片機(jī)內(nèi)部設(shè)有幾個(gè)定時(shí)器/計(jì)數(shù)器?它們是由哪些專用寄存器組成?

26、有哪幾種工作方式?簡(jiǎn)述各種工作方式的功能特點(diǎn)。MCS-51單片機(jī)內(nèi)部設(shè)有兩個(gè)16位定時(shí)器/計(jì)數(shù)器T0和T1o分別有的8位計(jì)數(shù)器TH0、TL0和TH1、TL1組成,各有4種工作方式。方式0是一個(gè)13位的定時(shí)器/計(jì)數(shù)器。只用了16位寄存器中的高8位(THi)和低5位(TLi的D4D0位),TLi的高3位未用。方式1為16位定時(shí)器/計(jì)數(shù)器方式,由THi的8位和TLi的8位構(gòu)成16位加1計(jì)數(shù)器,當(dāng)16位計(jì)數(shù)滿溢出時(shí),溢出標(biāo)志位TFi置“1”。方式2為8位自動(dòng)重裝計(jì)數(shù)器。僅TLi作為計(jì)數(shù)器,而THi的值在計(jì)數(shù)中不變。TLi溢出時(shí),THi中的值自動(dòng)裝入TLi中。方式3只適用定時(shí)器/計(jì)數(shù)器T0oT0在該方式

27、下被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TH0和TL0,TL0可作8位的定時(shí)器或計(jì)數(shù)器用,而TH0借用T1的控制位和溢出標(biāo)志位TR1和TF1,只可用作簡(jiǎn)單的定時(shí)器使用。該方式下T1可用作串行口波特率發(fā)生器。7 .MCS-51系列單片機(jī)定時(shí)器/計(jì)數(shù)器作定時(shí)器或計(jì)數(shù)器使用時(shí),其計(jì)數(shù)脈沖分別由誰(shuí)提供?作定時(shí)器使用時(shí),其實(shí)質(zhì)是在單片機(jī)內(nèi)部對(duì)機(jī)器周期進(jìn)行計(jì)數(shù),計(jì)數(shù)脈沖輸入信號(hào)由內(nèi)部時(shí)鐘提供,每一個(gè)機(jī)器周期計(jì)數(shù)器自動(dòng)加1。作計(jì)數(shù)器使用時(shí),其實(shí)質(zhì)是對(duì)外部事件進(jìn)行計(jì)數(shù),計(jì)數(shù)脈沖來(lái)自相應(yīng)的外部輸入引腳T1或T0,當(dāng)外部輸入脈沖信號(hào)由1至0的跳變時(shí),計(jì)數(shù)器自動(dòng)加1。8 .采用程序查詢方式,由T1產(chǎn)生一個(gè)50Hz的方波,從P1

28、.1輸出,fosc=12MHz。解:方波周期T=1/50=0.02s=20ms,用T1定時(shí)10ms,計(jì)數(shù)初值為:16-362-10X10X12X10/12=65536-10000=55536=D8F0H源程序如下:ORG0000HLJMPT1BUSORG0030HT1BUS:MOVTMOD,#10H;T1方式1,定時(shí)模式SETBTRl;啟動(dòng)T1LOOPMOV TH1 , #0D8H;送T1計(jì)數(shù)初值MOV TL1LOOP1: JNB TF1CLR TF1CPL P1.1SJMP LOOPEND,#0F0H,LOOP1 ; T1沒(méi)有溢出等待;產(chǎn)生溢出清標(biāo)志位;P1.1取反輸出;循環(huán)第七章習(xí)題答案1

29、 .選擇題(1) MCS-51系列單片機(jī)的串行口是( B )。A.單工B.全雙工C.半雙工(2)表示串行數(shù)據(jù)傳輸速率的指標(biāo)是(D )。A. USARTB.UART C.字符幀(3)串行口的控制寄存器是( C )。D.并行口D.波特率A. PCONB.SMOD C.SCON(4)當(dāng)設(shè)置串行口工作于方式2時(shí),采用(D.SBUFA )指令。A.MOV SCON , C. MOV PCON , (5)當(dāng)串行口工作于方式#80HB. MOV#80HD. MOV0時(shí),其波特率(SCON , #10HPCON , #10H C )。A.取決于定時(shí)器1的溢出率B.取決于C.取決于時(shí)鐘頻率D.取決于PCON的(

30、6)當(dāng)串行口工作于方式1時(shí),其波特率(DA.取決于定時(shí)器1的溢出率B.取決于C.取決于時(shí)鐘頻率D.取決于PCON的(7)串行口的發(fā)送數(shù)據(jù)和接收數(shù)據(jù)端為(AA.TXD和RXDB.TI和C.TB8(8)串行口是單片機(jī)的(RI和A)。A.內(nèi)部資源B.外部資源PCON 的 SMODSMOD和定時(shí)器 1的溢出率 )。PCON 的 SMODSMOD和定時(shí)器 1的溢出率 )。RB8 D.RENC.輸入設(shè)備D.輸出設(shè)備簡(jiǎn)答題1.串行口有幾下JLC4-f工作方式?有幾種幀格式?-r什十卡各工作方式的波特率如何確定竹臺(tái)匕2_貓多sM0sM111卜力隊(duì)切肥G上TAd士/.口.口3收付中00力式0十十18伙恒少傳也奇

31、汗布dnPti1ar'T、fosc/120l力Al10MUARIff1011方式2方式311位UART11位UARTosc口交(/64、。sc/321定時(shí)器控制)2 .何謂波特率、溢出率?如何計(jì)算和設(shè)置MCS-51系列單片機(jī)串行通信的波特率?波特率是串行數(shù)據(jù)傳輸中,串行口每秒鐘發(fā)送(或接收)的二進(jìn)制位數(shù)稱為波特率,單位是b/s(位/秒)。溢出率是指定時(shí)器T1作為波特率發(fā)生器使用時(shí)的溢出頻率,其大小為溢出周期之倒數(shù)在方式0時(shí),每個(gè)機(jī)器周期發(fā)送或接收一位數(shù)據(jù),因此波特率固定為振蕩頻率的l/12,且不受SMOD位的控制。方式2的波特率要受PCON中SMOD位的控制,波特率=fosc/(64/

32、2SMOD),當(dāng)SMOD設(shè)置為“0”時(shí),波特率等于fosc/64,若SMOD設(shè)置為“1”時(shí),則波特率等f(wàn)osc/32。方式1或方式3時(shí),其波特率由定時(shí)器/計(jì)數(shù)器T1的溢出率與SMOD位共同控制。其波特率可表示為:波特率=T1的溢出率/(32/2SMOD)3 .為什么T1用作串行口波特率發(fā)生器時(shí),常選用操作方式2?定時(shí)器T1工作于方式2是8位的自動(dòng)重裝方式,這樣就避免了由于軟件裝載引起的誤差,故通常將T1設(shè)置為方式2,作為波特率發(fā)生器。4 .串行口控制寄存器SCON中TB8、RB8起什么作用?在什么方式下使用?TB8和RB8:方式2和方式3時(shí)發(fā)送和接受的第9位數(shù)據(jù)。在雙機(jī)通信中可以作為奇偶校驗(yàn)位

33、,在多機(jī)通信中,可作為地址和數(shù)據(jù)的區(qū)別第八章習(xí)題答案1 .地址譯碼方法包括線選法和譯碼法。其中譯碼法又分為部分地址譯碼法和全地址譯碼法。全地址譯碼法是將各擴(kuò)展芯片上的地址線均接到單片機(jī)系統(tǒng)對(duì)應(yīng)的地址總線上,剩余的全部地址線全部連接到譯碼器上,各芯片的片選信號(hào)由譯碼電路產(chǎn)生,因此得到的每個(gè)選中單元的地址都是唯一的。而部分譯碼法是將部分剩余高位地址線通過(guò)譯碼的方式生成外設(shè)地址,所以地址可能不唯一。2 .不會(huì)。這是因?yàn)樵L問(wèn)外部程序存儲(chǔ)器使用MOVC指令,而訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器和IO采用MOVX指令,兩者對(duì)應(yīng)的時(shí)序和控制信號(hào)是不同的,總線不會(huì)沖突。3.電路如下所示O6264(1)地址范圍:0000H1F

34、FFH;6264(2)地址范圍:2000H3FFFH;2764(1)地址范圍:0000H1FFFH;2764(2)地址范圍:2000H3FFFH;4.8255IO口有三種工作方式基本輸入/輸出、選通輸入/輸出、雙向選通輸入輸出方式。其中通過(guò)其控制寄存器設(shè)定。8155A有四種IO工作方式,包含基本IO和選通IO等組合,也需通過(guò)其控制寄存器進(jìn)行配置。5 .設(shè)8255控制寄存器地址為XXH,則A口工作與方式2,則B口只能工作與方式0。8255初始化程序:MOVA,#11000010BMOVDPTR,#XXHMOVXDPTR,A6 .單片機(jī)晶振頻率為12Mhz,將其24分頻,工作頻率為500K,要獲得

35、10ms定時(shí),需要對(duì)該信號(hào)計(jì)數(shù)5000次。對(duì)應(yīng)十六進(jìn)制數(shù)1388H,設(shè)只需要進(jìn)行單次10ms計(jì)數(shù),則定時(shí)計(jì)數(shù)器M2M1=00,設(shè)控制口地址為C0005H。則初始化程序?yàn)椋篗OVDPTR,#0C000HMOVA,#00000101BMOVDPTR,AMOVDPTR,#0C004HMOVA,#88HMOVDPTR,AMOVA,#13HINCDPTRMOVDPTR,AMOVA,#11000101B則定時(shí)器低位寄存器為88H,高位為C000H,則定時(shí)計(jì)數(shù)器低位地址為13H。C0004H,定時(shí)計(jì)數(shù)器高位地址為;8155IO工作方式3,A輸出,;裝入初值低8位;裝入初值高8位;啟動(dòng)定時(shí)器B輸入C51參考程

36、序:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar keyscan();void delay(uint x);3.參考電路圖如下:uchar HSM,LJC;uchar tmp,keyvalue;9.1節(jié)第一部分。判斷鍵是否釋放第九章參考答案1 .參看9.1節(jié)第二部分(二)矩陣式鍵盤。2 .分為軟件消抖和硬件消抖兩種方法。去抖方法參看方法:計(jì)算鍵值以后,再以延時(shí)和掃描/*函數(shù)名稱:main()函數(shù)功能:主函數(shù),鍵值處理*/voidmain()while(1)tmp=keyscan(

37、);switch(tmp)case0x11:P0=0x3f;/0break;case0x21:P0=0x06;/1break;case0x41:P0=0x5b;/2break;case0x81:P0=0x4f;/3break;case0x12:P0=0x66;/4break;case0x22:P0=0x6d;/5break;case0x42:P0=0x7d;/6break;case0x82:P0=0x07;/7break;case0x14:P0=0x7f;/8break;case0x24:P0=0x6f;/9break;case0x44:P0=0x77;/Abreak;case0x84:P0=

38、0x7c;/Bbreak;case0x18:P0=0x39;/Cbreak;case0x28:P0=0x5e;/Dbreak;case0x48:P0=0x79;/Ebreak;case0x88:P0=0x71;/Fbreak;default:P0=0x00;delay(100);/*函數(shù)名稱:voiddelay(uintx)函數(shù)功能:延時(shí)xms,振蕩器頻率為f=12MHz*/voiddelay(uintx)ucharj,k;for(;x>0;x-)for(j=4;j>0;j-)for(k=250;k>0;k-);/*函數(shù)名稱:voidkeyscan()函數(shù)功能:鍵盤掃描及按鍵

39、處理*/ucharkeyscan()P1=0xf0;LJC=P1&0xf0;/ 行掃描全為低電平,列線全為高電平/ 第一次讀列檢測(cè)狀態(tài)if(LJC!=0xf0)delay(10);LJC=P1&0xf0;if(LJC!=0xf0)/若有鍵盤被按下,則延時(shí)/第二次讀取列檢測(cè)狀態(tài):/若有閉合鍵,則逐行掃描10ms0xe0、0xd0、0xb0、0x70HSM=0xfe;/掃描碼分別為0xfe、0xfd、0xfb、0xf7while(HSM&0x10)!=0)/若掃描碼為0xef,則結(jié)束掃描P1=HSM;/輸出行掃描碼LJC=P1&0xf0;/讀列檢測(cè)數(shù)據(jù):0xe0、0

40、xd0、0xb0、0x70if(LJC!=0xf0)/如果有按鍵閉合keyvalue=(HSM)+(LJC|0x0f);/計(jì)算鍵盤值return(keyvalue);/返回鍵值/ 行掃描左移 1 位,準(zhǔn)備掃描下一行elseHSM=(HSM<<1)|0x01;return(0x00);匯編語(yǔ)言參考程序:ORG00HLJMPMAINMAIN:LCALLKEYJUDGELCALLKEYSCANLCALLDISPLJMPMAINKEYJUDGE:MOVP3,#0F0HMOVA,P3XRLA,#0F0HJNZDELAYLJMPMAINDELAY:MOVR4,#08HLOOP1:MOVR5,#

41、0FAHLOOP2:DJNZR5,LOOP2DJNZR4,LOOP1MOVP3,#0F0HMOVA,P3XRLA,#0F0HJZMAINRETKEYSCAN:MOVR0,#00HMOVR1,#00HMOVR2,#0FEHMOVR3,#04HKEY:MOVP3,R2KEY0:JBP3.4,KEY1MOVR1,#00HLJMPNUMKEY1:JBP3.5,KEY2MOVR1,#04HLJMPNUMKEY2:JBP3.6,KEY3MOVR1,#08HLJMPNUMKEY3:JBP3.7,NEXTMOVR1,#0CHLJMPNUMNEXT:INCR0MOVA,R2RLAMOVR2,ADJNZR3,KE

42、YLJMPNUMNUM:MOVA,R0ADDA,R1MOVDPTR,#TABMOVCA,A+DPTRMOVR6,ARETDISP:MOVP0,R6LCALLDELAY1RETDELAY1:MOVR4,#0FHLOOP10:MOVR5,#0FAHLOOP20:DJNZR5,LOOP20DJNZR4,LOOP10RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND4 .靜態(tài)顯示:靜態(tài)顯示方式要求每位LED顯示器的公共端(COM)必須接地(共陰極),或接高電平(共陽(yáng)極)。而每位LED顯示器都由一個(gè)具有

43、鎖存功能的8位端口去控制。動(dòng)態(tài)顯示:把所有顯示器的同名字段互相連接在一起,弁把它們連到字形口上。為了防止各個(gè)顯示器同時(shí)顯示出相同的字符,每個(gè)顯示器的公共端(COM)還要受另一組信號(hào)控制,即把它們接到字位口上。這樣對(duì)于一組LED數(shù)碼顯示器需要有兩種信號(hào)控制:一組是字形口輸出的字形碼,用來(lái)控制顯示內(nèi)容;另一組是字位口輸出的字位碼,用來(lái)控制將字符顯示在第幾位顯示器上。在這兩組信號(hào)的控制下使各個(gè)顯示器依次從左至右輪流點(diǎn)亮一遍,過(guò)一段時(shí)間再輪流點(diǎn)亮一遍,如此不斷重復(fù)。雖然在任意時(shí)刻只有一位顯示器被點(diǎn)亮,但由于顯示器具有余輝效應(yīng),而人眼又具有視覺(jué)惰性,所以看起來(lái)與全部顯示器持續(xù)點(diǎn)亮效果完全一樣。字形碼:為

44、了將數(shù)字或字符在LED顯示器上輸出,把數(shù)字或字符在LED顯示器上顯示時(shí)所對(duì)應(yīng)的發(fā)光二級(jí)管狀態(tài)按照一定順序進(jìn)行編碼,稱為字形碼。LED顯示器的字形碼分為共陽(yáng)LED編碼和共陰LED編碼。5 .電路圖參考圖9-10.C51參考程序:#include<reg51.h>#defineucharunsignedcharunsignedcharcodetable=0x0c0,0x0f9,0x0a4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x92;Ucharsec,mSec;Voidmain()UcharshowData;Sec=0;mSec=0;TMOD=0x10;T1

45、模式1,定時(shí)TH1=0xd8;/T1計(jì)數(shù)初值TL1=0x0f0;EA=1;/CPU、T1開(kāi)中斷ET1=1;TR1=1;/啟動(dòng)T1While(1)If(sec%2=0)showData=2;Display(showData);showData=0;Display(showData);showData=1;Display(showData);showData=6;Display(showData);ElseshowData=2;Display(showData);showData=0;Display(showData);showData=4;Display(showData);showData=9

46、;Display(showData);Voiddisplay(unsignedcharindx)unsignedchartemp=tableindx;SBUF=temp;While(!TI)TI=0;voidtimer1()interrupt3TH1=0x0d8;/T1計(jì)數(shù)初值TH1=0x0f0;mSec+;If(mSec=100)Sec+;mSec=0;匯編語(yǔ)言程序ORG00HLJMPMAINORG001BHLJMPINT1ORG0030HMAIN:MOVTMOD,#01H;選T1方式1,晶振12MHZ,定時(shí)50msMOVTH1,#3CH;賦初值高8位MOVTL1,#0B0H;賦初值低8位S

47、ETBTR1;啟動(dòng)T1定時(shí)SETBET1;開(kāi)T1中斷允許MOVR0,#00HSETBEA;開(kāi)總中斷允許DIS:MOVA,#2ACALLDSPLYMOVA,#0ACALLDSPLYMOVA,#1ACALLDSPLYMOVA,#6ACALLDSPLYCJNER0,#14H,DISDIS1:MOVR0,#0MOVA,#2ACALLDSPLYMOVA,#0ACALLDSPLYMOVA,#4ACALLDSPLYMOVA,#9ACALLDSPLYCJNER0,#14H,DIS1MOVR0,#0AJMPDISDSPLY:MOVDPTR,#TABLEMOVCA,A+DPTRMOVSBUF,AJNBTI,$CL

48、RTIRETINT1:MOVTH1,#3CH;賦初值高8位MOVTL1,#0B0H;賦初值低8位INCR0RETITABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90HEND6.電路圖參考圖9-6和圖9-20。圖9-6對(duì)應(yīng)匯編程序?qū)崿F(xiàn)把鍵值存放到A中,調(diào)用鍵掃描后程序后,只需要把A中內(nèi)容用傳送指令MOV40H,A指令即可把鍵值存儲(chǔ)40H單元。至于題目中要求2秒鐘掃描一次鍵盤,需要2秒鐘定時(shí),可以把題目5中的1秒鐘定時(shí)中斷服務(wù)程序作如下修改即可:C51參考程序:voidtimer1()interrupt3TH1=0x0d8;/T1計(jì)數(shù)初值TH

49、1=0x0f0;mSec+;If(mSec=200)Sec+;Key=keyscan();在主程序中等待key的改變,根據(jù)不同的key值作出相應(yīng)的輸出。匯編語(yǔ)言參考程序:ORG00HLJMPMAINORG001BHLJMPINT1ORG0030HMAIN :MOVTMOD , #01H;選 T1方式 1 ,晶振 12MHZ ,定時(shí) 50msMOVTH1 , #3CH ;賦初值高 8 位MOVTL1,#0B0H;賦初值低8位SETBTR1;啟動(dòng)T1定時(shí)SETBET1;開(kāi)T1中斷允許MOVR0,#00HMOVR1,#40HSETBEA;開(kāi)總中斷允許SCANKEY:CJNER0,#3CH,SCANK

50、EY;3秒鐘掃描一次鍵盤MOVR0,#00HLCALLKEY1;KEY1為按鍵掃描子程序,鍵值存放A中MOVR1,AINCR140H單元開(kāi)始存鍵值CJNER1,#7FH,SCANKEY;若地址超過(guò)7FH,重新MOVR1,#40HAJMPSCANKEYINT1:MOVTH1,#3CH;賦初值高8位MOVTL1,#0B0H;賦初值低8位INCR0RETI第十章習(xí)題答案1.啟動(dòng)AD轉(zhuǎn)換器的方法,在芯片選中的情況下,在START端口施加200ns以上的正脈沖即可啟動(dòng)ADC0809。單片機(jī)可通過(guò)查詢EOC信號(hào)判斷ad轉(zhuǎn)換是否完成。可通過(guò)定時(shí)/查詢/中斷的方式讀取AD轉(zhuǎn)換的結(jié)果。©Tb ?被StUS itr *TO n wSL Xntl 猊 Imi墟口 IDMDI73ACDS320 2并pXFFy 前 Tmii 泡 Xntt皿EA參考電路圖2.雙緩沖方式是指DAC0832內(nèi)部?jī)蓚€(gè)寄存器均處于受控狀態(tài)的工作

溫馨提示

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