《單片機(jī)原理及應(yīng)用》習(xí)題答案-孫寶法_第1頁(yè)
《單片機(jī)原理及應(yīng)用》習(xí)題答案-孫寶法_第2頁(yè)
《單片機(jī)原理及應(yīng)用》習(xí)題答案-孫寶法_第3頁(yè)
《單片機(jī)原理及應(yīng)用》習(xí)題答案-孫寶法_第4頁(yè)
《單片機(jī)原理及應(yīng)用》習(xí)題答案-孫寶法_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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)介

習(xí)題答案習(xí)題1一、選擇題1.B2.C3.C4.C5.B二、填空題1.微控制器;嵌入式微控制器2.CPU;存儲(chǔ)器;I/O口3.Flash存儲(chǔ)器4.8751三、簡(jiǎn)答題1.MCS-51系列單片機(jī)的基本型芯片分別是8031、8051和8751。它們的差別是在片內(nèi)程序存儲(chǔ)器上。8031無(wú)片內(nèi)程序存儲(chǔ)器,8051片內(nèi)有4KB的程序存儲(chǔ)器ROM,而8751片內(nèi)集成有4KB的程序存儲(chǔ)器EPROM。2.MCS-51系列單片機(jī)是Intel公司生產(chǎn)的單片機(jī)的系列符號(hào),而51系列單片機(jī)是指世界各個(gè)廠(chǎng)家生產(chǎn)的所有與8051的內(nèi)核結(jié)構(gòu)、指令系統(tǒng)兼容的單片機(jī)。習(xí)題2一、選擇題1.D2.B3.B4.C5.C6.B7.B8.A9.A10.D二、填空題1.8;02.16;64KB3.內(nèi)部RAM的00H~7FH;84.PC;PC5.4;00H;1FH6.128;28H7.50H;88H8.8位并行的;P0;P1、P2、P3;地址總線(xiàn)9.12;1μs;12μs10.按下復(fù)位按鈕;211.04H;00H;012.07H;08H三、簡(jiǎn)答題1.AT89C51片內(nèi)都集成下列功能部件:(1)1個(gè)微處理器(CPU);(2)128個(gè)數(shù)據(jù)存儲(chǔ)器(RAM)單元;(3)4KBFlash程序存儲(chǔ)器;(4)4個(gè)8位可編程并行I/O口(P0口、P1口、P2口、P3口);(5)1個(gè)全雙工串行口;(6)2個(gè)16位定時(shí)器/計(jì)數(shù)器;(7)一個(gè)中斷系統(tǒng),5個(gè)中斷源,2個(gè)優(yōu)先級(jí);(8)21個(gè)特殊功能寄存器(SFR)。2.當(dāng)接低電平時(shí),只訪(fǎng)問(wèn)外部程序存儲(chǔ)器,地址為0000H~FFFFH。此時(shí),片內(nèi)4KB的程序存儲(chǔ)器沒(méi)有用到。當(dāng)接+5V高電平時(shí),首先訪(fǎng)問(wèn)片內(nèi)4KB的程序存儲(chǔ)器,當(dāng)PC值超過(guò)0FFFH時(shí),即超出片內(nèi)程序存儲(chǔ)器的4KB地址范圍時(shí),自動(dòng)轉(zhuǎn)向外部程序存儲(chǔ)器執(zhí)行程序。此時(shí),片外4KB的程序存儲(chǔ)器沒(méi)有用到。3.5個(gè)中斷源的中斷服務(wù)子程序的入口地址見(jiàn)下表。中斷源中斷服務(wù)子程序入口地址外部中斷0())0003H000BH0013H001BH0023H定時(shí)器T0(T0)外部中斷1(定時(shí)器T1(T1)串行口4.讀外部ROM的控制線(xiàn)是,讀外部RAM的控制線(xiàn)是P3.6()、P3.7()。5.P3口各個(gè)引腳的第二功能如下表所示。引腳P3.0P3.1第二功能RXD第二功能功能說(shuō)明串行口輸入端串行口輸出端TXDP3.2P3.3P3.4P3.5P3.6P3.7外部中斷0輸入端外部中斷1輸入端定時(shí)器/計(jì)數(shù)器0外部信號(hào)輸入端定時(shí)器/計(jì)數(shù)器1外部信號(hào)輸入端外部RAM寫(xiě)選通信號(hào)輸出端T0T1外部RAM讀選通信號(hào)輸出端6.讀寫(xiě)位地址與字節(jié)地址不會(huì)混淆,因?yàn)樽x寫(xiě)位地址的指令與讀寫(xiě)字節(jié)地址的指令不同。AT89C51硬件系統(tǒng)中有一個(gè)布爾處理器,它是一個(gè)1位處理器,它把程序狀態(tài)字PSW的進(jìn)位標(biāo)志位Cy作為自己的累加器,把位尋址區(qū)的各個(gè)位作為自己的存儲(chǔ)器。從指令方面來(lái)說(shuō),有一個(gè)進(jìn)行布爾操作的指令集,包括位變量的傳送、修改、邏輯運(yùn)算等。7.AT89C51有21個(gè)特殊功能寄存器,可以位尋址的特殊功能寄存器有11個(gè),可以進(jìn)行位尋址的位有83個(gè)。習(xí)題3一、選擇題1.C2.B3.C4.D5.B6.D7.A8.D9.C10.A11.A12.D二、填空題1.操作碼;操作數(shù);注釋?zhuān)徊僮鞔a2.后進(jìn)先出,或先進(jìn)后出3.A;PC;DPTR4.MOVCA,@A+PC;MOVCA,@A+DPTR5.1031H6.程序;數(shù)據(jù)7.2H;30H;70H8.3CH;5FH;50H9.5CH10.00H;0AAH11.0CBH12.213.1002H14.1032H15.1003H16.子程序返回指令;中斷服務(wù)子程序返回指令三、判斷題1.×2.×3.√4.×5.×6.×7.×8.√9.×10.√11.√12.×13.×14.√15.√16.×17.×18.×19.×20.×四、簡(jiǎn)答題1.指令是CPU用來(lái)執(zhí)行某種操作的命令。一條指令只能完成一種操作,功能是有限的。為了使單片機(jī)具有更多的功能,能夠完成復(fù)雜的任務(wù),就需要一系列的指令,單片機(jī)能夠執(zhí)行的各種指令的集合,稱(chēng)為它的指令系統(tǒng)。2.偽指令也稱(chēng)為匯編程序控制命令,是程序員發(fā)給匯編程序的命令,不屬于指令系統(tǒng)中的匯編語(yǔ)言指令。偽指令的功能是,控制匯編程序的輸入輸出、定義數(shù)據(jù)和符號(hào)、條件匯編、分配存儲(chǔ)空間等。只有在匯編前的源程序中才有偽指令,經(jīng)過(guò)匯編得到目標(biāo)程序(機(jī)器代碼)后,偽指令已無(wú)存在的必要。因此,偽指令的“偽”字主要體現(xiàn)在:匯編時(shí),偽指令沒(méi)有相應(yīng)的機(jī)器代碼產(chǎn)生。3.只能采用直接尋址方式。五、程序題1.A的內(nèi)容與B的內(nèi)容互換。2.(1)ANLA,#87H(2)ORLA,#0CH3.分步寫(xiě)出下列程序每條指令的運(yùn)行結(jié)果。MOVA,#83HMOVR0,#47HMOV47H,#34HANLA,#47H;(A)=83H;(R0)=47H;(47H)=34H;(A)=03HORL47H,AXRLA,@R0習(xí)題4;(A)=03H,(47H)=37H;(A)=37H一、填空題1.順序結(jié)構(gòu);分支結(jié)構(gòu);循環(huán)結(jié)構(gòu)2.ASM3.單分支的嵌套;散轉(zhuǎn)指令4.先執(zhí)行后判斷;先判斷后執(zhí)行5.計(jì)數(shù)控制法;條件控制法6.主程序;子程序二、簡(jiǎn)答題1.首先把程序用助記符指令寫(xiě)出,然后通過(guò)查指令表,逐個(gè)把助記符指令“翻譯”成機(jī)器代碼,這種人工查表“翻譯”指令的方法稱(chēng)為手工匯編。機(jī)器匯編是借助于微型計(jì)算機(jī)上的軟件(匯編程序)來(lái)代替手工匯編,完成把助記符指令“翻譯”成機(jī)器代碼的工作。使用微型計(jì)算機(jī)來(lái)完成匯編,而匯編后得到的機(jī)器代碼卻是在另一臺(tái)單片機(jī)上運(yùn)行,稱(chēng)這種機(jī)器匯編為交叉匯編。反匯編是將二進(jìn)制的機(jī)器代碼語(yǔ)言程序翻譯成匯編語(yǔ)言源程序的過(guò)程。2.(1)保持子程序的獨(dú)立性與通用性。子程序是能完成某一特定任務(wù)的程序段,為所有調(diào)用程序所共享。因此,子程序在結(jié)構(gòu)上應(yīng)具有獨(dú)立性,在功能上應(yīng)具有通用性。(2)注意現(xiàn)場(chǎng)保護(hù)與恢復(fù)。通常在調(diào)用子程序后,由子程序前部操作完成現(xiàn)場(chǎng)保護(hù),再由子程序后部操作完成現(xiàn)場(chǎng)恢復(fù)。當(dāng)用堆棧保護(hù)現(xiàn)場(chǎng)時(shí),應(yīng)該注意恢復(fù)現(xiàn)場(chǎng)的順序,后進(jìn)先出,不能搞錯(cuò)。(3)保證參數(shù)的正確傳遞。在調(diào)用子程序時(shí),主程序應(yīng)該先把有關(guān)參數(shù)(入口參數(shù))放到某些約定的位置,如累加器A、寄存器、堆棧等。子程序在運(yùn)行時(shí),從約定的位置取到有關(guān)參數(shù)。在子程序運(yùn)行結(jié)束前,應(yīng)該把運(yùn)行結(jié)果(出口參數(shù))送到約定的位置。在返回主程序后,主程序可以從這些位置得到所需的結(jié)果。(4)子程序可以嵌套,即子程序也可以調(diào)用另外的子程序。3.指令“MOVCA,@A+PC”的功能是,把A的內(nèi)容作為無(wú)符號(hào)數(shù),與PC的內(nèi)容相加,所得的16位數(shù)作為程序存儲(chǔ)器中某一單元的地址,然后把該地址單元中的內(nèi)容送到累加器A中。PC作為基址寄存器,執(zhí)行完這條指令后,PC的內(nèi)容不變,仍指向查表指令的下一條指令。因此,用這條指令調(diào)用子程序時(shí),不必保護(hù)PC的值。使用這條指令的優(yōu)點(diǎn)是,預(yù)處理較少,且不影響其他特殊功能寄存器的值,不必保護(hù)其他特殊功能寄存器的原值。使用這條指令的缺點(diǎn)是,表格只能存放在這條指令的地址X3X2X1X0以下的00~FFH之中,即X3X2X1X0+1~X3X2X1X0+100H,因此,表格的長(zhǎng)度不能超過(guò)256B,且表格只能存放于該指令以下的256個(gè)單元中。另外,由于PC的值并不是表格的首地址,因此,要在執(zhí)行該指令前加上一條指令“ADDA,#data”。三、匯編與反匯編1.740875F07625F00210002.4D41494E1234300000703.MOVR7,APUSHAMOVA,BMOVX@DPTR,A四、閱讀并分析程序題1.(A)=55,(R2)=0。2.(A)=80H,SP=40H,(41H)=50H,(42H)=80H,PC=8050H。3.(1)SP=SP+1=61H,(61H)=PC的低字節(jié)=03H;SP=SP+1=62H,(62H)=PC的高字節(jié)=20H。(2)PC=3456H。(3)不可以。目標(biāo)地址3456H與指令A(yù)CALL的下一條指令的第一個(gè)字節(jié)的地址2002H不在同一個(gè)2KB的區(qū)域內(nèi)。(4)2KB=2048Byte。五、程序設(shè)計(jì)題1.參考程序如下:MOVA,45HANLA,#0FHMOV45H,A2.參考程序如下:START:MOVR0,#30HMOVR2,#21HLOOP:MOVA,@R0CJNEA,#0AAH,NEXTMOV51H,#01HLJMPEXITNEXT:INCR0DJNZR2,LOOPMOV51H,#00HEXIT:RET3.參考程序如下:START:MOV41H,#0MOVR0,#20HMOVR2,#21HLOOP:MOVA,@R0JNZINCNEXT41HNEXT:INCR0DJNZR2,LOOPRET4.參考程序如下:MAXEQU60HMOVR0,21HMOVR2,#20HDECR2MOVA,@R0LOOP:MOVMAX,AINCR0CLRCSUBBA,@R0JNCLOOP1;兩個(gè)數(shù)比較;C=0,A中的數(shù)大,跳LOOP1;C=1,A中的數(shù)小,把大數(shù)送AMOVA,@R0SJMPLOOP2LOOP1:MOVA,MAXLOOP2:DJNZR2,LOOPMOVMAX,A;存最大數(shù)5.設(shè)進(jìn)入查表程序前,路數(shù)x(x=0~15)已放于R2中,查表后,最大允許值y放在R3、R4中。參考子程序如下:TB:MOVA,R2ADDA,R2;(R2)×2→(A),因?yàn)楸碇袛?shù)據(jù)為雙字節(jié)數(shù)MOVR3,A;保存指針MOVDPTR,TABMOVCA,@A+DPTR;查第一字節(jié)XCHA,R3ADDA,#1MOVCA,@A+DPTRMOVR4,ARET;查第二字節(jié)TAB:DW1520,3721,42645,7580DW3483,32657,883,9943DW10000,40511,6758,8931DW4468,5871,13284,27808習(xí)題5;最大允許值表一、選擇題1.D2.D3.B4.A5.A6.D7.B8.C9.D二、填空題1.2;IE;IP2.0013H;001BH3.跳沿觸發(fā)方式;0;IT1;14.TL0;TH0;TH0;TH15.1;06.外部中斷1;定時(shí)器T17.RETI8.PC、PC、程序存儲(chǔ)器三、簡(jiǎn)答題1.一個(gè)中斷請(qǐng)求被CPU響應(yīng)的條件:(1)IE寄存器中的中斷總允許位EA=1。(2)該中斷源發(fā)出中斷請(qǐng)求,即該中斷源對(duì)應(yīng)的中斷請(qǐng)求標(biāo)志為1。(3)該中斷源的中斷允許標(biāo)志位為1。(4)CPU不在處理同級(jí)或高優(yōu)先級(jí)的中斷。(5)所查詢(xún)的機(jī)器周期是當(dāng)前正在執(zhí)行指令的最后一個(gè)機(jī)器周期。(6)正在執(zhí)行的指令不是返回指令RET、RETI,或是訪(fǎng)問(wèn)IE、IP的指令。2.關(guān)于各中斷源的中斷優(yōu)先級(jí)關(guān)系,有下面兩條基本規(guī)則:(1)低優(yōu)先級(jí)可被高優(yōu)先級(jí)中斷,反之則不能。(2)任何一個(gè)中斷,一旦得到響應(yīng),就不會(huì)被與它同級(jí)的中斷源所中斷。3.RETI指令在返回時(shí),同時(shí)清除中斷系統(tǒng)中相應(yīng)的優(yōu)先級(jí)觸發(fā)器,以允許下次中斷,而RET指令則沒(méi)有這個(gè)操作。除此之外,其他操作都相同。4.(1)為了防止在執(zhí)行中斷服務(wù)子程序時(shí)破壞這些數(shù)據(jù)或狀態(tài),導(dǎo)致在中斷返回后影響主程序的運(yùn)行,需要把它們送入堆棧保存起來(lái)。這就是現(xiàn)場(chǎng)保護(hù)。(2)現(xiàn)場(chǎng)是指中斷時(shí)單片機(jī)中某些存儲(chǔ)器單元中的數(shù)據(jù)。需要進(jìn)行現(xiàn)場(chǎng)保護(hù)的通常有程序狀態(tài)字PSW、累加器A、工作寄存器Rn等。(3)中斷處理結(jié)束后,在返回主程序前,需要把保存的現(xiàn)場(chǎng)內(nèi)容從堆棧中彈出,以恢復(fù)那些寄存器和存儲(chǔ)器單元中的原有內(nèi)容。這就是現(xiàn)場(chǎng)恢復(fù)?,F(xiàn)場(chǎng)恢復(fù)是現(xiàn)場(chǎng)保護(hù)的逆過(guò)程。5.由于每個(gè)中斷源的中斷區(qū)只有8個(gè)單元,一般難以安排一個(gè)完整的中斷服務(wù)子程序,因此,通常在各中斷區(qū)入口地址處放置一條無(wú)條件轉(zhuǎn)移指令,使程序轉(zhuǎn)向存放中斷服務(wù)子程序的其他地址執(zhí)行。6.定時(shí)器/計(jì)數(shù)器在工作方式0下的最大定時(shí)時(shí)間為32.768ms;在方式1下的最大定時(shí)時(shí)間為262.144ms;在方式2下的最大定時(shí)時(shí)間為1024ms。7.定時(shí)器/計(jì)數(shù)器用作定時(shí)器時(shí),其計(jì)數(shù)脈沖由系統(tǒng)振蕩器產(chǎn)生的內(nèi)部時(shí)鐘信號(hào)12分頻后提供。定時(shí)時(shí)間與時(shí)鐘頻率和定時(shí)初值有關(guān)。8.由于確認(rèn)1次負(fù)跳變要花2個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。9.定時(shí)器/計(jì)數(shù)器的工作方式2具有自動(dòng)恢復(fù)初值的特點(diǎn),適用于精確定時(shí),如波特率的產(chǎn)生。10.采用方式1定時(shí)工作方式。最大脈沖寬度為131.072ms。四、程序設(shè)計(jì)題1.參考程序如下:SETBIT1SETBEX1SETBEA2.參考程序如下:ORG0000HLJMPMAINORG0013HLJMPINT_EX1ORG0030HMAIN:CLRIT0;采用電平觸發(fā),低電平有效中斷SETBSETBEX1EA;允許外部中斷1WAIT:LJMPWAIT;用原地跳轉(zhuǎn)代替一段用戶(hù)程序;以下為外部中斷1服務(wù)子程序INT_EX1:JNBP1.2,NEXT1;P1.2=0,不是3號(hào)中斷,跳轉(zhuǎn)NEXT1LJMPINT_IR3;是3號(hào)中斷,跳轉(zhuǎn)到對(duì)應(yīng)的中斷處理程序NEXT1:JNBP1.1,NEXT2;P1.1=0,不是2號(hào)中斷,跳轉(zhuǎn)NEXT2LJMPINT_IR2;跳轉(zhuǎn)到2號(hào)中斷處理程序NEXT2:LJMPINT_IR1ORG1000H;跳轉(zhuǎn)到1號(hào)中斷處理程序INT_IR3:相應(yīng)中斷處理程序RETI;中斷返回ORG1100HINT_IR2:相應(yīng)中斷處理程序RETI;中斷返回ORG1200HINT_IR1:相應(yīng)中斷處理程序RETI;中斷返回3.定時(shí)器/計(jì)數(shù)器T0在計(jì)數(shù)和定時(shí)工作完成后,均采用中斷方式工作。除了第一次計(jì)數(shù)工作方式設(shè)置在主程序完成外,后面的定時(shí)或計(jì)數(shù)工作方式分別在中斷程序完成,用一標(biāo)志位識(shí)別下一輪定時(shí)器/計(jì)數(shù)器T0的工作方式。參考程序如下:ORG0000HLJMPMAINORG000BHLJMPIT0PMAIN:MOVTMOD,#06H;定時(shí)器/計(jì)數(shù)器T0為計(jì)數(shù)方式2MOVMOVSETBSETBSETBSETBCLRF0TL0,#156TH0,#156GATE;計(jì)數(shù)100個(gè)脈沖的初值賦值;打開(kāi)計(jì)數(shù)門(mén);啟動(dòng)T0,開(kāi)始計(jì)數(shù);允許T0中斷TR0ET0EA;CPU開(kāi)中斷;設(shè)置下一輪定時(shí)方式的標(biāo)志位WAIT:AJMPWAITIT0P:CLREA;CPU關(guān)中斷JBF0,COUNT;F0=1,轉(zhuǎn)計(jì)數(shù)方式設(shè)置;定時(shí)器/計(jì)數(shù)器T0為定時(shí)方式0;定時(shí)1ms初值賦值MOVTMOD,#00HMOVTH0,#0FEHMOVTL0,#0CHSETBEARETICOUNT:MOVTMOD,#06HMOVTL0,#156SETBEARETI4.根據(jù)題意,從P1.0輸出的矩形脈沖的高低電平的時(shí)間為10∶1,則高低電平的時(shí)間分別為363.63μs和36.37μs。如果系統(tǒng)采用6MHz晶振,Tcy=2μs,因此高低電平輸出取整,則約為364μs和36μs。參考程序如下:ORG0000HLJMPMAINORG000BHLJMPIT0PMAIN:MOVTMOD,#02H;定時(shí)器/計(jì)數(shù)器T0為定時(shí)方式2;定時(shí)364s初值賦值;啟動(dòng)T0,開(kāi)始計(jì)數(shù)MOVTL0,#4AHSETBTR0SETBET0;允許T0中斷;CPU開(kāi)中斷SETBEASETBP1.0WAIT:AJMPWAITIT0P:CLREACLRP1.0;關(guān)中斷MOVR0,#9DLY:DJNZR0,DLYMOVTL0,#4AH;延時(shí)36μs;定時(shí)364μs初值賦值SETBP1.0SETBEARETI5.將P1.1的輸入脈沖接入T0,即使用T0計(jì)數(shù)器完成對(duì)P1.1口的脈沖計(jì)數(shù)。參考程序如下:MOVTMOD,#05HMOVTL0,#00H;定時(shí)器/計(jì)數(shù)器T0為計(jì)數(shù)方式1MOVTH0,#00HMAIN:JNBP1.0,MAINSETBTR0;啟動(dòng)T0,開(kāi)始計(jì)數(shù)WAIT:JBP1.2,WAITCLRTR0MOVR1,TH0MOVR0,TL0AJMP$;原地踏步習(xí)題6一、選擇題1.A2.C3.D4.A5.B6.D二、填空題1.輸入;輸出2.單工;半雙工;全雙工3.共用同一個(gè)地址99H4.異步串行通信5.方式16.相等7.TX;RX8.RI;1;19.?dāng)?shù)據(jù)幀;地址幀10.SM2三、簡(jiǎn)答題1.當(dāng)接收方檢測(cè)到RXD引腳上的有效的負(fù)跳變時(shí),即可知道發(fā)送方開(kāi)始發(fā)送數(shù)據(jù)。2.串行口有4種工作方式:方式0、方式1、方式2、方式3。有3種幀格式,方式2和3具有相同的幀格式。方式0的發(fā)送和接收都以fosc/12為固定波特率。方式1的波特率=2SMOD/32×定時(shí)器T1的溢出率。方式2的波特率=2SMOD/64×fosc。方式3的波特率=2SMOD/32×定時(shí)器T1的溢出率。3.串行口的方式0為同步移位寄存器輸入/輸出方式,常用于外接移位寄存器,以擴(kuò)展并行I/O口,一般不用于兩個(gè)89C51之間的串行通信。該方式以fosc/12的固定波特率從低位到高位發(fā)送或接收數(shù)據(jù),不需要起始位和停止位。4.定時(shí)器/計(jì)數(shù)器在方式2下,初值可以自動(dòng)重裝,這樣在進(jìn)行串口波特率發(fā)生器設(shè)置時(shí),就避免了重裝參數(shù)的操作,且減少了重裝參數(shù)的誤差。5.已知時(shí)鐘頻率、通信波特率,根據(jù)公式即可計(jì)算出初值X0。6.串口每秒鐘傳送的字符為1800/60=30個(gè)字符/秒,所以波特率為30個(gè)字符/秒×10位1個(gè)字符=300b/s。7.優(yōu)點(diǎn)是連線(xiàn)簡(jiǎn)單,缺點(diǎn)是抗干擾性能差,傳輸距離短。8.以方式1為例。發(fā)送過(guò)程:數(shù)據(jù)位由TXD端輸出,發(fā)送1幀信息為10位,當(dāng)CPU執(zhí)行1條數(shù)據(jù)寫(xiě)發(fā)送緩沖器SBUF的指變?yōu)橛行?,將起始位向TXDTXD輸出1個(gè)數(shù)據(jù)位。8位數(shù)據(jù)全部輸出完畢后,把中斷標(biāo)令,就啟動(dòng)發(fā)送。發(fā)送開(kāi)始時(shí),內(nèi)部發(fā)送控制信號(hào)輸出,此后,每經(jīng)過(guò)1個(gè)TX時(shí)鐘周期,便產(chǎn)生個(gè)移位脈沖,并由1志位TI置1,然后信號(hào)失效。接收過(guò)程:當(dāng)檢測(cè)到起始位的負(fù)跳變時(shí),則開(kāi)始接收。接收時(shí),定時(shí)控制信號(hào)有2種。其中一種是位檢測(cè)器采樣脈沖,它的頻率是RX時(shí)鐘的16倍。也就是在1位數(shù)據(jù)期間,有16個(gè)采樣脈沖,以波特率的16倍速率采樣RXD引腳狀態(tài),當(dāng)采樣到RXD端從1到0的跳變時(shí)就啟動(dòng)檢測(cè)器,接收的值是3次連續(xù)采樣,取其中2次相同的值,以確認(rèn)是否是真正的起始位的開(kāi)始,這樣能較好地消除干擾引起的影響,以保證可靠無(wú)誤地開(kāi)始接收數(shù)據(jù)。9.經(jīng)過(guò)計(jì)算得定時(shí)器/計(jì)數(shù)器T1的初值為FAH。初始化程序?yàn)椋篗OVTMOD,#20HMOVTH1,#0FAHMOVTL1,#0FAHMOVSCON,#40H習(xí)題7一、選擇題1.A2.D3.D4.C5.C6.B7.B二、填空題1.程序;數(shù)據(jù)2.片選3.2KB;144.165.0FFFH6.80H三、簡(jiǎn)答題1.因?yàn)榭刂菩盘?hào)線(xiàn)的不同。外擴(kuò)的RAM芯片既能讀出又能寫(xiě)入,所以通常都有讀、寫(xiě)控制引腳,記為AT89C51的和,它們分別與和引腳相連。外擴(kuò)的EPROM在正常使用中只能讀出,不能寫(xiě)入,故EPROM芯片沒(méi)有寫(xiě)入控制引腳,只有讀出引腳,,該引腳與AT89C51單片機(jī)的記為相連。2.在AT89C51外擴(kuò)存儲(chǔ)器時(shí),P0口作為低8位地址線(xiàn)和數(shù)據(jù)線(xiàn)復(fù)用。為了將它們分離出來(lái),需要外加地址鎖存器。在AT89C51外擴(kuò)存儲(chǔ)器時(shí),P2口只作為高8位地址線(xiàn),它本身能夠鎖存地址,因此不需要外加地址鎖存器。3.4片程序存儲(chǔ)器的地址范圍分別為0000H~3FFFH、4000H~7FFFH、8000H~BFFFH、C000H~FFFFH。四、程序設(shè)計(jì)題1.本題主要考察對(duì)外部存儲(chǔ)器的讀、寫(xiě)操作的編程,要正確使用MOVX指令。編程思路:首先讀取2001H的值,保存在寄存器A中;將寄存器A的高4位和低4位互換,再屏蔽掉低4位然后將寄存器A的值保存到30H中;再讀取2002H的值,保存在寄存器A中,屏蔽掉高4位;將寄存器A的值與30H進(jìn)行“或運(yùn)算”,將運(yùn)算后的結(jié)果保存在2002H中。ORG0000HMAIN:MOVDPTR,#2001H;設(shè)置數(shù)據(jù)指針的初值MOVXA,@DPTRSWAPA;讀取2001H的值A(chǔ)NLA,#0F0HMOV30H,AINCDPTR;屏蔽掉低4位;保存A;指針指向下一個(gè)片外RAM單元;讀取2002H的值;屏蔽掉高4位MOVXA,@DPTRANLA,#0FHORLA,30H;進(jìn)行拼裝MOVX@DPTR,A;保存到2002H片外RAM單元END2.本題主要考察對(duì)外部數(shù)據(jù)塊的寫(xiě)操作。編程時(shí)要注意循環(huán)次數(shù)和MOVX指令的使用。ORG0000HMAIN:MOVA,#0MOVR0,#0FFH;0給A;設(shè)置循環(huán)次數(shù);設(shè)置數(shù)據(jù)指針的初值MOVDPTR,#4000HLOOP:MOVX@DPTR,A;當(dāng)前單元清0INCDPTRDJNZR0,LOOPEND;指向下一個(gè)單元;是否結(jié)束3.本題是開(kāi)放性的,可以有不同的連接方法。只要控制信號(hào)正確,地址不沖突,不同的連接方法都是允許的。習(xí)題8一、判斷題判斷下列說(shuō)法是否正確,并說(shuō)明理由。1.錯(cuò)誤。82C55不具有三態(tài)緩沖器。2.錯(cuò)誤。82C55的PB口只可以設(shè)置成方式0和方式1。3.錯(cuò)誤。81C55具有地址鎖存功能。4.錯(cuò)誤。在81C55芯片中,引腳IO/、A2、A1、A0決定端口地址和RAM單元編址。5.正確。6.正確。二、簡(jiǎn)答題1.I/O接口是AT89C51與外設(shè)交換信息的橋梁。雖然AT89C51本身有4個(gè)I/O口,但是,真正用于I/O口線(xiàn)的只有P1口的8位和P3口中未用作第二功能的某些位。對(duì)于稍微復(fù)雜一點(diǎn)的測(cè)控系統(tǒng),這幾位I/O口線(xiàn)是不夠的,這就需要擴(kuò)展I/O接口。2.(1)I/O端口簡(jiǎn)稱(chēng)I/O口,常指I/O接口電路中具有端口地址的寄存器或緩沖器。I/O接口是指單片機(jī)與外設(shè)間的I/O接口芯片。(2)I/O接口的功能:實(shí)現(xiàn)和不同外設(shè)的速度匹配;輸出數(shù)據(jù)緩存;輸入數(shù)據(jù)三態(tài)緩沖。3.(1)I/O端口編址有兩種方式:獨(dú)立編址方式、統(tǒng)一編址方式。(2)獨(dú)立編址方式就是I/O地址空間和存儲(chǔ)器地址空間分開(kāi)編址。其優(yōu)點(diǎn)是,I/O地址空間和存儲(chǔ)器地址空間相互獨(dú)立,界限分明。但是,卻需要設(shè)置一套專(zhuān)門(mén)的讀/寫(xiě)I/O的指令和控制信號(hào)。統(tǒng)一編址方式是把I/O端口的寄存器與數(shù)據(jù)存儲(chǔ)器單元同等對(duì)待,統(tǒng)一編址。其優(yōu)點(diǎn)是不需要專(zhuān)門(mén)的I/O指令,直接使用訪(fǎng)問(wèn)數(shù)據(jù)存儲(chǔ)器的指令進(jìn)行I/O操作,簡(jiǎn)單、方便且功能強(qiáng)大。89C51使用的是I/O和外部數(shù)據(jù)存儲(chǔ)器RAM統(tǒng)一編址的方式。4.82C55通過(guò)寫(xiě)入控制字寄存器的控制字最高位來(lái)判斷,最高位為1時(shí),為方式控制字;最高位為0時(shí),為PC口按位置位/復(fù)位控制字。5.當(dāng)外設(shè)輸入一個(gè)數(shù)據(jù)并送到PA7~PA0上時(shí),輸入設(shè)備自動(dòng)在選通輸入線(xiàn)向82C55發(fā)送一個(gè)低電平選通信號(hào),則把PA7~PA0上輸入的數(shù)據(jù)存入PA口的輸入數(shù)據(jù)緩沖/鎖存器;然后使輸入緩沖器輸出線(xiàn)IBFA變成高電平,以通知輸入設(shè)備,82C55的PA口已收到它送來(lái)的輸入數(shù)據(jù)。82C55檢測(cè)到聯(lián)絡(luò)線(xiàn)由低電平變成了高電平、IBFA為1狀態(tài)和中斷允許觸發(fā)器INTEA為1時(shí),使輸出線(xiàn)INTRA(PC3)變成高電平,向89C51發(fā)出中斷請(qǐng)求。INTEA的狀態(tài)可由用戶(hù)通過(guò)對(duì)PC4的置位/復(fù)位來(lái)控制。89C51響應(yīng)中斷后,可以通過(guò)中斷服務(wù)程序從PA口的輸入數(shù)據(jù)緩沖/鎖存器讀取外設(shè)發(fā)來(lái)的輸入數(shù)據(jù)。當(dāng)輸入數(shù)據(jù)被CPU讀走后,82C55撤銷(xiāo)INTRA上的中斷請(qǐng)求,并使IBFA變?yōu)榈碗娖?,以通知輸入外設(shè)可以送下一個(gè)輸入數(shù)據(jù)。6.81C55的端口有以下幾種:命令/狀態(tài)寄存器、PA口、PB口、PC口、計(jì)數(shù)器的高8位寄存器與低8位寄存器以及RAM單元。引腳IO/,A2、A1、A0決定端口地址。TIMERIN是計(jì)數(shù)脈沖輸入引腳,輸入脈沖的上跳沿用于對(duì)81C55片內(nèi)的14位計(jì)數(shù)器減1。為計(jì)數(shù)器輸出引腳。當(dāng)14位計(jì)數(shù)器減為0時(shí),就在該引線(xiàn)上輸出脈沖或方波,輸出的信號(hào)波形與所選的計(jì)數(shù)器工作方式有關(guān)。7.81C55計(jì)數(shù)器的初值范圍是3FFFH~2H。當(dāng)頻率為4MHz,初值為3FFFH時(shí),最大定時(shí)時(shí)間為0.004096s。三、程序設(shè)計(jì)題1.本題主要考察對(duì)82C55的PC口的操作。其方式控制字的最高位為0時(shí),低4位對(duì)PC口進(jìn)行置位。由題目可知方式控制寄存器的地址為7FFFH。ORG0100HMAIN:MOVDPTR,#7FFFH;控制字寄存器地址7FFFH送DPTRMOVA,#0EH;將PC7置0MOVX@DPTR,AMOVA,#09HMOVX@DPTR,AEND;將PC4置12.在如圖8.11所示電路圖的基礎(chǔ)上,PA口每一位接二極管的正極,二極管的負(fù)極接地;PB口每1位接一開(kāi)關(guān)和上拉電阻,開(kāi)關(guān)另一端直接接地。將讀到的PB口的值送給PA口,就可以滿(mǎn)足題目要求了。ORG0100HMIAN:MOVA,#10000010BMOVDPTR,#0FF7FH;控制口地址送DPTRMOVX@DPTR,AMOVDPTR,#0FF7DH;PB口地址送DPTRMOVXA,@DPTR;設(shè)置PA口方式0輸出,PB口方式0輸入;送方式命令字;讀入開(kāi)關(guān)信息MOVDPTR,#0FF7CH;PA口地址送DPTRMOVX@DPTR,A;PA口的內(nèi)容送PB口點(diǎn)亮相應(yīng)的二極管END3.將1MHz的脈沖改變?yōu)?00μs的方波,實(shí)際上就是分頻。分頻前后頻率之比為100:1,這樣只要將定時(shí)器初值設(shè)置為64H就可以了。MOVDPTR,#7F04HMOVA,#64H;指針指向計(jì)數(shù)器低8位;送初值給AMOVX@DPTR,A;初值送給計(jì)數(shù)器低8位;指向計(jì)數(shù)器高8位;計(jì)數(shù)器方波輸出INCDPTRMOVA,#40HMOVX@DPTR,AMOVDPTR,#7F00HMOVA,#0C2H;指向命令/狀態(tài)口;設(shè)定命令字MOVX@DPTR,AEND;啟動(dòng)計(jì)數(shù)器習(xí)題9一、多項(xiàng)選擇題1.ACD2.AB3.AD4.ABC二、填空題1.輸入;人機(jī)交互2.編碼鍵盤(pán);非編碼鍵盤(pán)3.定時(shí)查詢(xún)方式;外部中斷捕捉4.靜態(tài)顯示方式;動(dòng)態(tài)顯示方式5.數(shù)字;字母;符號(hào)6.雙字節(jié);雙字節(jié)7.調(diào)節(jié)光的亮度8.字段型;點(diǎn)陣字符型;點(diǎn)陣圖形型9.1110.I/O口線(xiàn)三、簡(jiǎn)答題1.(1)在按鍵的閉合和斷開(kāi)過(guò)程中,由于開(kāi)關(guān)的機(jī)械特性,導(dǎo)致了按鍵抖動(dòng)的產(chǎn)生。如果不消除按鍵抖動(dòng),在讀取按鍵的狀態(tài)時(shí)有可能出現(xiàn)錯(cuò)誤。(2)消除按鍵抖動(dòng)可以采用硬件或軟件去抖。(3)對(duì)于鍵按下,軟件去抖的原理是兩次確認(rèn)。去抖過(guò)程是,在第一次檢測(cè)到有鍵按下時(shí),該鍵所對(duì)應(yīng)的行線(xiàn)為低電平,執(zhí)行一段延時(shí)10ms的子程序后,確認(rèn)該行線(xiàn)電平是否仍然為低電平,如果仍為低電平,則確認(rèn)該行確實(shí)有鍵按下。對(duì)于鍵釋放,軟件去抖的原理也是兩次確認(rèn)。2.第1步,把行線(xiàn)編程為輸入線(xiàn),列線(xiàn)編程為輸出線(xiàn),并使輸出線(xiàn)輸出全為低電平,則行線(xiàn)中電平由高變低的行即為按鍵所在行。第2步,把列線(xiàn)編程為輸入線(xiàn),行線(xiàn)編程為輸出線(xiàn),并使輸出線(xiàn)輸出全為低電平,則列線(xiàn)中電平由高變低的列即為按鍵所在列。結(jié)合上述兩步的結(jié)果,可確定按鍵所在的行和列。3.(1)靜態(tài)顯示時(shí),數(shù)據(jù)是分開(kāi)送到每一位數(shù)碼管上的;而動(dòng)態(tài)顯示時(shí),數(shù)據(jù)是同時(shí)送到每一個(gè)數(shù)碼管上,再根據(jù)位選線(xiàn)來(lái)確定是哪一位數(shù)碼管被顯示。(2)靜態(tài)顯示亮度高,但占用口線(xiàn)較多。動(dòng)態(tài)顯示占用口線(xiàn)較少,適合用在顯示位數(shù)較多的場(chǎng)合。4.共陰極數(shù)碼管的段碼為80H;共陽(yáng)極數(shù)碼管的段碼為7FH。四、程序設(shè)計(jì)題1.先對(duì)P1口高4位送低電平,讀取P1口低4位的值;再對(duì)P1口低4位送低電平,讀取P1口高4位的值。將兩次讀到的值組合在一起就得到了按鍵的特征碼,再根據(jù)特征碼查找鍵值。參考程序如下:KEYIN:MOVP1,#0FHMOVA,P1;反轉(zhuǎn)讀鍵ANLA,#0FHMOVB,AMOVP1,#0F0HMOVA,P1ANLA,#0F0HORLA,BCJNEA,#0FFH,KEYIN1RET;未按鍵KEYIN1:MOVB,AMOVDPTR,#KEYCODMOVR3,#0FFH;暫存特征碼;指向特征碼表;順序碼初始化KEYIN2:INCMOVA,R3R3MOVCA,@A+DPTRCJNEA,B,KEYIN3MOVA,R3;找到,取順序碼RETKEYIN3:CJNEA,#0FFH,KEYIN2;未完,再查RET;已查完,未找到,返回KEYCOD:DB0E7H,0EBH,0EDH,0EEHDB0D7H,0DBH,0DDH,0DEHDB0B7H,0BBH,0BDH,0BEHDB77H,7BH,7DH,7EH;特征碼表2.參考程序如下。DISP:MOVMOVMOVMOVMOVMOVSETBMOVMOVMOVADDMOVCMOVJNB7FH,#017EH,#027DH,#037CH,#047BH,#05;保存顯示字符在段碼表中的序號(hào)7AH,#06P3.3;允許TXD引腳同步移位脈沖輸出R7,#06HR0,#7FHA,@R0A,#0DHA,@A+PCSBUF,A;R7為段碼個(gè)數(shù)計(jì)數(shù)器;7FH~7AH為顯示數(shù)據(jù)緩沖區(qū);取出要顯示的數(shù)據(jù),送給A;加上偏移量DL0:DL1:;查段碼表TAB,取出段碼;將段碼送SBUF,輸出段碼TI,DL1TI;1個(gè)字節(jié)的段碼未輸出完,等待;1個(gè)字節(jié)的段碼輸出完,TI清0;指向下一個(gè)顯示數(shù)據(jù)單元;若R7不為0,繼續(xù)送段碼;8個(gè)段碼輸出完畢,關(guān)閉顯示器輸出CLRDECR0DJNZCLRR7,DL0P3.3RETDBTAB:習(xí)題100C0H,0F9H,0A4H,0B0H;共陽(yáng)極段碼表:0,1,2,399H,92H,82H,0F8H,80H;4,5,6,7,890H

溫馨提示

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