單片機原理及接口技術(shù)第三版李朝青課后習(xí)題答案樣本_第1頁
單片機原理及接口技術(shù)第三版李朝青課后習(xí)題答案樣本_第2頁
單片機原理及接口技術(shù)第三版李朝青課后習(xí)題答案樣本_第3頁
單片機原理及接口技術(shù)第三版李朝青課后習(xí)題答案樣本_第4頁
單片機原理及接口技術(shù)第三版李朝青課后習(xí)題答案樣本_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理及接口李朝青1.89C51單片機內(nèi)包括哪些重要邏輯功能部件?答:80C51系列單片機在片內(nèi)集成了如下重要邏輯功能部件:(l)CPU(中央解決器):8位(2)片內(nèi)RAM:128B(3)特殊功能寄存器:21個(4)程序存儲器:4KB(5)并行I/O口:8位,4個(6)串行接口:全雙工,1個(7)定期器/計數(shù)器:16位,2個(8)片內(nèi)時鐘電路:1個2.89C51EA端有何用途?答:/EA端接高電平時,CPU只訪問片內(nèi)flashRom并執(zhí)行內(nèi)部程序,存儲器。/EA端接低電平時,CPU只訪問外部ROM,并執(zhí)行片外程序存儲器中指令。/EA端保持高電平時,CPU執(zhí)行內(nèi)部存儲器中指令。3.89C51存儲器分哪幾種空間?如何區(qū)別不同空間尋址?答:ROM(片內(nèi)ROM和片外ROM統(tǒng)一編址)(使用MOVC)(數(shù)據(jù)傳送指令)(16bits地址)(64KB)片外RAM(MOVX)(16bits地址)(64KB)片內(nèi)RAM(MOV)(8bits地址)(256B)4.簡述89C51片內(nèi)RAM空間分派。答:片內(nèi)RAM有256B低128B是真正RAM區(qū)高128B是SFR(特殊功能寄存器)區(qū)5.簡述布爾解決存儲器空間分派,片內(nèi)RAM中包括哪些可位尋址單元。答:片內(nèi)RAM區(qū)從00H~FFH(256B)其中20H~2FH(字節(jié)地址)是位尋址區(qū)相應(yīng)位地址是00H~7FH6.如何簡捷地判斷89C51正在工作?答:用示波器觀測8051XTAL2端與否有脈沖信號輸出(判斷震蕩電路工作與否正常?)ALE(地址鎖存容許)(AddressLatchEnable)輸出是fosc6分頻用示波器觀測ALE與否有脈沖輸出(判斷8051芯片好壞?)觀測PSEN(判斷8051可以到EPROM或ROM中讀取指令碼?)由于/PSEN接外部EPROM(ROM)/OE端子OE=OutputEnable(輸出容許)7.89C51如何擬定和變化當(dāng)前工作寄存器組?答:PSW(程序狀態(tài)字)(ProgramStatusWord)中RS1和RS0可以給出4中組合用來從4組工作寄存器組中進(jìn)行選取PSW屬于SFR(SpecialFunctionRegister)(特殊功能寄存器)8.89C51P0口用作通用I/O口輸入時,若通過TTL“OC”門輸入數(shù)據(jù),應(yīng)注意什么?為什么?答:9.讀端口鎖存器和“讀引腳”有何不同?各使用哪種指令?答:讀鎖存器(ANLP0,A)就是相稱于從存儲器中拿數(shù)據(jù),而讀引腳是從外部拿數(shù)據(jù)(如MOVA,P1這條指令就是讀引腳,意思就是把端口p1輸入數(shù)據(jù)送給A)傳送類MOV,判位轉(zhuǎn)移JB、JNB、這些都屬于讀引腳,平時實驗時經(jīng)慣用這些指令于外部通信,判斷外部鍵盤等;字節(jié)互換XCH、XCHD算術(shù)及邏輯運算ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制轉(zhuǎn)移CJNE、DJNZ都屬于讀鎖存器。10.89C51P0~P3口構(gòu)造有何不同?用作通用I/O口輸入數(shù)據(jù)時,應(yīng)注意什么?答:P0口內(nèi)部沒有上拉電阻,可以用做16位地址低8位;P3有第二功能;P2口可以用做16位地址高8位;需要上拉電阻。OC門電路無法輸出高低電平,只有靠上拉電阻才干實現(xiàn)11.89C51單片機EA信號有何功能?在使用8031時,EA信號引腳應(yīng)如何解決?答:(1)80C51單片機EA信號功能EA為片外程序存儲器訪問容許信號,低電平有效;在編程時,其上施加21V編程電壓EA引腳接高電平時,程序從片內(nèi)程序存儲器開始執(zhí)行,即訪問片內(nèi)存儲器;EA引腳接低電平時,迫使系統(tǒng)所有執(zhí)行片外程序存儲器程序。(2)在使用80C31時,EA信號引腳解決辦法由于80C31沒有片內(nèi)程序存儲器,因此在使用它時必然要有外部程序存儲器,EA信號引腳應(yīng)接低電平。12.89C51單片機有哪些信號需要芯片引腳以第2功能方式提供?答:第一功能第二功能串行口:P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)中斷:P3.2INT0外部中斷0P3.3INT1外部中斷1定期器/計數(shù)器(T0、T1):P3.4T0(定期器/計數(shù)器0外部輸入)P3.5T1(定期器/計數(shù)器1外部輸入)數(shù)據(jù)存儲器選通:P3.6WR(外部存儲器寫選通,低電平有效,輸出)P3.7RD(外部存儲器讀選通,低電平有效,輸出)定期器/計數(shù)器(T2):P1.0T2(定期器T2計數(shù)端)P1.1T2EX(定期器T2外部輸入端)13.內(nèi)部RAM低128字節(jié)單元劃分為哪3個重要某些?各某些重要功能是什么?答:片內(nèi)RAM低128單元劃分及重要功能:(l)工作寄存器組(00H~lFH)這是一種用寄存器直接尋址區(qū)域,內(nèi)部數(shù)據(jù)RAM區(qū)0~31(00H~lFH),共32個單元。它是4個通用工作寄存器組,每個組包括8個8位寄存器,編號為R0~R7。(2)位尋址區(qū)(20H~2FH)從內(nèi)部數(shù)據(jù)RAM區(qū)32~47(20H~2FH)16個字節(jié)單元,共包括128位,是可位尋址RAM區(qū)。這16個字節(jié)單元,既可進(jìn)行字節(jié)尋址,又可實現(xiàn)位尋址。(3)字節(jié)尋址區(qū)(30H~7FH)從內(nèi)部數(shù)據(jù)RAM區(qū)48~127(30H~7FH),共80個字節(jié)單元,可以采用間接字節(jié)尋址辦法訪問。14.使單片機復(fù)位有幾種辦法?復(fù)位后機器初始狀態(tài)如何?答:(1)單片機復(fù)位辦法單片機復(fù)位辦法有:上電自動復(fù)位、按鍵電平復(fù)位和外部脈沖三種方式,如題圖2-1所示。題圖2-1(2)復(fù)位后初始狀態(tài)復(fù)位后機器初始狀態(tài),即各寄存器狀態(tài):PC之外,復(fù)位操作還對其她某些特殊功能寄存器有影響,它們復(fù)位狀態(tài)如題表2-1所例15.開機復(fù)位后,CPU使用是哪組工作寄存器?它們地址是什么?CPU如何擬定和變化當(dāng)前工作寄存器組?答:普通開機復(fù)位后都是選取第一組通用工作寄存器作為工作寄存器,一共有4組,分別為0.1.2.3持續(xù)位于00h到1FH地址,然后在機器中有個程序狀態(tài)字PSW,它第四和第三位RS1,RS0是用來選取工作寄存器組,也許不同機器地址稍有不同。她們倆值和寄存器組關(guān)系:RS1/RS00/00/11/01/1使用工作寄存器0123地址00-0708-0F10-1718-1F寫程序時候就是通過定義程序狀態(tài)字來選取使用不同寄存器組。也可以直接對RS1和RS0賦值。(最后一問同題7)16.程序狀態(tài)寄存器PSW作用是什么?慣用標(biāo)志有哪些位?作用是什么?答:PSW是一種SFR(特殊功能寄存器)位于片內(nèi)RAM高128B詳細(xì)地址D0H(00H~FFH)(片內(nèi)RAM編址)(8bits編址辦法)PSW=ProgramStatusWord(程序狀態(tài)字)PSW慣用標(biāo)志位有哪些?CY=Carry(進(jìn)位標(biāo)志位)AC=AuxiliaryCarry(輔助進(jìn)位標(biāo)志位)(半進(jìn)位標(biāo)志位)F0顧客標(biāo)志位RS1,RS0,用來選取當(dāng)前工作寄存器組(R0~R7)(4選1)OV=Overflow(溢出標(biāo)志位)P=Parity(奇偶校驗位)17.位地址7CH與字節(jié)地址7CH如何區(qū)別?位地址7CH詳細(xì)在片內(nèi)RAM中什么位置?答:用不同尋址方式來加以區(qū)別,即訪問128個位地址用位尋址方式,訪問低128字節(jié)單元用字節(jié)尋址和間接尋址。詳細(xì)地址為2F第五位,即為7C。18.89C51單片機時鐘周期與振蕩周期之間有什么關(guān)系?什么叫機器周期和指令周期?答:時鐘信號周期稱為機器狀態(tài)周期,是振蕩周期兩倍。一種機器周期是指CPU訪問存儲器一次所需時間。指令周期是執(zhí)行一條指令所需時間。19.一種機器周期時序如何劃分?答:一種機器周期=12個震蕩周期=6個時鐘周期(狀態(tài)周期)S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1,S4P2,S5P1,S5P2,S6P1,S6P2其中s=state(狀態(tài)),p=phase(相位)20.什么叫堆棧?堆棧指針SP作用是什么?89C51單片機堆棧容量不能超過多少字節(jié)?答:堆棧都是一種數(shù)據(jù)項按序排列數(shù)據(jù)構(gòu)造,只能在一端(稱為棧頂(top))對數(shù)據(jù)項進(jìn)行插入和刪除。要點:堆:順序隨意棧:后進(jìn)先出(Last-In/First-Out)在調(diào)用子程序時需要保存調(diào)用函數(shù)CPU寄存器PC指針,PC指針是被CALL指令自動壓入SP所指向片內(nèi)存儲器,CPU寄存器要由顧客用PUSH指令自行保存,因而SP作用就是一種指針,當(dāng)進(jìn)行中斷調(diào)用,子函數(shù)調(diào)用時將現(xiàn)場數(shù)據(jù)壓入SP所指向存儲器,SP自動增長1或2,當(dāng)中斷結(jié)束RETI,調(diào)用返回RET,POP時將SP數(shù)據(jù)彈出,SP自動減1或,28051最大為128字節(jié)片內(nèi)存儲器,0X20以上理論都可以做堆棧用96字節(jié),8052為256字節(jié)224字節(jié)可用,但這樣便沒有其他空間可用于數(shù)據(jù)存儲當(dāng)前單片機程序普通都能用C51來,不用關(guān)懷堆棧大小與SP寄存器21.89C51有幾種低功耗方式?如何實現(xiàn)?答:空閑方式和掉電方式空閑方式和掉電方式是通過對SFR中PCON(地址87H)相應(yīng)位置1而啟動。當(dāng)CPU執(zhí)行完置IDL=1(PCON.1)指令后,系統(tǒng)進(jìn)入空閑工作方式。這時,內(nèi)部時鐘不向CPU提供,而只供應(yīng)中斷、串行口、定期器某些。CPU內(nèi)部狀態(tài)維持,即涉及堆棧指針SP、程序計數(shù)器PC、程序狀態(tài)字PSW、累加器ACC所有內(nèi)容保持不變,端口狀態(tài)也保持不變。ALE和PSEN保持邏輯高電平。當(dāng)CPU執(zhí)行一條置PCON.1位(PD)為1指令后,系統(tǒng)進(jìn)入掉電工作方式。在這種工作方式下,內(nèi)部振蕩器停止工作。由于沒有振蕩時鐘,因而,所有功能部件都停止工作。但內(nèi)部RAM區(qū)和特殊功能寄存器內(nèi)容被保存,而端口輸出狀態(tài)值都保存在相應(yīng)SFR中,ALE和PSEN都為低電平。22.PC與DPTR各有哪些特點?有何異同?答:(1)程序計數(shù)器PC作為不可尋址寄存器特點程序計數(shù)器PC是中央控制器申最基本寄存器,是一種獨立計數(shù)器,存儲著下一條將程序存儲器中取出指令地址。程序計數(shù)器PC變化軌跡決定程序流程。程序計數(shù)器寬度決定了程序存儲器可以尋址范疇。程序計數(shù)器PC基本工作方式有:①程序計數(shù)器PC自動加1。這是最基本工作方式,也是這個專用寄存器被稱為計數(shù)器因素。②執(zhí)行條件或無條件轉(zhuǎn)移指令時,程序計數(shù)器將被置入新數(shù)值,程序流向發(fā)生變化。變化方式有下列幾種:帶符號相對跳轉(zhuǎn)SJMP、短跳轉(zhuǎn)AJMP、長跳轉(zhuǎn)LJMP及JMP@A+DPTR等。③在執(zhí)行調(diào)用指令或響應(yīng)中斷時:●PC現(xiàn)行值,即下一條將要執(zhí)行指令地址送入堆棧,加以保護(hù);●將子程序入口地址或者中斷矢量地址送入PC,程序流向發(fā)生變化,執(zhí)行子程序或中斷服務(wù)程序;●子程序或中斷服務(wù)程序執(zhí)行完畢,遇到返回指令RET或RETI時,將棧頂內(nèi)容送到PC寄存器中,程序流程又返回到本來地方,繼續(xù)執(zhí)行。(2)地址指針DPTR特點地址指針DPTR特點是,它作為片外數(shù)據(jù)存儲器尋址用地址寄存器(間接尋址)。(3)地址指針DPTR與程序計數(shù)器PC異同①相似之處:●兩者都是與地址關(guān)于、16位寄存器。其中,PC與程序存儲器地址關(guān)于,而DPTR與數(shù)據(jù)存儲器地址關(guān)于。●作為地址寄存器使用時,PC與DPTR都是通過P0和P2口(作為16位地址總線)輸出。但是,PC輸出與ALE及PSEN關(guān)于;DPTR輸出,則與ALE、RD及WR相聯(lián)系。②不同之處:●PC只能作為16位寄存器對待,由于有自動加1功能,故又稱為計數(shù)器;DPTR可以作為16位寄存器對待,也可以作為兩個8位寄存器對待?!馪C是不可以訪問,有自己獨特變化方式,它變化軌跡決定了程序執(zhí)行流程;DPTR是可以訪問,如MOVDPTR,#XXXXH,INCDPTP。23.89C51端口鎖存器“讀—修改—寫”操作與“讀引腳”操作有何區(qū)別?答:指令系統(tǒng)中有些指令讀鎖存器值,有些指令則讀引腳上值。讀鎖存器指令是從鎖存器中讀取一種值并進(jìn)行解決,把解決后值(原值或已修改后值)重新寫入鎖存器中。此類指令稱為讀-修改-寫指令。對于讀-修改-寫指令。直接讀鎖存器而不是讀端口引腳,是由于從引腳上讀出數(shù)據(jù)不一定能真正反映鎖存器狀態(tài)。單片機原理及接口技術(shù)課后習(xí)題答案第三章1、

指令:CPU依照人意圖來執(zhí)行某種操作命令指令系統(tǒng):一臺計算機所能執(zhí)行所有指令集合機器語言:用二進(jìn)制編碼表達(dá),計算機能直接辨認(rèn)和執(zhí)行語言匯編語言:用助記符、符號和數(shù)字來表達(dá)指令程序語言高檔語言:獨立于機器,在編程時不需要對機器構(gòu)造及其指令系統(tǒng)有進(jìn)一步理解通用性語言2、

見第1題3、

操作碼[目操作數(shù)][,源操作數(shù)]4、

尋址方式尋址空間及時數(shù)尋址程序存儲器ROM直接尋址片內(nèi)RAM低128B、特殊功能寄存器寄存器尋址工作寄存器R0-R7、A、B、C、DPTR寄存器間接尋址片內(nèi)RAM低128B、片外RAM變址尋址程序存儲器(@A+PC,@A+DPTR)相對尋址程序存儲器256B范疇(PC+偏移量)位尋址片內(nèi)RAM20H-2FH字節(jié)地址、某些SFR5、

SFR:直接尋址,位尋址,寄存器尋址;片外RAM:寄存器間接尋址6、

MOVA,40H;直接尋址(40H)→AMOVR0,A;寄存器尋址(A)→R0MOVP1,#0F0H;及時數(shù)尋址0F0→P1MOV@R0,30H;直接尋址(30H)→(R0)MOVDPTR,#3848H;及時數(shù)尋址3848H→DPTRMOV40H,38H;直接尋址(38H)→40HMOVR0,30H;直接尋址(30H)→R0MOVP0,R0;寄存器尋址(R0)→P0MOV18H,#30H;及時數(shù)尋址30H→18HMOVA,@R0;寄存器間接尋址((R0))→AMOVP2,P1;直接尋址(P1)→P2最后成果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H注意:→左邊是內(nèi)容,右邊是單元7、

用直接尋址,位尋址,寄存器尋址8、

MOV A,DATA ;直接尋址 2字節(jié)1周期 MOV A,#DATA ;及時數(shù)尋址 2字節(jié)1周期 MOV DATA1,DATA2 ;直接尋址 3字節(jié)2周期 MOV 74H,#78H ;及時數(shù)尋址 3字節(jié)2周期如果想查某一指令機器碼,字節(jié)數(shù)或周期數(shù)可查閱課本背面附錄A9、 MOV A,@R0 ;((R0))=80H→A MOV @R0,40H ;(40H)=08H→(R0) MOV 40H,A ;(A)=80→40H MOV R0,#35H ;35H→R0最后成果:(R0)=35H(A)=80H,(32H)=08H,(40H)=80H10、用直接尋址,位尋址,寄存器尋址11、只能采用寄存器間接尋址(用MOVX指令)12、低128字節(jié):直接尋址,位尋址,寄存器間接尋址,寄存器尋址(R0~R7)高128字節(jié):直接尋址,位尋址,寄存器尋址13、采用變址尋址(用MOVC指令)14、壓縮BCD碼在進(jìn)行加法運算時應(yīng)逢十進(jìn)一,而計算機只將其當(dāng)作十六進(jìn)制數(shù)解決,此時得到成果不對的。用DAA指令調(diào)節(jié)(加06H,60H,66H)15、用來進(jìn)行位操作16、ANLA,#17H;83H∧17H=03H→AORL17H,A;34H∨03H=37H→17HXRLA,@R0;03H⊕37H=34HCPLA;34H求反等于CBH因此(A)=CBH17、(1)SETBACC.0或SETBE0H;E0H是累加器地址(2)CLRACC.7CLRACC.6CLRACC.5CLRACC.4(3)CLRACC.6CLRACC.5CLRACC.4CLRACC.318、MOV27H,R7MOV26H,R6MOV25H,R5MOV24H,R4MOV23H,R3MOV22H,R2MOV21H,R1MOV20H,R019、MOV2FH,20MOV2EH,21MOV2DH,2220、CLRCMOVA,#5DH;被減數(shù)低8位→AMOVR2,#B4H;減數(shù)低8位→R2SUBBA,R2;被減數(shù)減去減數(shù),差→AMOV30H,A;低8位成果→30HMOVA,#6FH;被減數(shù)高8位→AMOVR2,#13H;減數(shù)高8位→R2SUBBA,R2;被減數(shù)減去減數(shù),差→AMOV31H,A;高8位成果→30H注意:如果在你程序中用到了進(jìn)位位,在程序開始時候要記得清0進(jìn)位位21、(1)A≥10CJNEA,#0AH,L1;(A)與10比較,不等轉(zhuǎn)L1LJMPLABEL;相等轉(zhuǎn)LABELL1:JNCLABEL;(A)不不大于10,轉(zhuǎn)LABEL或者:CLRCSUBBA,#0AHJNCLABEL(2)A>10CJNEA,#0AH,L1;(A)與10比較,不等轉(zhuǎn)L1RET;相等結(jié)束L1:JNCLABEL;(A)不不大于10,轉(zhuǎn)LABELRET;(A)不大于10,結(jié)束或者:CLRCSUBBA,#0AHJNCL1RETL1:JNZLABELRET(3)A≤10CJNEA,#0AH,L1;(A)與10比較,不等轉(zhuǎn)L1L2:LJMPLABEL;相等轉(zhuǎn)LABELL1:JCL2;(A)不大于10,轉(zhuǎn)L2RET或者:CLRCSUBBA,#0AHJCLABELJZLABELRET22、(SP)=23H,(PC)=3412H參看書上80頁23、(SP)=27H,(26H)=48H,(27H)=23H,(PC)=3456H參看書上79頁

24、不能。ACALL是短轉(zhuǎn)指令,可調(diào)用地址范疇是2KB。在看這個題時候同步看一下AJMP指令。同步考慮調(diào)用指令A(yù)CALL和LCALL指令和RET指令關(guān)系。25、MOVR2,#31H;數(shù)據(jù)塊長度→R2MOVR0,#20H;數(shù)據(jù)塊首地址→R0LOOP:MOVA,@R0;待查找數(shù)據(jù)→ACLRC;清進(jìn)位位SUBBA,#0AAH;待查找數(shù)據(jù)是0AAH嗎JZL1;是,轉(zhuǎn)L1INCR0;不是,地址增1,指向下一種待查數(shù)據(jù)DJNZR2,LOOP;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找MOV51H,#00H;等于0,未找到,00H→51HRETL1:MOV51H,#01H;找到,01H→51HRET26、MOVR2,#31H;數(shù)據(jù)塊長度→R2MOVR0,#20H;數(shù)據(jù)塊首地址→R0LOOP:MOVA,@R0;待查找數(shù)據(jù)→AJNZL1;不為0,轉(zhuǎn)L1INC51H;為0,00H個數(shù)增1L1:INCR0;地址增1,指向下一種待查數(shù)據(jù)DJNZR2,LOOP;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找RET27、MOVDPTR,#SOURCE;源首地址→DPTRMOVR0,#DIST;目首地址→R0LOOP:MOVXA,@DPTR;傳送一種字符MOV@R0,AINCDPTR;指向下一種字符INCR0CJNEA,#24H,LOOP;傳送是“$”字符嗎?不是,傳送下一種字符RET28、MOVA,R3;取該數(shù)高8位→AANLA,#80H;取出該數(shù)符號判斷JZL1;是正數(shù),轉(zhuǎn)L1MOVA,R4;是負(fù)數(shù),將該數(shù)低8位→ACPLA;低8位取反ADDA,#01H;加1MOVR4,A;低8位取反加1后→R4MOVA,R3;將該數(shù)高8位→ACPLA;高8位取反ADDCA,#00H;加上低8位加1時也許產(chǎn)生進(jìn)位MOVR3,A;高8位取反加1后→R3L1:RET29、CLRC;清進(jìn)位位CMOVA,31H;取該數(shù)低8位→ARLCA;帶進(jìn)位位左移1位MOV31H,A;成果存回31HMOVA,30H;取該數(shù)高8位→ARLCA;帶進(jìn)位位左移1位MOV30H,A;成果存回30H30、MOVR2,#04H;字節(jié)長度→R2MOVR0,#30H;一種加數(shù)首地址→R0MOVR1,#40H;另一種加數(shù)首地址→R1CLRC;清進(jìn)位位LOOP:MOVA,@R0;取一種加數(shù)ADDCA,@R1;兩個加數(shù)帶進(jìn)位位相加DAA;十進(jìn)制調(diào)節(jié)MOV@R0,A;存儲成果INCR0;指向下一種字節(jié)INCR1;DJNZR2,LOOP;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找RET31、MOVR2,#08H;數(shù)據(jù)塊長度→R2MOVR0,#30H;數(shù)據(jù)塊目地址→R0MOVDPTR,#H;數(shù)據(jù)塊源地址→DPTRLOOP:MOVXA,@DPTR;傳送一種數(shù)據(jù)MOV@R0,AINCDPTR;指向下一種數(shù)據(jù)INCR0;DJNZR2,LOOP;數(shù)據(jù)塊長度減1,沒傳送完,繼續(xù)傳送RET32、(1)MOVR0,0FH;2字節(jié),2周期4字節(jié)4周期(差)MOVB,R0;2字節(jié),2周期(2)MOVR0,#0FH;2字節(jié),1周期4字節(jié)3周期(中)MOVB,@R0;2字節(jié),2周期(3)MOVB,#0FH;3字節(jié),2周期3字節(jié)2周期(好)33、(1)功能是將片內(nèi)RAM中50H~51H單元清0。(2)7A0A(人們可以看一下書上,對于及時數(shù)尋址話,背面一種字節(jié)存儲是及時數(shù))7850(第一種字節(jié)后三位是寄存器,前一種條指令是010也就是指R2,在這里是R0,因此應(yīng)當(dāng)是78,后一種字節(jié)存儲是及時數(shù))DAFC(這里涉及到偏移量計算,可以參照書上5634、INC@R0;(7EH)=00HINCR0;(R0)=7FHINC@R0;(7FH)=39HINCDPTR;(DPTR)=10FFHINCDPTR;(DPTR)=1100HINCDPTR;(DPTR)=1101H35、解:(1000H)=53H(1001H)=54H(1002H)=41H(1003H)=52H(1004H)=54H(1005H)=12H(1006H)=34H(1007H)=30H(1008H)=00H(1009H)=70H36、MOVR0,#40H;40H→R0MOVA,@R0;98H→AINCR0;41H→R0ADDA,@R0;98H+(41H)=47H→AINCR0MOV@R0,A;成果存入42H單元CLRA;清AADDCA,#0;進(jìn)位位存入AINCR0MOV@R0,A;進(jìn)位位存入43H功能:將40H,41H單元中內(nèi)容相加成果放在42H單元,進(jìn)位放在43H單元,(R0)=43H,(A)=1,(40H)=98H,(41H)=AFH,(42H)=47H,(43H)=01H37、MOVA,61H;F2H→AMOVB,#02H;02H→BMULAB;F2H×O2H=E4H→AADDA,62H;積低8位加上CCH→AMOV63H,A;成果送62HCLRA;清AADDCA,B;積高8位加進(jìn)位位→AMOV64H,A;成果送64H功能:將61H單元內(nèi)容乘2,低8位再加上62H單元內(nèi)容放入63H,將成果高8位放在64H單元。(A)=02H,(B)=01H,(61H)=F2H,(62H)=CCH,(63H)=B0H,(64H)=02H39、MOVA,XXHORLA,#80HMOVXXH,A40、(2)MOVA,XXHMOVR0,AXRLA,R0第五章1、什么是中斷和中斷系統(tǒng)?其重要功能是什么?答:當(dāng)CPU正在解決某件事情時候,外部發(fā)生某一件事件祈求CPU迅速去解決,于是,CPU暫時中斷當(dāng)前工作,轉(zhuǎn)去解決所發(fā)生事件,中斷服務(wù)解決完該事件后來,再回到本來被終結(jié)地方,繼續(xù)本來工作。這種過程稱為中斷,實現(xiàn)這種功能部件稱為中斷系統(tǒng)。功能:(1)

使計算機具備實時解決能力,能對外界異步發(fā)生事件作出及時解決(2)

完全消除了CPU在查詢方式中檔待現(xiàn)象,大大提高了CPU工作效率(3)

實現(xiàn)實時控制2、試編寫一段對中斷系統(tǒng)初始化程序,使之容許INT0,INT1,TO,串行口中斷,且使T0中斷為高優(yōu)先級中斷。解:MOVIE,#097HMOVIP,#02H3、在單片機中,中斷能實現(xiàn)哪些功能?答:有三種功能:分時操作,實時解決,故障解決4、89C51共有哪些中斷源?對其中端祈求如何進(jìn)行控制?答:(1)89C51有如下中斷源①:外部中斷0祈求,低電平有效②:外部中斷1祈求,低電平有效③T0:定期器、計數(shù)器0溢出中斷祈求④T1:定期器、計數(shù)器1溢出中斷祈求⑤TX/RX:串行接口中斷祈求(2)通過對特殊功能寄存器TCON、SCON、IE、IP各位進(jìn)行置位或復(fù)位等操作,可實現(xiàn)各種中斷控制功能5、什么是中斷優(yōu)先級?中斷優(yōu)先解決原則是什么?答:中斷優(yōu)先級是CPU相應(yīng)中斷先后順序。原則:(1)

先響應(yīng)優(yōu)先級高中斷祈求,再響應(yīng)優(yōu)先級低(2)

如果一種中斷祈求已經(jīng)被響應(yīng),同級其他中斷祈求將被禁止(3)

如果同級各種祈求同步浮現(xiàn),則CPU通過內(nèi)部硬件查詢電路,按查詢順序擬定應(yīng)當(dāng)響應(yīng)哪個中斷祈求查詢順序:外部中斷0→定期器0中斷→外部中斷1→定期器1中斷→串行接口中斷6、闡明外部中斷祈求查詢和響應(yīng)過程。答:當(dāng)CPU執(zhí)行主程序第K條指令,外設(shè)向CPU發(fā)出中斷祈求,CPU接到中斷祈求信號并在本條指令執(zhí)行完后,中斷主程序執(zhí)行并保存斷點地址,然后轉(zhuǎn)去響應(yīng)中斷。CPU在每個S5P2期間順序采樣每個中斷源,CPU在下一種機器周期S6期間按優(yōu)先級順序查詢中斷標(biāo)志,如果查詢到某個中斷標(biāo)志為1,將在接下來機器周期S1期間按優(yōu)先級進(jìn)行中斷解決,中斷系統(tǒng)通過硬件自動將相應(yīng)中斷矢量地址裝入PC,以便進(jìn)入相應(yīng)中斷服務(wù)程序。中斷服務(wù)完畢后,CPU返回到主程序第K+1條指令繼續(xù)執(zhí)行。7、89C51在什么條件下可響應(yīng)中斷?答:(1)

有中斷源發(fā)出中斷祈求(2)

中斷中容許位EA=1.即CPU開中斷(3)

申請中斷中斷源中斷容許位為1,即中斷沒有被屏蔽(4)

無同級或更高檔中斷正在服務(wù)(5)

當(dāng)前指令周期已經(jīng)結(jié)束(6)

若現(xiàn)行指令為RETI或訪問IE或IP指令時,該指令以及緊接著另一條指令已執(zhí)行完畢8、簡述89C51單片機中斷響應(yīng)過程。答:CPU在每個機器周期S5P2期間順序采樣每個中斷源,CPU在下一種機器周期S6期間按優(yōu)先級順序查詢中斷標(biāo)志,如查詢到某個中斷標(biāo)志為1,將在接下來機器周期S1期間按優(yōu)先級進(jìn)行中斷解決,中斷系統(tǒng)通過硬件自動將相應(yīng)中斷矢量地址裝入PC,以便進(jìn)入相應(yīng)中斷服務(wù)程序。一旦響應(yīng)中斷,89C51一方面置位相應(yīng)中斷“優(yōu)先級生效”觸發(fā)器,然后由硬件執(zhí)行一條長調(diào)用指令,把當(dāng)前PC值壓入堆棧,以保護(hù)斷點,再將相應(yīng)中斷服務(wù)入口地址送入PC,于是CPU接著從中斷服務(wù)程序入口處開始執(zhí)行。對于有些中斷源,CPU在響應(yīng)中斷后會自動清除中斷標(biāo)志。9、在89C51內(nèi)存中,應(yīng)如何安排程序區(qū)?答:主程序普通從0030H開始,主程序后普通是子程序及中斷服務(wù)程序。在這個人們還要清除各個中斷中斷矢量地址。10、試述中斷作用及中斷全過程。答:作用:對外部異步發(fā)生事件作出及時解決過程:中斷祈求,中斷響應(yīng),中斷解決,中斷返回11、當(dāng)正在執(zhí)行某一種中斷源中斷服務(wù)程序時,如果有新中斷祈求浮現(xiàn),試問在什么狀況下可響應(yīng)新中斷祈求?在什么狀況下不能響應(yīng)新中斷祈求?答:(1)符合如下6個條件可響應(yīng)新中斷祈求:a)有中斷源發(fā)出中斷祈求b)中斷容許位EA=1,即CPU開中斷c)申請中斷中斷源中斷容許位為1,即中斷沒有被屏蔽d)無同級或更高檔中斷正在被服務(wù)e)當(dāng)前指令周期已結(jié)束f)若現(xiàn)行指令為RETI或訪問IE或IP指令時,該指令以及緊接著另一條指令已被執(zhí)行完12、89C51單片機外部中斷源有幾種觸發(fā)中斷祈求辦法?如何實現(xiàn)中斷祈求?答:有兩種方式:電平觸發(fā)和邊沿觸發(fā)電平觸發(fā)方式:CPU在每個機器周期S5P2期間采樣外部中斷引腳輸入電平。若為低電平,使IE1(IE0)置“1”,申請中斷;若為高電平,則IE1(IE0)清零。邊沿觸發(fā)方式:CPU在每個機器周期S5P2期間采樣外部中斷祈求引腳輸入電平。如果在相繼兩個機器周期采樣過程中,一種機器周期采樣到外部中斷祈求為高電平,接著下一種機器周期采樣到外部中斷祈求為低電平,則使IE1(IE0)置“1”申請中斷;否則,IE1(IE0)置0。13、89C51單片機有五個中斷源,但只能設(shè)立兩個中斷優(yōu)先級,因而,在中斷優(yōu)先級安排上受到一定限制。試問如下幾種中斷優(yōu)先順序安排(級別由高到低)與否也許:若也許,則應(yīng)如何設(shè)立中斷源中斷級別:否則,請簡述不也許理由。⑴定期器0,定期器1,外中斷0,外中斷1,串行口中斷??梢?,MOVIP,#0AH⑵串行口中斷,外中斷0,定期器0,外中斷1,定期器1。可以,MOVIP,#10H⑶外中斷0,定期器1,外中斷1,定期器0,串行口中斷。不可以,只能設(shè)立一級高檔優(yōu)先級,如果將INT0,T1設(shè)立為高檔,而T0級別高于INT1.⑷外中斷0,外中斷1,串行口中斷,定期器0,定期器1??梢?,MOVIP,#15H⑸串行口中斷,定期器0,外中斷0,外中斷1,定期器1。不可以⑹外中斷0,外中斷1,定期器0,串行口中斷,定期器1。不可以⑺外中斷0,定期器1,定期器0,外中斷1,串行口中斷??梢?,MOVIP,#09H14、89C51各中斷源中斷標(biāo)志是如何產(chǎn)生?又是如何清0?CPU響應(yīng)中斷時,中斷入口地址各是多少?答:各中斷標(biāo)志產(chǎn)生和清“0”如下:(1)

外部中斷類外部中斷是由外部因素引起,可以通過兩個固定引腳,即外部中斷0和外部中斷1輸入信號。外部中斷0祈求信號,由P3.2腳輸入。通過IT0來決定中斷祈求信號是低電平有效還是下跳變有效。一旦輸入信號有效,則向CPU申請中斷,并且使IE0=1。硬件復(fù)位。外部中斷1祈求信號,功能與用法類似外部中斷0(2)

定期中斷類定期中斷是為滿足定期或計數(shù)溢出解決需要而設(shè)立。當(dāng)定期器/計數(shù)器中計數(shù)構(gòu)造發(fā)生計數(shù)溢出,即表白定期時間到或計數(shù)值已滿,這時就以計數(shù)溢出信號作為中斷祈求,去置位一種溢出標(biāo)志位。這種中斷祈求是在單片機芯片內(nèi)部發(fā)生,無需在芯片上設(shè)立引入端,但在計數(shù)方式時,中斷源可以由外部引入。TF0:定期器T0溢出中斷祈求。當(dāng)定期器T0產(chǎn)生溢出時,定期器T0祈求標(biāo)志TF0=1,祈求中斷解決。使用中斷時由硬件復(fù)位,在查詢方式下可由軟件復(fù)位。TF1:定期器T1溢出中斷祈求。功能與用法類似定期器T0(3)

串行口中斷類串行口中斷是為串行數(shù)據(jù)傳送需要而設(shè)立。串行中斷祈求也是在單片機芯片內(nèi)部發(fā)生,但當(dāng)串行口作為接受端時,必要有一完整串行幀數(shù)據(jù)從RI端引入芯片,才也許引起中斷。RI或TI:串行口中斷祈求。當(dāng)接受或發(fā)送一串幀數(shù)據(jù)時,使內(nèi)部串行口中斷祈求標(biāo)志RI或TI=1,并祈求中斷。響應(yīng)后必要軟件復(fù)位。CPU響應(yīng)中斷時,中斷入口地址如下:中斷源入口地址外部中斷00003H定期器T0中斷000BH外部中斷10013H定期器T1中斷001BH串行口中斷0023H15、中斷響應(yīng)時間與否為擬定不變?為什么?答:中斷響應(yīng)時間不是擬定不變。由于CPU不是在任何狀況下對中斷祈求都予以響應(yīng);此外,不同狀況對中斷響應(yīng)時間也是不同。下面以外部中斷為例,闡明中斷響應(yīng)時間。在每個機器周期S5P2期間,端電平被所存到TCONIE0位,CPU在下一種機器周期才會查詢這些值。這時滿足中斷響應(yīng)條件,下一條要執(zhí)行指令將是一條硬件長調(diào)用指令“LCALL”,使程序轉(zhuǎn)入中斷矢量入口。調(diào)用自身要用2個機器周期,這樣,從外部中斷祈求有效到開始執(zhí)行中斷服務(wù)程序第一條指令,至少需要3個機器周期,這是最短響應(yīng)時間。如果遇到中斷受阻狀況,這中斷響應(yīng)時間會更長某些。例如,當(dāng)一種同級或更高檔中斷服務(wù)程序正在進(jìn)行,則附加等待時間取決于正在進(jìn)行中斷服務(wù)程序:如果正在執(zhí)行一條指令還沒有進(jìn)行到最后一種機器周期,附加等待時間為1~3個機器周期;如果正在執(zhí)行是RETI指令或者訪問IE或IP指令,則附加等待時間在5個機器周期內(nèi)。若系統(tǒng)中只有一種中斷源,則響應(yīng)時間為3~8個機器周期。16、中斷響應(yīng)過程中,為什么普通要保護(hù)現(xiàn)場?如何保護(hù)?答:由于普通主程序和中斷服務(wù)程序都也許會用到累加器,PSW寄存器及其她某些寄存器。CPU在進(jìn)入中斷服務(wù)程序后,用到上述寄存器時,就會破壞它本來存在寄存器中內(nèi)容;一旦中斷返回,將會導(dǎo)致主程序混亂。因而在進(jìn)入中斷服務(wù)程序后,普通要先保護(hù)現(xiàn)場,然后再執(zhí)行中斷解決程序,在返回主程序此前再恢復(fù)現(xiàn)場。保護(hù)辦法普通是把累加器、PSW寄存器及其她某些與主程序關(guān)于寄存器壓入堆棧。在保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場時,為了不使現(xiàn)場受到破壞或者導(dǎo)致混亂,普通規(guī)定此時CPU不響應(yīng)新中斷祈求。這就規(guī)定在編寫中斷服務(wù)程序時,注旨在保護(hù)現(xiàn)場之前要關(guān)中斷,在恢復(fù)現(xiàn)場之后開中斷。如果在中斷解決時容許有更高檔中斷打斷它,則在保護(hù)現(xiàn)場之后再開中斷,恢復(fù)現(xiàn)場之前關(guān)中斷。17、清論述中斷響應(yīng)CPU操作過程,為什么說中斷操作是一種CPU微查詢過程?答:在中斷響應(yīng)中,CPU要完畢如下自主操作過程:a)置位相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器,以標(biāo)明所響應(yīng)中斷優(yōu)先級別b)

中斷源標(biāo)志清零(TI、RI除外)c)

中斷斷點地址裝入堆棧保護(hù)(不保護(hù)PSW)d)

中斷入口地址裝入PC,以便使程序轉(zhuǎn)到中斷入口地址處在計算機內(nèi)部,中斷體現(xiàn)為CPU微查詢操作。89C51單片機中,CPU在每個機器周期S6狀態(tài),查詢中斷源,并按優(yōu)先級管理規(guī)則解決同步祈求中斷源,且在下一種機器周期S1狀態(tài)中,響應(yīng)最高檔中斷祈求。但是如下狀況除外:a)CPU正在解決相似或更高優(yōu)先級中斷b)多機器周期指令中,尚未執(zhí)行到最后一種機器周期c)

正在執(zhí)行中斷系統(tǒng)SFR操作,如RETI指令及訪問IE、IP等操作時,要延后一條指令18、在中斷祈求有效并開中斷狀況下,能否保證及時響應(yīng)中斷?有什么條件?答:在中斷祈求有效并開中斷狀況下,并不能保證及時響應(yīng)中斷。這是由于,在計算機內(nèi)部,中斷體現(xiàn)為CPU微查詢操作。89C51單片機中,CPU在每個機器周期S6狀態(tài)下,查詢中斷源,并按優(yōu)先級管理規(guī)則解決同步祈求中斷源,且在下一種機器周期S1狀態(tài)中,響應(yīng)最高檔中斷祈求。在如下狀況下,還需要有此外等待:a)

CPU正在解決相似或更高優(yōu)先級中斷b)

多機器周期指令中,尚未執(zhí)行到最后一種機器周期c)正在執(zhí)行中斷系統(tǒng)SFR操作,如RETI指令及訪問IE、IP等操作時,要延后一條指令

第6章習(xí)題答案1、定期器模式2有什么特點?合用于什么場合?答:(1)模式2把TL0(或TL1)配備成一種可以自動重裝載8位定期器/計數(shù)器。TL0計數(shù)溢出時不但使溢出中斷標(biāo)志位TF0置1,并且還自動把TH0中內(nèi)容重新裝載到TL0中。TL0用作8位計數(shù)器,TH0用以保存初值。(2)用于定期工作方式時間(TF0溢出周期)為,用于計數(shù)工作方式時,最大計數(shù)長度(TH0初值=0)為28=256個外部脈沖。

這種工作方式可省去顧客軟件重裝初值語句,并可產(chǎn)生相稱精準(zhǔn)定期時間,特別適于作串行波特率發(fā)生器。2、單片機內(nèi)部定期方式產(chǎn)生頻率為100KHZ等寬矩形波,假定單片機晶振頻率為12MHZ,請編程實現(xiàn)。答:T0低5位:1BHT0高8位:FFHMOVTMOD,#00H;設(shè)立定期器T0工作于模式0MOVTL0,#1BH;設(shè)立5ms定期初值MOVTH0,#0FFHSETBTR0;啟動T0LOOP:JBCTF0,L1;查詢到定期時間到?時間到轉(zhuǎn)L1SJMPLOOP;時間未到轉(zhuǎn)LOOP,繼續(xù)查詢L1:MOVTL0,#1BH;重新置入定期初值MOVTH0,#0FFHCPLP1.0;輸出取反,形成等寬矩形波SJMPLOOP;重復(fù)循環(huán)3、89C51定期器有哪幾種工作模式?有何區(qū)別?答:有四種工作模式:模式0,模式1,模式2,模式3(1)

模式0:選取定期器高8位和低5位構(gòu)成一種13位定期器/計數(shù)器。TL低5位溢出時向TH進(jìn)位,TH溢出時向中斷標(biāo)志位TF進(jìn)位,并申請中斷。定期時間t=(213-初值)×振蕩周期×12;計數(shù)長度位213=8192個外部脈沖(2)

模式1:與模式0唯一差別是寄存器TH和TL以所有16位參加操作。定期時間t=(216-初值)×振蕩周期×12;計數(shù)長度位216=65536個外部脈沖(3)

模式2:把TL0和TL1配備成一種自動重裝載8位定期器/計數(shù)器。TL用作8位計數(shù)器,TH用以保存初值。TL計數(shù)溢出時不但使TF0置1,并且還自動將TH中內(nèi)容重新裝載到TL中。定期時間t=(28-初值)×振蕩周期×12;計數(shù)長度位28=256個外部脈沖(4)

模式3:對T0和T1不大相似若設(shè)T0位模式3,TL0和TH0被分為兩個互相獨立8位計數(shù)器。TL0為8位計數(shù)器,功能與模式0和模式1相似,可定期可計數(shù)。TH0僅用作簡樸內(nèi)部定期功能,它占用了定期器T1控制位TR1和中斷標(biāo)志位TF1,啟動和關(guān)閉僅受TR1控制。定期器T1無工作模式3,但T0在工作模式3時T1仍可設(shè)立為0~2。4、89C51內(nèi)部設(shè)有幾種定期器/計數(shù)器?它們是由哪些特殊功能寄存器構(gòu)成?答:89C51單片機內(nèi)有兩個16位定期器/計數(shù)器,即T0和T1。T0由兩個8位特殊功能寄存器TH0和TL0構(gòu)成;T1由TH1和TL1構(gòu)成。5、定期器用作定期器時,其定期時間與哪些因素關(guān)于?作計數(shù)器時,對外界計數(shù)頻率有何限制?答:定期時間與定期器工作模式,初值及振蕩周期關(guān)于。作計數(shù)器時對外界計數(shù)頻率規(guī)定最高為機器振蕩頻率1/24。6、簡述定期器4種工作模式特點,如何選取設(shè)定?答:(1)

模式0:選取定期器高8位和低5位構(gòu)成一種13位定期器/計數(shù)器。TL低5位溢出時向TH進(jìn)位,TH溢出時向中斷標(biāo)志位TF進(jìn)位,并申請中斷。定期時間t=(213-初值)×振蕩周期×12;計數(shù)長度位213=8192個外部脈沖置TMOD中M1M0為00(2)

模式1:與模式0唯一差別是寄存器TH和TL以所有16位參加操作。定期時間t=(216-初值)×振蕩周期×12;計數(shù)長度位216=65536個外部脈沖置TMOD中M1M0為01(3)

模式2:把TL0和TL1配備成一種自動重裝載8位定期器/計數(shù)器。TL用作8位計數(shù)器,TH用以保存初值。TL計數(shù)溢出時不但使TF0置1,并且還自動將TH中內(nèi)容重新裝載到TL中。定期時間t=(28-初值)×振蕩周期×12;計數(shù)長度位28=256個外部脈沖置TMOD中M1M0為10(4)

模式3:對T0和T1不大相似若設(shè)T0位模式3,TL0和TH0被分為兩個互相獨立8位計數(shù)器。TL0為8位計數(shù)器,功能與模式0和模式1相似,可定期可計數(shù)。TH0僅用作簡樸內(nèi)部定期功能,它占用了定期器T1控制位TR1和中斷標(biāo)志位TF1,啟動和關(guān)閉僅受TR1控制。定期器T1無工作模式3,但T0在工作模式3時T1仍可設(shè)立為0~2。置TMOD中M1M0為117、當(dāng)T0用作模式3時,由于TR1已被T0占用,如何控制T1啟動和關(guān)閉?答:用T1控制位C/T切換定期器或計數(shù)器工作方式就可以使T1運營。定期器T1無工作模式3,將T1設(shè)立為工作模式3,就會使T1及時停止計數(shù),關(guān)閉。8、以定期器/計數(shù)器1進(jìn)行外部時間計數(shù),每計數(shù)1000個脈沖后,定期器/計數(shù)器1轉(zhuǎn)為定期工作方式,定期10ms后又轉(zhuǎn)為計數(shù)方式,如此循環(huán)不止。假定為6WHZ,用模式1編程。解:T1為定期器時初值:T1為計數(shù)器時初值:因此:L1:MOVTMOD,#50H;設(shè)立T1為計數(shù)方式且工作模式為1MOVTH1,#0FCH;置入計數(shù)初值MOVTL1,#18HSETBTR1;啟動T1計數(shù)器LOOP1:JBCTF1,L2;查詢計數(shù)溢出?有溢出(計數(shù)滿1000個)轉(zhuǎn)L2SJMPLOOP1;無溢出轉(zhuǎn)LOOP1,繼續(xù)查詢L2:CLRTR1;關(guān)閉T1MOVTMOD,#10H;設(shè)立T1為定期方式且工作與模式1MOVTH1,#0ECH;置入定期10ms初值MOVTL1,#78HSETBTR1;啟動T1定期LOOP2:JBCTF1,L1;查詢10ms時間到?時間到,轉(zhuǎn)L1SJMPLOOP2;時間未到,轉(zhuǎn)LOOP2,繼續(xù)查詢9、一種定期器定期時間有限,如何實現(xiàn)兩個定期器串行定期以滿足較長定期時間規(guī)定?答:當(dāng)一種定期器溢出時,設(shè)立另一種定期器初值為0開始定期。10、使用一種定期器,如何通過軟硬件結(jié)合辦法實現(xiàn)較長時間定期?答:設(shè)定好定期器定期時間,采用中斷方式用軟件設(shè)立計多次數(shù),進(jìn)行溢出次數(shù)合計,從而得到較長時間。11、89C51定期器作定期和計數(shù)時其計數(shù)脈沖分別由誰提供?答:作定期器時計數(shù)脈沖由89C51片內(nèi)振蕩器輸出經(jīng)12分頻后脈沖提供,作計數(shù)時計數(shù)脈沖由外部信號通過引腳P3.4和P3.5提供。12、89C51定期器門控信號GATE設(shè)立為1時定期器如何啟動?答:只有(或)引腳為高電平且由軟件使TR0(或TR1)置1時,才干啟動定期器工作。13、已知89C51單片機fosc=6MHz,請運用T0和P1.0輸出矩形波。矩形波高電平寬50μs,低電平寬300μs。解:T0采用模式2作為50μs定期時初值:因此作300μs定期時初值:MOVTMOD,#02H;設(shè)立定期器T0工作于模式2L2:CLRP1.0;P1.0輸出低電平MOVTH0,#6AH;置入定期300μs初值MOVTL0,#6AHSETBTR0;啟動T0LOOP1:JBCTF0,L1;查詢300μs時間到?時間到,轉(zhuǎn)L1SJMPLOOP1;時間未到,轉(zhuǎn)LOOP1,繼續(xù)查詢L1:SETBP1.0;P1.0輸出高電平CLRTR0;關(guān)閉T0MOVTH0,#0E7H;置入定期300μs初值MOVTL0,#0E7HSETBTR0;啟動T0LOOP2:JBCTF0,L2;查詢50μs時間到?時間到,轉(zhuǎn)L2SJMPLOOP2;時間未到,轉(zhuǎn)LOOP2,繼續(xù)查詢14、已知89C51單片機fosc=12MHz,用T1定期。試編程由P1.0和P1.1引腳分別輸出周期為2ms和500μs方波。解:采用模式0作定期初值:因此MOVR2,#04H;R2為“250μs”計數(shù)器,置入初值4CLRP1.0;P1.0輸出低電平CLRP1.1;P1.1輸出低電平MOVTMOD,#00HL2:MOVTH1,#0F8H;置入定期250μs初值MOVTL1,#06HSETBTR1;啟動T1LOOP:JBCTF1,L1;查詢250μs時間到?時間到,轉(zhuǎn)L1SJMPLOOP;時間未到,轉(zhuǎn)LOOP,繼續(xù)查詢L1:CPLP1.1;P1.1輸出取反,形成周期為500μsCLRTR1;關(guān)閉T1DJNZR2,L2;“250μs”計數(shù)器減1,到1ms嗎?未到轉(zhuǎn)L2CPLP1.0;P1.0輸出取反,形成周期為2ms方波MOVR2,#04H;重置“250μs”計數(shù)器初值4LJMPL2;重復(fù)循環(huán)

15、單片機8031時鐘頻率為6MHz,若規(guī)定定期值分別為0.1ms,1ms,10ms,定期器0工作在模式0、模式1和模式2時,其定期器初值各應(yīng)是多少?解:(1)

0.1ms模式0:T0低5位01110B=0EHT0高8位:11111110B=FEH模式1:模式2:(2)

1ms模式0:T0低5位01100B=0CHT0高8位:11110000B=F0H模式1:模式2:在此狀況下最長定期為512μs,無法一次實現(xiàn)定期1ms,可用0.1ms循環(huán)10次(3)

10ms模式0:T0低5位11000B=18HT0高8位:01100011B=63H模式1:模式2:在此狀況下最長定期為512μs,無法一次實現(xiàn)定期10ms,可用0.1ms循環(huán)100次

16、89C51單片機定期器在何種設(shè)立下可提供三個8位計數(shù)器定期器?這時,定期器1可作為串行口波特率發(fā)生器。若波特率按9600b/s,4800b/s,2400b/s,1200b/s,600b/s,100b/s來考慮,則此時可選用波特率是多少(容許存在一定誤差)?設(shè)fosc=12MHz。解:當(dāng)T0為模式3,T1為模式2時,可提供3個8位定期器。可選100b/s17、試編制一段程序,功能為:當(dāng)P1.2引腳電平上跳時,對P1.1輸入脈沖進(jìn)行計數(shù);當(dāng)P1.2引腳電平下跳時,停止計數(shù),并將計數(shù)值寫入R6,R7。解:MOVTMOD,#05H;T0為計數(shù)方式且工作于模式1JNBP1.2,$;等待P1.2引腳電平上跳MOVTH0,#00H;P1.2電平上跳,置入計數(shù)初值MOVTL0,#00HSETBTR0;啟動T0JBP1.2,$;等待P1.2引腳電平下跳CLRTR0;電平下跳,關(guān)閉T0MOVR7,TH0;計數(shù)初值寫入R7,R6MOVR6,TL0

18、設(shè)fosc=12MHz。試編制一段程序,功能為:對定期器T0初始化,使之工作在模式2,產(chǎn)生200μs定期,并用查詢T0溢出標(biāo)志辦法,控制P1.0輸出周期為2ms方波。解:T0作定期器時初值:因此程序1:CLRP1.0;P1.0輸出低電平MOVR2,#05H;R2為“200μs”計數(shù)器,置入初值5,計1msMOVTMOD,#02H;設(shè)定期器T0工作于模式2L2:MOVTH0,#38H;置入定期初值MOVTL0,#38HSETBTR0;啟動T0LOOP:JBCTF0,L1;查詢200μs時間到?時間到,轉(zhuǎn)L1SJMPLOOP;時間未到,轉(zhuǎn)LOOP,繼續(xù)查詢L1:CLRTR0;關(guān)閉T0DJNZR2,L2;“200μs”計數(shù)器減1,到1ms嗎?未到,轉(zhuǎn)L2CPLP1.0;到1ms,P1.0取反,形成周期為2ms方波MOVR2,#05H;重置“200μs”計數(shù)器初值LJMPL2;重復(fù)循環(huán)程序2:MAIN:MOVTMOD,#02H;設(shè)定期器T0工作于模式2CLRP1.0;P1.0輸出低電平LOOP1:MOVR2,#05H;R2為“200μs”計數(shù)器,置入初值5,計1msLOOP:MOVTH0,#38H;置入定期初值MOVTL0,#38HSETBTR0;啟動T0JNBTF0,$;查詢200μs時間到?時間到,繼續(xù)查詢CLRTR0;關(guān)閉T0DJNZR2,LOOP;“200μs”計數(shù)器減1,到1ms嗎?未到,轉(zhuǎn)LOOPCPLP1.0;到1ms,P1.0取反,形成周期為2ms方波SJMPLOOP1;重復(fù)循環(huán)19、以中斷辦法設(shè)計單片機秒、分脈沖發(fā)生器。假定P1.0每秒產(chǎn)生1個機器周期正脈沖,P1.1每分產(chǎn)生1個周期正脈沖。第七章1、什么是串行異步通信,它有哪些作用?答:在異步串行通信中,數(shù)據(jù)是一幀一幀(涉及一種字符代碼或一字節(jié)數(shù)據(jù))傳送,每一幀數(shù)據(jù)格式參照書。通信采用幀格式,無需同步字符。存在空閑位也是異步通信特性之一。2、89C51單片機串行口由哪些功能部件構(gòu)成?各有什么作用?答:89C51單片機串行接口由發(fā)送緩沖期SBUF,接受緩沖期SBUF、輸入移位寄存器、串行接口控制器SCON、定期器T1構(gòu)成波特率發(fā)生器等部件構(gòu)成。由發(fā)送緩沖期SBUF發(fā)送數(shù)據(jù),接受緩沖期SBUF接受數(shù)據(jù)。串行接口通信工作方式選取、接受和發(fā)送控制及狀態(tài)等均由串行接口控制寄存器SCON控制和批示。定期器T1產(chǎn)生串行通信所需波特率。3、簡述串行口接受和發(fā)送數(shù)據(jù)過程。答:串行接口接受和發(fā)送是對同一地址(99H)兩個物理空間特殊功能寄存器SBUF進(jìn)行讀和寫。當(dāng)向SBUF發(fā)“寫”命令時(執(zhí)行“MOVSBUF,A”),即向緩沖期SBUF裝載并開始TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位TI=1。在滿足串行接口接受中斷標(biāo)志位RI(SCON.0)=0條件下,置容許接受位REN(SCON.4)=1,就會接受一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接受SBUF中,同步使RI=1。當(dāng)發(fā)讀SBUF命令時(執(zhí)行“MOVA,SBUF”),便由接受緩沖期SBUF取出信息通過89C51內(nèi)部總線送CPU。4、89C51串行口有幾種工作方式?有幾種幀格式?各工作方式波特率如何擬定?答:89C51串行口有4種工作方式:方式0(8位同步移位寄存器),方式1(10位異步收發(fā)),方式2(11位異步收發(fā)),方式3(11位異步收發(fā))。有2種幀格式:10位,11位方式0:方式0波特率≌fosc/12(波特率固定為振蕩頻率1/12)方式2:方式2波特率≌2SMOD/64×fosc方式1和方式3:方式1和方式3波特率≌2SMOD/32×(T1溢出速率)如果T1采用模式2則:5、若異步通信接口按方式3傳送,已知其每分鐘傳送3600個字符,其波特率是多少?答:已知每分鐘傳送3600個字符,方式3每個字符11位,則:波特率=(11b/字符)×(3600字符/60s)=660b/s6、89C51中SCONSM2,TB8,RB8有何作用?答:89c51SCONSM2是多機通信控制位,重要用于方式2和方式3.若置SM2=1,則容許多機通信。TB8是發(fā)送數(shù)據(jù)第9位,在方式2或方式3中,依照發(fā)送數(shù)據(jù)需要由軟件置位或復(fù)位。它在許多通信合同中可用作奇偶校驗位;在多機通信中作為發(fā)送地址幀或數(shù)據(jù)幀標(biāo)志位。RB8是接受數(shù)據(jù)第9位,在方式2或方式3中接受到第9位數(shù)據(jù)放在RB8位。它或是商定奇偶校驗位,或是商定地址/數(shù)據(jù)標(biāo)示位。7、設(shè)fosc=11.059MHz,試編寫一段程序,其功能為對串行口初始化,使之工作與方式1,波特率為1200b/s;并用查詢串行口狀態(tài)辦法,讀出接受緩沖器數(shù)據(jù)并回送到發(fā)送緩沖器。解:START:MOVSCON,#40H;串行接口工作于方式1MOVTMOD,#20H;定期器T1工作于模式2MOVTH1,#0E8H;賦定期器計數(shù)初值MOVTL1,#0E8HSETBTR1;啟動定期器T1MOVA,SBUF;讀出接受緩沖器數(shù)據(jù)MOVSBUF,A;啟動發(fā)送過程JNBTI,$;等待發(fā)送完CLRTI;清TI標(biāo)志SJMP$;結(jié)束8、若晶振為11.0592MHz,串行口工作與方式1,波特率為4800b/s。寫出用T1作為波特率發(fā)生器方式字和計數(shù)初值。解:MOVTMOD,#20H;定期器T1工作于模式2MOVTH1,#0FAH;賦定期器計數(shù)初值MOVTL1,#0FAH9、為什么定期器T1用作串行口波特率發(fā)生器時,常選用工作模式2?若已知系統(tǒng)時鐘頻率和通信用波特率,如何計算其初值?答:由于工作模式2是自動重裝初值定期器,編程時無需重裝時間參數(shù)(計數(shù)初值),比較使用。若選用工作模式0或工作模式1,當(dāng)定期器T1溢出時,需在中斷服務(wù)程序中重裝初值。已知系統(tǒng)時鐘頻率fosc和通信用波特率fbaud,可得出定期器T1模式2初值10、若定期器T1設(shè)立成模式2作波特率發(fā)生器,已知fosc=6MHz。求也許產(chǎn)生最高和最低波特率。解:最高波特率為T1定期最小值時,此時初值為255,并且SMOD=1,有:最高波特率為T1定期最大值時,此時初值為0,并且SMOD=0,有:11、串行通信總線原則是什么?有哪些內(nèi)容?答:美國電子工業(yè)協(xié)會(EIA)正式發(fā)布串行總線接口原則有RS-232C,RS-422,RS-423和RS-485等。在異步串行通信中應(yīng)用最廣原則總線是RD-232C。它涉及了按位串行傳播電氣和機械方面規(guī)定,如合用范疇、信號特性、接口信號及引腳闡明等,合用于短距離(<15m)或帶調(diào)制解調(diào)通信場合。采用RS-422,RS-485原則時,通信距離可達(dá)1000m。

12、簡述單片幾多機通信原理。答:當(dāng)一片89C51(主機)與多片89C51(從機)通信時,所有從機SM2位都置1.主機一方面發(fā)送一幀數(shù)據(jù)為地址,即某從機機號,其中第9位為1,所有從機接受到數(shù)據(jù)后,將其中第9位裝入RB8中。各從機依照收到第9位數(shù)據(jù)(RB8中)值來決定從機可否再接受主機信息。若(RB8)=0,闡明是數(shù)據(jù)幀,則使接受中斷標(biāo)志位RI=0,信息丟失;若(RB8)=1闡明是地址幀,數(shù)據(jù)裝入SBUF并置RI=1,中斷所有從機,只有被尋址目的從機清除SM2(SM2=0),以接受主機發(fā)來一幀數(shù)據(jù)(點對點通信)。其她從機依然保持SM2=1.13、當(dāng)89C51串行口按工作方式1進(jìn)行串行數(shù)據(jù)通信時。假定波特率為1200b/s,以中斷方式傳送數(shù)據(jù)。請編寫全雙工通信程序。解:設(shè)系統(tǒng)時鐘頻率fosc=6.0MHZ。查教材表9-2可知,可取SMOD=0,T1計數(shù)初值為F3H。程序如下:ORG0000HAJMPMAIN;上電,轉(zhuǎn)向主程序ORG0023H;串行口中斷入口地址AJMPSERVE;轉(zhuǎn)向中斷服務(wù)程序ORG0040H;主程序MAIN:MOVSP,#60H;設(shè)立堆棧指針MOVSCON,#50HMOVPCON,#00HMOVTMOD,#20HMOVTH1,#0F3HMOVTL1,#0F3HSETBTR1MOVR0,#20H;置發(fā)送數(shù)據(jù)區(qū)首地址MOVR1,#40H;置接受數(shù)據(jù)區(qū)首地址MOVR7,#10H;置發(fā)送字節(jié)長度MOVR6,#10H;置接受字節(jié)長度SETBES;容許串行口中斷SETBEA;CPU容許中斷MOVA,@R0;取第一種數(shù)據(jù)發(fā)送MOVSBUF,A;發(fā)送第一種數(shù)據(jù)SJMP$;等待中斷SERVE:JNBRI,SEND;TI=1,為發(fā)送中斷CLRRIMOVA,SBUF;讀出接受緩沖區(qū)內(nèi)容MOV@R1,A;讀入接受緩沖區(qū)DJNZR6,L1;判斷數(shù)據(jù)塊發(fā)送完否SJMPL2;數(shù)據(jù)塊接受完,轉(zhuǎn)L2L1:INCR1;修改數(shù)據(jù)區(qū)指針L2:RETI;中斷返回SEND:CLRTI;清除發(fā)送中斷標(biāo)志DJNZR7,L3;判斷數(shù)據(jù)塊發(fā)送完否SJMPL4;數(shù)據(jù)塊接受完,轉(zhuǎn)L4L3:MOVA,@R0;取數(shù)據(jù)發(fā)送MOVSBUF,A;發(fā)送數(shù)據(jù)INCR0;修改數(shù)據(jù)地址L4:RETI;中斷返回END14、以89C51串行口按工作方式3進(jìn)行串行數(shù)據(jù)通信。假定波特率為1200b/s,第9數(shù)據(jù)位作奇偶校驗位,以中斷方式傳送數(shù)據(jù)。請編寫通信程序。解:ORG0000HAJMPMAIN;上電,轉(zhuǎn)向主程序ORG0023H;串行口中斷入口地址AJMPSTOP;轉(zhuǎn)向中斷服務(wù)程序ORG0040H;主程序MAIN:MOVSP,#60HMOVTMOD,#20HMOVTH1,#0E8HMOVTL1,#0E8HSETBTR1MOVSCON,#0D0HMOVPCON,#00HMOVR0,#20H;置發(fā)送數(shù)據(jù)區(qū)首地址MOVR1,#40H;置接受數(shù)據(jù)區(qū)首地址SETBES;容許串行口中斷SETBEA;CPU容許中斷MOVA,@R0MOVC,PSW.0;P→CCPLCMOVTB8,CMOVSBUF,A;發(fā)送第一種數(shù)據(jù)SJMP$STOP:JNBRISOUT;TI=1,為發(fā)送中斷CLRRIMOVA,SBUF;讀出接受緩沖區(qū)內(nèi)容MOVC,PSW.0;P→CCPLC;形成奇校驗JCLOOP1;判斷接受端奇偶值,C=1轉(zhuǎn)LOOP1JNBRB8,LOOP2 ;C=0,RB8=0,轉(zhuǎn)LOOP2SJMPERROR

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論