單片機(jī)原理及接口技術(shù)課后習(xí)題答案_第1頁
單片機(jī)原理及接口技術(shù)課后習(xí)題答案_第2頁
單片機(jī)原理及接口技術(shù)課后習(xí)題答案_第3頁
單片機(jī)原理及接口技術(shù)課后習(xí)題答案_第4頁
單片機(jī)原理及接口技術(shù)課后習(xí)題答案_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單?機(jī)原理及接?技術(shù)課后習(xí)題答案第?章1.89C51單?機(jī)內(nèi)包含哪些主要邏輯功能部件?答:80C51系列單?機(jī)在?內(nèi)集成了以下主要邏輯功能部件:(l)CPU(中央處理器):8位(2)?內(nèi)RAM:128B(3)特殊功能寄存器:21個(gè)(4)程序存儲器:4KB(5)并?I/O?:8位,4個(gè)(6)串?接?:全雙?,1個(gè)(7)定時(shí)器/計(jì)數(shù)器:16位,2個(gè)(8)?內(nèi)時(shí)鐘電路:1個(gè)2.89C51的EA端有何?途?答:/EA端接?電平時(shí),CPU只訪問?內(nèi)/doc/c312e1f309a1284ac850ad02de80d4d8d15a01a8.html并執(zhí)?內(nèi)部程序,存儲器。/EA端接低電平時(shí),CPU只訪問外部ROM,并執(zhí)??外程序存儲器中的指令。/EA端保持?電平時(shí),CPU執(zhí)?內(nèi)部存儲器中的指令。3.89C51的存儲器分哪?個(gè)空間?如何區(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~7FH7.89C51如何確定和改變當(dāng)前?作寄存器組?答:PSW(程序狀態(tài)字)(ProgramStatusWord)中的RS1和RS0可以給出4種組合,?來從4組?作寄存器組中進(jìn)?選擇,PSW屬于SFR(SpecialFunctionRegister)(特殊功能寄存器)9.讀端?鎖存器和“讀引腳”有何不同?各使?哪種指令?答:讀鎖存器(ANLP0,A)就是相當(dāng)于從存儲器中拿數(shù)據(jù),?讀引腳是從外部拿數(shù)據(jù)(如MOVA,P1這條指令就是讀引腳的,意思就是把端?p1輸?數(shù)據(jù)送給A)傳送類MOV,判位轉(zhuǎn)移JB、JNB、這些都屬于讀引腳,平時(shí)實(shí)驗(yàn)時(shí)經(jīng)常?這些指令于外部通信,判斷外部鍵盤等;字節(jié)交換XCH、XCHD算術(shù)及邏輯運(yùn)算ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制轉(zhuǎn)移CJNE、DJNZ都屬于讀鎖存器。10.89C51P0~P3?結(jié)構(gòu)有何不同??作通?I/O?輸?數(shù)據(jù)時(shí),應(yīng)注意什么?答:P0?內(nèi)部沒有上拉電阻,可以?做16位地址的低8位;P3有第?功能;P2?可以?做16位地址的?8位;需要上拉電阻。OC門電路?法輸出?低電平,只有靠上拉電阻才能實(shí)現(xiàn)12.89C51單?機(jī)有哪些信號需要芯?引腳以第2功能的?式提供?答:第?功能第?功能P3.0串??:RXD(串?輸??)P3.1TXD(串?輸出?)P3.2中斷:INT0外部中斷0P3.3INT1外部中斷1

P3.4定時(shí)器/計(jì)數(shù)器(T0、T1):T0(定時(shí)器/計(jì)數(shù)器0的外部輸?)P3.5T1(定時(shí)器/計(jì)數(shù)器1的外部輸?)P3.6數(shù)據(jù)存儲器選通:WR(外部存儲器寫選通,低電平有效,輸出)P3.7RD(外部存儲器讀選通,低電平有效,輸出)P1.0定時(shí)器/計(jì)數(shù)器(T2):T2(定時(shí)器T2的計(jì)數(shù)端)P1.1T2EX(定時(shí)器T2的外部輸?端)13.內(nèi)部RAM低128字節(jié)單元?jiǎng)澐譃槟?個(gè)主要部分?各部分主要功能是什么?答:?內(nèi)RAM低128單元的劃分及主要功能:(l)?作寄存器組(00H~lFH)這是?個(gè)?寄存器直接尋址的區(qū)域,內(nèi)部數(shù)據(jù)RAM區(qū)的0~31(00H~lFH),共32個(gè)單元。它是4個(gè)通??作寄存器組,每個(gè)組包含8個(gè)8位寄存器,編號為R0~R7。(2)位尋址區(qū)(20H~2FH)從內(nèi)部數(shù)據(jù)RAM區(qū)的32~47(20H~2FH)的16個(gè)字節(jié)單元,共包含128位,是可位尋址的RAM區(qū)。這16個(gè)字節(jié)單元,既可進(jìn)?字節(jié)尋址,?可實(shí)現(xiàn)位尋址。(3)字節(jié)尋址區(qū)(30H~7FH)從內(nèi)部數(shù)據(jù)RAM區(qū)的48~127(30H~7FH),共80個(gè)字節(jié)單元,可以采?間接字節(jié)尋址的?法訪問。15.開機(jī)復(fù)位后,CPU使?的是哪組?作寄存器?它們的地址是什么?CPU如何確定和改變當(dāng)前?作寄存器組?答:?般開機(jī)復(fù)位后都是選擇第?組通??作寄存器作為?作寄存器的,?共有4組,分別為連續(xù)位于00h到1FH地址,然后在機(jī)器中有個(gè)程序狀態(tài)字PSW,它的第四和第三位RS1,RS0是?來選擇?作寄存器組的,可能不同機(jī)器地址稍有不同。他們倆的值和寄存器組的關(guān)系:RS1/RS00/00/11/01/1使?的?作寄存器0123地址00-0708-0F10-1718-1F寫程序的時(shí)候就是通過定義程序狀態(tài)字來選擇使?不同的寄存器組。也可以直接對RS1和RS0賦值。19.?個(gè)機(jī)器周期的時(shí)序如何劃分?答:?個(gè)機(jī)器周期=12個(gè)震蕩周期=6個(gè)時(shí)鐘周期(狀態(tài)周期)20.什么叫堆棧?堆棧指針SP的作?是什么?89C51單?機(jī)堆棧的容量不能超過多少字節(jié)?答:堆棧都是?種數(shù)據(jù)項(xiàng)按序排列的數(shù)據(jù)結(jié)構(gòu),只能在?端(稱為棧頂(top))對數(shù)據(jù)項(xiàng)進(jìn)?插?和刪除。要點(diǎn):堆:順序隨意棧:后進(jìn)先出(Last-In/First-Out)在調(diào)??程序時(shí)需要保存調(diào)?函數(shù)的CPU寄存器PC指針,PC指針是被CALL指令?動壓?SP所指向的?內(nèi)存儲器,CPU寄存器要由?戶?PUSH指令??保存,因此SP的作?就是?個(gè)指針,當(dāng)進(jìn)?中斷調(diào)?,?函數(shù)調(diào)?時(shí)將現(xiàn)場數(shù)據(jù)壓?SP所指向的存儲器,SP?動增加1或2,當(dāng)中斷結(jié)束RETI,調(diào)?返回RET,POP時(shí)將SP數(shù)據(jù)彈出,SP?動減1或2,8051最?為128字節(jié)的?內(nèi)存儲器,0X20以上理論都可以做堆棧?96字節(jié),8052為256字節(jié)224字節(jié)可?,但這樣便沒有其它空間可?于數(shù)據(jù)存儲現(xiàn)在的單?機(jī)的程序?般都能?C51來,不?關(guān)?堆棧??與SP寄存器22.PC與DPTR各有哪些特點(diǎn)?有何異同?答:(1)程序計(jì)數(shù)器PC作為不可尋址寄存器的特點(diǎn)程序計(jì)數(shù)器PC是中央控制器申最基本的寄存器,是?個(gè)獨(dú)?的計(jì)數(shù)器,存放著下?條將程序存儲器中取出的指令的地址。程序計(jì)數(shù)器PC變化的軌跡決定程序的流程。程序計(jì)數(shù)器的寬度決定了程序存儲器可以尋址的范圍。程序計(jì)數(shù)器PC的基本?作?式有:

①程序計(jì)數(shù)器PC?動加1。這是最基本的?作?式,也是這個(gè)專?寄存器被稱為計(jì)數(shù)器的原因。②執(zhí)?條件或?條件轉(zhuǎn)移指令時(shí),程序計(jì)數(shù)器將被置?新的數(shù)值,程序的流向發(fā)?變化。變化的?式有下列?種:帶符號的相對跳轉(zhuǎn)SJMP、短跳轉(zhuǎn)AJMP、長跳轉(zhuǎn)LJMP及JMP@A+DPTR等。③在執(zhí)?調(diào)?指令或響應(yīng)中斷時(shí):●PC的現(xiàn)?值,即下?條將要執(zhí)?的指令的地址送?堆棧,加以保護(hù);●將?程序的??地址或者中斷?量地址送?PC,程序流向發(fā)?變化,執(zhí)??程序或中斷服務(wù)程序;●?程序或中斷服務(wù)程序執(zhí)?完畢,遇到返回指令RET或RETI時(shí),將棧頂?shù)膬?nèi)容送到PC寄存器中,程序流程?返回到原來的地?,繼續(xù)執(zhí)?。(2)地址指針DPTR的特點(diǎn)地址指針DPTR的特點(diǎn)是,它作為?外數(shù)據(jù)存儲器尋址?的地址寄存器(間接尋址)。(3)地址指針DPTR與程序計(jì)數(shù)器PC的異同①相同之處:●兩者都是與地址有關(guān)的、16位的寄存器。其中,PC與程序存儲器的地址有關(guān),?DPTR與數(shù)據(jù)存儲器的地址有關(guān)?!褡鳛榈刂芳拇嫫魇?時(shí),PC與DPTR都是通過P0和P2?(作為16位地址總線)輸出的。但是,PC的輸出與ALE及PSEN有關(guān);DPTR的輸出,則與ALE、RD及WR相聯(lián)系。②不同之處:●PC只能作為16位寄存器對待,由于有?動加1的功能,故?稱為計(jì)數(shù)器;DPTR可以作為16位寄存器對待,也可以作為兩個(gè)8位寄存器對待?!馪C是不可以訪問的,有??獨(dú)特的變化?式,它的變化軌跡決定了程序執(zhí)?的流程;DPTR是可以訪問的,如MOVDPTR,#XXXXH,INCDPTP。第三章3、簡述8951的匯編指令格式。答:操作碼[?的操作數(shù)][,源操作數(shù)]5、訪問特殊功能寄存器和?外數(shù)據(jù)存儲器,應(yīng)采?那些尋址?式?答:SFR:直接尋址,位尋址,寄存器尋址;?外RAM:寄存器間接尋址6、8951中已知(30H)=38H,請分析以下各是什么指令,說明源操作數(shù)的尋址?式以及執(zhí)?結(jié)果。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最后結(jié)果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H8、指出些列指令的本質(zhì)?MOVA,DATA;直接尋址2字節(jié)1周期MOVA,#DATA;?即數(shù)尋址2字節(jié)1周期MOVDATA1,DATA2;直接尋址3字節(jié)2周期MOV74H,#78H;?即數(shù)尋址3字節(jié)2周期9、設(shè)R0的內(nèi)容分為32H,A的內(nèi)容為48H,?內(nèi)RAM的32H單元內(nèi)容為80H,40H單元內(nèi)容為08H,請指出在執(zhí)?下列程序段后上述各單元內(nèi)容的變化?MOVA,@R0;((R0))=80H→AMOV@R0,40H;(40H)=08H→(R0)MOV40H,A;(A)=80→40HMOVR0,#35H;35H→R0最后結(jié)果:(R0)=35H(A)=80H,(32H)=08H,(40H)=80H10、如何訪問SFR,可采?那些尋址?式?答:?直接尋址,位尋址,寄存器尋址12、如何訪問?內(nèi)RAM,可使?那些尋址?式?答:低128字節(jié):直接尋址,位尋址,寄存器間接尋址,寄存器尋址(R0~R7)?128字節(jié):直接尋址,位尋址,寄存器尋址16、(A)=83H,(R0)=17H,(17H)=34H.請寫出執(zhí)?完下列程序段后A的內(nèi)容。ANLA,#17H;83H∧17H=03H→AORL17H,A;34H∨03H=37H→17HXRLA,@R0;03H⊕37H=34H

CPLA;34H求反等于CBH所以(A)=CBH20、編程,進(jìn)?兩個(gè)16位數(shù)的減法:6F5DH-13B4H,結(jié)果存?內(nèi)部RAM的30和31H單元,30H存低?位。CLRCMOVA,#5DH;被減數(shù)的低8位→AMOVR2,#B4H;減數(shù)低8位→R2SUBBA,R2;被減數(shù)減去減數(shù),差→AMOV30H,A;低8位結(jié)果→30HMOVA,#6FH;被減數(shù)的?8位→AMOVR2,#13H;減數(shù)?8位→R2SUBBA,R2;被減數(shù)減去減數(shù),差→AMOV31H,A;?8位結(jié)果→30H25、編程,查找內(nèi)部RAM中20H-50H單元中是否有0AAH這?數(shù)據(jù),若有則將51h單元置為01H,如?,則將51H單元清零。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,指向下?個(gè)待查數(shù)據(jù)DJNZR2,LOOP;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找MOV51H,#00H;等于0,未找到,00H→51HRETL1:MOV51H,#01H;找到,01H→51HRET26、編程查找內(nèi)部RAM的20H-50H單元中出現(xiàn)00H的次數(shù)并將結(jié)果存?51H中。MOVR2,#31H;數(shù)據(jù)塊長度→R2MOVR0,#20H;數(shù)據(jù)塊?地址→R0LOOP:MOVA,@R0;待查找的數(shù)據(jù)→AJNZL1;不為0,轉(zhuǎn)L1INC51H;為0,00H個(gè)數(shù)增1L1:INCR0;地址增1,指向下?個(gè)待查數(shù)據(jù)DJNZR2,LOOP;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找RET27、外部數(shù)據(jù)RAM中有?個(gè)數(shù)據(jù)塊,?地址為SOURCE,要求將該數(shù)據(jù)傳送到內(nèi)部RAM以DIST開頭的區(qū)域在,直到遇

到數(shù)字字符¥時(shí)結(jié)束。MOVDPTR,#SOURCE;源?地址→DPTRMOVR0,#DIST;?的?地址→R0LOOP:MOVXA,@DPTR;傳送?個(gè)字符MOV@R0,AINCDPTR;指向下?個(gè)字符INCR0CJNEA,#24H,LOOP;傳送的是“$”字符嗎?不是,傳送下?個(gè)字符RET28、已知R3和R4中存有?個(gè)?六位的?進(jìn)制數(shù),?位在3中,低位在4中,編程求其補(bǔ),并存回原處。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時(shí)可能產(chǎn)?的進(jìn)位MOVR3,A;?8位取反加1后→R3L1:RET29、已知30H和31H中存有?個(gè)?六位的?進(jìn)制數(shù),?位在前,低位在后,編程將它們乘2,并存回原處。CLRC;清進(jìn)位位CMOVA,31H;取該數(shù)低8位→ARLCA;帶進(jìn)位位左移1位MOV31H,A;結(jié)果存回31HMOVA,30H;取該數(shù)?8位→ARLCA;帶進(jìn)位位左移1位MOV30H,A;結(jié)果存回30H30、內(nèi)存中有兩個(gè)4字節(jié)以壓縮的BCD碼形式存放的?進(jìn)制數(shù),?個(gè)放在30H-33H的單元中,?個(gè)放在40H-43H的單元中,編程求他們的和,結(jié)果放在30H-33H的單元中。MOVR2,#04H;字節(jié)長度→R2MOVR0,#30H;?個(gè)加數(shù)?地址→R0MOVR1,#40H;另?個(gè)加數(shù)?地址→R1CLRC;清進(jìn)位位

LOOP:MOVA,@R0;取?個(gè)加數(shù)ADDCA,@R1;兩個(gè)加數(shù)帶進(jìn)位位相加DAA;?進(jìn)制調(diào)整MOV@R0,A;存放結(jié)果INCR0;指向下?個(gè)字節(jié)INCR1;DJNZR2,LOOP;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找RET31、編程,把?外RAM從2000H開始存放的8個(gè)數(shù)傳送到?內(nèi)30H開始的單元中。MOVR2,#08H;數(shù)據(jù)塊長度→R2MOVR0,#30H;數(shù)據(jù)塊?的地址→R0MOVDPTR,#2000H;數(shù)據(jù)塊源地址→DPTRLOOP:MOVXA,@DPTR;傳送?個(gè)數(shù)據(jù)MOV@R0,AINCDPTR;指向下?個(gè)數(shù)據(jù)INCR0;DJNZR2,LOOP;數(shù)據(jù)塊長度減1,沒傳送完,繼續(xù)傳送RET35、解:(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;結(jié)果存?42H單元CLRA;清AADDCA,#0;進(jìn)位位存?AINCR0MOV@R0,A;進(jìn)位位存?43H功能:將40H,41H單元中的內(nèi)容相加結(jié)果放在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;結(jié)果送62HCLRA;清AADDCA,B;積的?8位加進(jìn)位位→AMOV64H,A;結(jié)果送64H功能:將61H單元的內(nèi)容乘2,低8位再加上62H單元的內(nèi)容放?63H,將結(jié)果的?8位放在64H單元。(A)=02H,(B)=01H,(61H)=F2H,(62H)=CCH,(63H)=B0H,(64H)=02H39、MOVA,XXHORLA,#80HMOVXXH,A40、(2)MOVA,XXHMOVR0,AXRLA,R0第五章2、試編寫?段對中斷系統(tǒng)初始化的程序,使之允許INT0,INT1,TO,串??中斷,且使T0中斷為?優(yōu)先級中斷。解:MOVIE,#097HMOVIP,#02H4、89C51共有哪些中斷源?對其中端請求如何進(jìn)?控制?答:(1)89C51有如下中斷源①:外部中斷0請求,低電平有效②:外部中斷1請求,低電平有效③T0:定時(shí)器、計(jì)數(shù)器0溢出中斷請求④T1:定時(shí)器、計(jì)數(shù)器1溢出中斷請求⑤TX/RX:串?接?中斷請求(2)通過對特殊功能寄存器TCON、SCON、IE、IP的各位進(jìn)?置位或復(fù)位等操作,可實(shí)現(xiàn)各種中斷控制功能5、什么是中斷優(yōu)先級?中斷優(yōu)先處理的原則是什么?答:中斷優(yōu)先級是CPU相應(yīng)中斷的先后順序。原則:(1)先響應(yīng)優(yōu)先級?的中斷請求,再響應(yīng)優(yōu)先級低的(2)如果?個(gè)中斷請求已經(jīng)被響應(yīng),同級的其它中斷請求將被禁?(3)如果同級的多個(gè)請求同時(shí)出現(xiàn),則CPU通過內(nèi)部硬件查詢電路,按查詢順序確定應(yīng)該響應(yīng)哪個(gè)中斷請求查詢順序:外部中斷0→定時(shí)器0中斷→外部中斷1→定時(shí)器1中斷→串?接?中斷10、試述中斷的作?及中斷的全過程。答:作?:對外部異步發(fā)?的事件作出及時(shí)的處理過程:中斷請求,中斷響應(yīng),中斷處理,中斷返回

13、89C51單?機(jī)有五個(gè)中斷源,但只能設(shè)置兩個(gè)中斷優(yōu)先級,因此,在中斷優(yōu)先級安排上受到?定的限制。試問以下?種中斷優(yōu)先順序的安排(級別由?到低)是否可能:若可能,則應(yīng)如何設(shè)置中斷源的中斷級別:否則,請簡述不可能的理由。⑴定時(shí)器0,定時(shí)器1,外中斷0,外中斷1,串??中斷??梢?,MOVIP,#0AH⑵串??中斷,外中斷0,定時(shí)器0,外中斷1,定時(shí)器1??梢?,MOVIP,#10H⑶外中斷0,定時(shí)器1,外中斷1,定時(shí)器0,串??中斷。不可以,只能設(shè)置?級?級優(yōu)先級,如果將INT0,T1設(shè)置為?級,?T0級別?于INT1.⑷外中斷0,外中斷1,串??中斷,定時(shí)器0,定時(shí)器1??梢?,MOVIP,#15H⑸串??中斷,定時(shí)器0,外中斷0,外中斷1,定時(shí)器1。不可以⑹外中斷0,外中斷1,定時(shí)器0,串??中斷,定時(shí)器1。不可以⑺外中斷0,定時(shí)器1,定時(shí)器0,外中斷1,串??中斷??梢?,MOVIP,#09H14、89C51各中斷源的中斷標(biāo)志是如何產(chǎn)?的??是如何清0的?CPU響應(yīng)中斷時(shí),中斷??地址各是多少?答:各中斷標(biāo)志的產(chǎn)?和清“0”如下:(1)外部中斷類外部中斷是由外部原因引起的,可以通過兩個(gè)固定引腳,即外部中斷0和外部中斷1輸?信號。外部中斷0請求信號,由P3.2腳輸?。通過IT0來決定中斷請求信號是低電平有效還是下跳變有效。?旦輸?信號有效,則向CPU申請中斷,并且使IE0=1。硬件復(fù)位。外部中斷1請求信號,功能與?法類似外部中斷0(2)定時(shí)中斷類定時(shí)中斷是為滿?定時(shí)或計(jì)數(shù)溢出處理需要?設(shè)置的。當(dāng)定時(shí)器/計(jì)數(shù)器中的計(jì)數(shù)結(jié)構(gòu)發(fā)?計(jì)數(shù)溢出的,即表明定時(shí)時(shí)間到或計(jì)數(shù)值已滿,這時(shí)就以計(jì)數(shù)溢出信號作為中斷請求,去置位?個(gè)溢出標(biāo)志位。這種中斷請求是在單?機(jī)芯?內(nèi)部發(fā)?的,?需在芯?上設(shè)置引?端,但在計(jì)數(shù)?式時(shí),中斷源可以由外部引?。TF0:定時(shí)器T0溢出中斷請求。當(dāng)定時(shí)器T0產(chǎn)?溢出時(shí),定時(shí)器T0請求標(biāo)志TF0=1,請求中斷處理。使?中斷時(shí)由硬件復(fù)位,在查詢?式下可由軟件復(fù)位。TF1:定時(shí)器T1溢出中斷請求。功能與?法類似定時(shí)器T0(3)串??中斷類串??中斷是為串?數(shù)據(jù)的傳送需要?設(shè)置的。串?中斷請求也是在單?機(jī)芯?內(nèi)部發(fā)?的,但當(dāng)串??作為接收端時(shí),必須有?完整的串?幀數(shù)據(jù)從RI端引?芯?,才可能引發(fā)中斷。RI或TI:串??中斷請求。當(dāng)接收或發(fā)送?串幀數(shù)據(jù)時(shí),使內(nèi)部串??中斷請求標(biāo)志RI或TI=1,并請求中斷。響應(yīng)后必須軟件CPU響應(yīng)中斷時(shí),中斷??地址如下:中斷源??地址外部中斷00003H定時(shí)器T0中斷000BH外部中斷10013H定時(shí)器T1中斷001BH串??中斷0023H16、中斷響應(yīng)過程中,為什么通常要保護(hù)現(xiàn)場?如何保護(hù)?

答:因?yàn)?般主程序和中斷服務(wù)程序都可能會?到累加器,PSW寄存器及其他?些寄存器。CPU在進(jìn)?中斷服務(wù)程序后,?到上述寄存器時(shí),就會破壞它原來存在寄存器中的內(nèi)容;?旦中斷返回,將會造成主程序的混亂。因?在進(jìn)?中斷服務(wù)程序后,?般要先保護(hù)現(xiàn)場,然后再執(zhí)?中斷處理程序,在返回主程序以前再恢復(fù)現(xiàn)場。保護(hù)?法?般是把累加器、PSW寄存器及其他?些與主程序有關(guān)的寄存器壓?堆棧。在保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場時(shí),為了不使現(xiàn)場受到破壞或者造成混亂,?般規(guī)定此時(shí)CPU不響應(yīng)新的中斷請求。這就要求在編寫中斷服務(wù)程序時(shí),注意在保護(hù)現(xiàn)場之前要關(guān)中斷,在恢復(fù)現(xiàn)場之后開中斷。如果在中斷處理時(shí)允許有更?級的中斷打斷它,則在保護(hù)現(xiàn)場之后再開中斷,恢復(fù)現(xiàn)場之前關(guān)中斷。第6章習(xí)題答案1、定時(shí)器模式2有什么特點(diǎn)?適?于什么場合?答:(1)模式2把TL0(或TL1)配置成?個(gè)可以?動重裝載的8位定時(shí)器/計(jì)數(shù)器。TL0計(jì)數(shù)溢出時(shí)不僅使溢出中斷標(biāo)志位TF0置1,?且還?動把TH0中的內(nèi)容重新裝載到TL0中。TL0?作8位計(jì)數(shù)器,TH0?以保存初值。(2)?于定時(shí)?作?式時(shí)間(TF0溢出周期)為,?于計(jì)數(shù)?作?式時(shí),最?計(jì)數(shù)長度(TH0初值=0)為28=256個(gè)外部脈沖。這種?作?式可省去?戶軟件重裝初值的語句,并可產(chǎn)?相當(dāng)精確定時(shí)時(shí)間,特別作串?波特率發(fā)?器。2、單?機(jī)內(nèi)部定時(shí)?式產(chǎn)?頻率為100KHZ等寬矩形波,假定單?機(jī)的晶振頻率為12MHZ,請編程實(shí)現(xiàn)。答:T0低5位:1BH,T0?8位:FFHMOVTMOD,#00H;設(shè)置定時(shí)器T0?作于模式0MOVTL0,#1BH;設(shè)置5ms定時(shí)初值MOVTH0,#0FFHSETBTR0;啟動T0LOOP:JBCTF0,L1;查詢到定時(shí)時(shí)間到?時(shí)間到轉(zhuǎn)L1SJMPLOOP;時(shí)間未到轉(zhuǎn)LOOP,繼續(xù)查詢L1:MOVTL0,#1BH;重新置?定時(shí)初值MOVTH0,#0FFHCPLP1.0;輸出取反,形成等寬矩形波SJMPLOOP;重復(fù)循環(huán)3、89C51定時(shí)器有哪?種?作模式?有何區(qū)別?答:有四種?作模式:模式0,模式1,模式2,模式3(1)模式0:選擇定時(shí)器的?8位和低5位組成?個(gè)13位定時(shí)器/計(jì)數(shù)器。TL低5位溢出時(shí)向TH進(jìn)位,TH溢出時(shí)向中斷標(biāo)志位TF進(jìn)位,并申請中斷。定時(shí)時(shí)間t=(213-初值)×振蕩周期×12;計(jì)數(shù)長度位213=8192個(gè)外部脈沖(2)模式1:與模式0的唯?差別是寄存器TH和TL以全部16位參與操作。定時(shí)時(shí)間t=(216-初值)×振蕩周期×12;計(jì)數(shù)長度位216=65536個(gè)外部脈沖(3)模式2:把TL0和TL1配置成?個(gè)?動重裝載的8位定時(shí)器/計(jì)數(shù)器。TL?作8位計(jì)數(shù)器,TH?以保存初值。TL計(jì)數(shù)溢出時(shí)不僅使TF0置1,?且還?動將TH中的內(nèi)容重新裝載到TL中。定時(shí)時(shí)間t=(28-初值)×振蕩周期×12;計(jì)數(shù)長度位28=256個(gè)外部脈沖(4)模式3:對T0和T1不?相同。若設(shè)T0位模式3,TL0和TH0被分為兩個(gè)相互獨(dú)?的8位計(jì)數(shù)器。TL0為8位計(jì)數(shù)器,功能與模式0和模式1相同,可定時(shí)可計(jì)數(shù)。TH0僅?作簡單的內(nèi)部定時(shí)功能,它占?了定時(shí)器T1的控制位TR1和中斷標(biāo)志位TF1,啟動和關(guān)閉僅受TR1控制。定時(shí)器T1??作模式3,但T0在?作模式3時(shí)T1仍可設(shè)置為0~2。7、當(dāng)T0?作模式3時(shí),由于TR1已被T0占?,如何控制T1的開啟和關(guān)閉?答:?T1控制位C/T切換定時(shí)器或計(jì)數(shù)器?作?式就可以使T1運(yùn)?。定時(shí)器T1??作模式3,將T1設(shè)置為?作模式3,就會使T1?即停?計(jì)數(shù),關(guān)閉。8、以定時(shí)器/計(jì)數(shù)器1進(jìn)?外部時(shí)間計(jì)數(shù),每計(jì)數(shù)1000個(gè)脈沖后,定時(shí)器/計(jì)數(shù)器1轉(zhuǎn)為定時(shí)?作?式,定時(shí)10ms后?轉(zhuǎn)為計(jì)

數(shù)?式,如此循環(huán)不?。假定為6WHZ,?模式1編程。解:T1為定時(shí)器時(shí)初值:T1為計(jì)數(shù)器時(shí)初值:L1:MOVTMOD,#50H;設(shè)置T1為計(jì)數(shù)?式且?作模式為1MOVTH1,#0FCH;置?計(jì)數(shù)初值MOVTL1,#18HSETBTR1;啟動T1計(jì)數(shù)器LOOP1:JBCTF1,L2;查詢計(jì)數(shù)溢出?有溢出(計(jì)數(shù)滿1000個(gè))轉(zhuǎn)L2SJMPLOOP1;?溢出轉(zhuǎn)LOOP1,繼續(xù)查詢L2:CLRTR1;關(guān)閉T1MOVTMOD,#10H;設(shè)置T1為定時(shí)?式且?作與模式1MOVTH1,#0ECH;置?定時(shí)10ms初值MOVTL1,#78HSETBTR1;啟動T1定時(shí)LOOP2:JBCTF1,L1;查詢10ms時(shí)間到?時(shí)間到,轉(zhuǎn)L1SJMPLOOP2;時(shí)間未到,轉(zhuǎn)LOOP2,繼續(xù)查詢10、使??個(gè)定時(shí)器,如何通過軟硬件結(jié)合?法實(shí)現(xiàn)較長時(shí)間的定時(shí)?答:設(shè)定好定時(shí)器的定時(shí)時(shí)間,采?中斷?式?軟件設(shè)置計(jì)數(shù)次數(shù),進(jìn)?溢出次數(shù)累計(jì),從?得到較長的時(shí)間。11、89C51定時(shí)器作定時(shí)和計(jì)數(shù)時(shí)其計(jì)數(shù)脈沖分別由誰提供?答:作定時(shí)器時(shí)計(jì)數(shù)脈沖由89C51?內(nèi)振蕩器輸出經(jīng)12分頻后的脈沖提供,作計(jì)數(shù)時(shí)計(jì)數(shù)脈沖由外部信號通過引腳P3.4和P3.5提供。13、已知89C51單?機(jī)的fosc=6MHz,請利?T0和P1.0輸出矩形波。矩形波?電平寬50μs,低電平寬300μs。解:T0采?模式2作為50μs定時(shí)時(shí)的初值:所以作300μs定時(shí)時(shí)的初值:MOVTMOD,#02H;設(shè)置定時(shí)器T0?作于模式2L2:CLRP1.0;P1.0輸出低電平MOVTH0,#6AH;置?定時(shí)300μs初值MOVTL0,#6AHSETBTR0;啟動T0LOOP1:JBCTF0,L1;查詢300μs時(shí)間到?時(shí)間到,轉(zhuǎn)L1SJMPLOOP1;時(shí)間未到,轉(zhuǎn)LOOP1,繼續(xù)查詢L1:SETBP1.0;P1.0輸出?電平CLRTR0;關(guān)閉T0MOVTH0,#0E7H;置?定時(shí)300μs初值MOVTL0,#0E7HSETBTR0;啟動T0LOOP2:JBCTF0,L2;查詢50μs時(shí)間到?時(shí)間到,轉(zhuǎn)L2

SJMPLOOP2;時(shí)間未到,轉(zhuǎn)LOOP2,繼續(xù)查詢14、已知89C51單?機(jī)的fosc=12MHz,?T1定時(shí)。試編程由P1.0和P1.1引腳分別輸出周期為2ms和500μs的?波。解:采?模式0作定時(shí)初值:所以MOVR2,#04H;R2為“250μs”計(jì)數(shù)器,置?初值4CLRP1.0;P1.0輸出低電平CLRP1.1;P1.1輸出低電平MOVTMOD,#00HL2:MOVTH1,#0F8H;置?定時(shí)250μs初值MOVTL1,#06HSETBTR1;啟動T1LOOP:JBCTF1,L1;查詢250μs時(shí)間到?時(shí)間到,轉(zhuǎn)L1SJMPLOOP;時(shí)間未到,轉(zhuǎn)LOOP,繼續(xù)查詢L1:CPLP1.1;P1.1輸出取反,形成周期為500μsCLRTR1;關(guān)閉T1DJNZR2,L2;“250μs”計(jì)數(shù)器減1,到1ms嗎?未到轉(zhuǎn)L2CPLP1.0;P1.0輸出取反,形成周期為2ms?波MOVR2,#04H;重置“250μs”計(jì)數(shù)器初值4LJMPL2;重復(fù)循環(huán)15、單?機(jī)8031的時(shí)鐘頻率為6MHz,若要求定時(shí)值分別為0.1ms,1ms,10ms,定時(shí)器0?作在模式0、模式1和模式2時(shí),其定時(shí)器初值各應(yīng)是多少?解:(1)0.1ms模式0:T0低5位01110B=0EH,T0?8位:11111110B=FEH模式1:模式2:(2)1ms模式0:T0低5位01100B=0CH,T0?8位:11110000B=F0H模式1:模式2:在此情況下最長定時(shí)為512μs,?法?次實(shí)現(xiàn)定時(shí)1ms,可?0.1ms循環(huán)10次(3)10ms模式0:T0低5位11000B=18H,T0?8位:01100011B=63H模式1:模式2:在此情況下最長定時(shí)為512μs,?法?次實(shí)現(xiàn)定時(shí)10ms,可?0.1ms循環(huán)100次17、試編制?段程序,功能為:當(dāng)P1.2引腳的電平上跳時(shí),對P1.1的輸?脈沖進(jìn)?計(jì)數(shù);當(dāng)P1.2引腳的電平下跳時(shí),停?計(jì)數(shù),并將計(jì)數(shù)值寫?R6,R7。解:MOVTMOD,#05H;T0為計(jì)數(shù)?式且?作于模式1

JNBP1.2,$;等待P1.2引腳電平上跳MOVTH0,#00H;P1.2電平上跳,置?計(jì)數(shù)初值MOVTL0,#00HSETBTR0;啟動T0JBP1.2,$;等待P1.2引腳電平下跳CLRTR0;電平下跳,關(guān)閉T0MOVR7,TH0;計(jì)數(shù)初值寫?R7,R6MOVR6,TL018、設(shè)fosc=12MHz。試編制?段程序,功能為:對定時(shí)器T0初始化,使之?作在模式2,產(chǎn)?200μs定時(shí),并?查詢T0溢出標(biāo)志的?法,控制P1.0輸出周期為2ms的?波。解:T0作定時(shí)器時(shí)初值:所以程序1:CLRP1.0;P1.0輸出低電平MOVR2,#05H;R2為“200μs”計(jì)數(shù)器,置?初值5,計(jì)1msMOVTMOD,#02H;設(shè)定時(shí)器T0?作于模式2L2:MOVTH0,#38H;置?定時(shí)初值MOVTL0,#38HSETBTR0;啟動T0LOOP:JBCTF0,L1;查詢200μs時(shí)間到?時(shí)間到,轉(zhuǎn)L1SJMPLOOP;時(shí)間未到,轉(zhuǎn)LOOP,繼續(xù)查詢L1:CLRTR0;關(guān)閉T0DJNZR2,L2;“200μs”計(jì)數(shù)器減1,到1ms嗎?未到,轉(zhuǎn)L2CPLP1.0;到1ms,P1.0取反,形成周期為2ms的?波MOVR2,#05H;重置“200μs”計(jì)數(shù)器初值LJMPL2;重復(fù)循環(huán)程序2:MAIN:MOVTMOD,#02H;設(shè)定時(shí)器T0?作于模式2CLRP1.0;P1.0輸出低電平LOOP1:MOVR2,#05H;R2為“200μs”計(jì)數(shù)器,置?初值5,計(jì)1msLOOP:MOVTH0,#38H;置?定時(shí)初值MOVTL0,#38HSETBTR0;啟動T0JNBTF0,$;查詢200μs時(shí)間到?時(shí)間到,繼續(xù)查詢CLRTR0;關(guān)閉T0DJNZR2,LOOP;“200μs”計(jì)數(shù)器減1,到1ms嗎?未到,轉(zhuǎn)LOOPCPLP1.0;到1ms,P1.0取反,形成周期為2ms的?波

SJMPLOOP1;重復(fù)循環(huán)19、以中斷?法設(shè)計(jì)單?機(jī)秒、分脈沖發(fā)?器。假定P1.0每秒產(chǎn)?1個(gè)機(jī)器周期的正脈沖,P1.1每分產(chǎn)?1個(gè)周期的正脈沖。第七章2、89C51單?機(jī)的串??由哪些功能部件組成?各有什么作??答:89C51單?機(jī)的串?接?由發(fā)送緩沖期SBUF,接收緩沖期SBUF、輸?移位寄存器、串?接?控制器SCON、定時(shí)器T1構(gòu)成的波特率發(fā)?器等部件組成。由發(fā)送緩沖期SBUF發(fā)送數(shù)據(jù),接收緩沖期SBUF接收數(shù)據(jù)。串?接?通信的?作?式選擇、接收和發(fā)送控制及狀態(tài)等均由串?接?控制寄存器SCON控制和指?。定時(shí)器T1產(chǎn)?串?通信所需的波特率。3、簡述串??接收和發(fā)送數(shù)據(jù)的過程。答:串?接?的接收和發(fā)送是對同?地址(99H)兩個(gè)物理空間的特殊功能寄存器SBUF進(jìn)?讀和寫的。當(dāng)向SBUF發(fā)“寫”命令時(shí)(執(zhí)?“

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論