單片機習(xí)題答案_第1頁
單片機習(xí)題答案_第2頁
單片機習(xí)題答案_第3頁
單片機習(xí)題答案_第4頁
單片機習(xí)題答案_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 何宏單片機原理與接口技術(shù)習(xí)題解答 第4章 習(xí)題解答 4-1簡述下列基本概念。答 指令:cpu根據(jù)人的意圖來執(zhí)行某種操作的命令。 指令系統(tǒng):一臺計算機所能執(zhí)行的全部指令集合。 機器語言:用二進制編碼表示,計算機能直接識別和執(zhí)行的語言。 匯編語言:用助記符、符號和數(shù)字來表示指令的程序語言。 高級語言:獨立于機器的,在編程時不需要對機器結(jié)構(gòu)及其指令系統(tǒng)有深入了解的通用性語言。4-2什么是計算機的指令和指令系統(tǒng)?答 見1題。4-3簡述80c51匯編指令格式。答 操作碼 目的操縱數(shù),源操作數(shù)4-4簡述80c51的尋址方式和所能涉及的尋址空間。答 立即數(shù)尋址:程序存儲器rom。 直接尋址:片內(nèi)ram低1

2、28b和特殊功能寄存器。 寄存器尋址:r0r7,a,ab,cy,dptr。 寄存器間接尋址:片內(nèi)ram低128b,片外ram。 變址尋址:程序存儲器64kb。 相對尋址:程序存儲器256b范圍。 位尋址:片內(nèi)ram的20h2fh字節(jié)地址,部分特殊功能寄存器。4-5要訪問特殊功能寄存器和片外數(shù)據(jù)存儲器,應(yīng)采用哪些尋址方式?答 sfr:直接尋址,位尋址,寄存器尋址;片外ram:寄存器間接尋址。4-6在80c51片內(nèi)ram中,已知(30h)=38h,(38h)=40h,(40h)=48h,(48h)=90h。請分析下面各是什么指令,說明源操作數(shù)的尋址方式及按順序執(zhí)行后的結(jié)果。答 mov a,40h

3、直接尋址 mov r0,a 寄存器尋址 mov p1,#0f0h 立即數(shù)尋址 mov r0,30h 直接尋址 mov dptr,#3848h 立即數(shù)尋址 mov 40h,38h 直接尋址 mov r0,30h 直接尋址 mov p0,r0 寄存器尋址 mov 18h,#30h 立即數(shù)尋址 mov a,r0 寄存器間接尋址 mov p2,p1 直接尋址 均為數(shù)據(jù)傳送指令,結(jié)果(參見下圖)為ram30h38h38h40h40h48h48h90h (18h)=30h,(30h)=38h,(38h)=40h (40h)=40h,(48h)=90h r0=38h,a=40h,p038h,p1foh,p2

4、=foh,dptr=3848h4-7對80c51片內(nèi)ram高128b的地址空間尋址要注意什么?答 用直接尋址,寄存器尋址,位尋址。4-8指出下列指令的本質(zhì)區(qū)別。答 mov a,data 直接尋址 mov a,#data 立即數(shù)尋址 mov data1,data2 直接尋址 mov 74h,#78h 立即數(shù)尋址4-9設(shè)r0的內(nèi)容為32h,a的內(nèi)容為48h,片內(nèi)ram的32h內(nèi)容為80h,40h的內(nèi)容為08h。請指出在執(zhí)行下列程序段后各單元內(nèi)容的變化。 mov a,r0 ;(r0)=80ha mov r0,40h ;(40h)=08h(r0) mov 40h,a ;(a)=80h40h mov r

5、0,#35h ; 35hr0解 (r0)=35h (a)80h (32h)08h (40h)=80h4-10如何訪問sfr,可使用哪些尋址方式?答 訪問sfr:直接尋址,位尋址,寄存器尋址。4-11如何訪問片外ram單元,可使用哪些尋址方式?答 只能采用寄存器間接尋址(用movx指令)。4-12如何訪問片內(nèi)ram單元,可使用哪些尋址方式?答 低128b:直接尋址,位尋址,寄存器間接尋址,寄存器尋址(r0r7)。 高128b:直接尋址,位尋址,寄存器尋址。4-13如何訪問片內(nèi)外程序存儲器,采用哪些尋址方式?答 采用變址尋址(用movc指令)。4-14說明十進制調(diào)整的原因和方法。答 壓縮bcd碼在

6、進行加法運算時本應(yīng)逢十進一,而計算機只將其當作十六進制數(shù)處理,此時得到的結(jié)果不正確。用daa指令調(diào)整(加06h,60h,66h)。4-15說明80c51的布爾處理機功能。 答 用來進行位操作。4-16已知(a)=83h,(r0)=17h,(17h)=34h,請指出在執(zhí)行下列程序段后a的內(nèi)容。解 anl a,#17h ;83h17h=03ha orl 17h,a ;34h03h=37h17h xrl a,r0 ;03h異或37h=34h cpl a ;34h求反等于cbh 所以 (a)=cbh4-17使用位操作指令實現(xiàn)下列邏輯操作。要求不得改變未涉及位的內(nèi)容。解 (1) 使acc.0置1 set

7、b acc.0 或 setb eoh (2) 清除累加器高4位 clr acc.7 clr acc.6 clr acc.5 clr acc.4 (3)清除acc.3,acc.4,acc.5,acc.6 clr acc.6 clr acc.5 clr acc.4 clr acc.34-18編寫程序,將片內(nèi)ram r0r7的內(nèi)容傳送到20h27h單元。解 mov 27h,r7 mov 23h,r3 mov 26h,r6 mov 22h,r2 mov 25h,r5 mov 21h,r1 mov 24h,r4 mov 20h,r04-19編寫程序,將片內(nèi)ram的20h,21h,22h三個連續(xù)單元的內(nèi)容

8、依次存入2fh,2eh,2dh中。解 mov 2fh,20h mov 2eh,21h mov 2dh,22h4-20編寫程序,進行兩個16位數(shù)的減法:6f5dh一13b4h,結(jié)果存入片內(nèi)ram的30h和31h單元,30h存差的低8位。解 clr c mov a,#5dh ;被減數(shù)低8位a mov r2,#b4h ;減數(shù)低8位r2 subb a,r2 ;被減數(shù)減去減數(shù),差a mov 30h,a ;低8位結(jié)果30h mov a,#6fh ;被減數(shù)高8位a mov r2,#13h ;減數(shù)高8位r2 subb a,r2 ;被減數(shù)減去減數(shù),差a mov 31h,a ;高8位結(jié)果31h4-21編寫程序,若

9、累加器a的內(nèi)容分別滿足下列條件時,則程序轉(zhuǎn)至label存儲單元。設(shè)a中有的是無符號數(shù)。解 (1) a10 cjne a,#10,l1 ;(a)與10比較,不等轉(zhuǎn)l1 l2:ljmp label ;相等轉(zhuǎn)label l1:jnc l2 ;(a)大于10,轉(zhuǎn)label (2)a10 cjne a,#10,l1 ;(a)與10比較,不等轉(zhuǎn)l1 sjmp l3 ;相等轉(zhuǎn)l3 l1:jnc l2 ;(a)大于10,轉(zhuǎn)l2 sjmp l4 ;(a)小于10,轉(zhuǎn)l4l2:jmp label ;無條件轉(zhuǎn)label (3)a10 cjne a,#10,l1 ;(a)與10比較,不等轉(zhuǎn)l1 l2:ljmp lab

10、el ;相等轉(zhuǎn)label l1:jc,l2 ;(a) 小于10,轉(zhuǎn)label 4-22已知sp=25h,pc=2345h,(24h)=12h,(25h)=34h,(26h)=56h。問此時執(zhí)行“ret”指令后,sp=? pc=?解 sp23h,pc=3412h4-23已知sp=25h,pc=2345h,標號label所在的地址為3456h。問執(zhí)行長調(diào)用指令“l(fā)call label”后,堆棧指針和堆棧內(nèi)容發(fā)生什么變化?pc的值等于什么?解 sp27h,(26h)=48h,(27h)23h,pc3456h4-24上題中l(wèi)call能否直接換成acall指令,為什么? 如果使用acall指令,則可調(diào)用

11、的地址范圍是多少?解 不能。acall是短轉(zhuǎn)指令,可調(diào)用的地址范圍是2 kb。4-25閱讀下列程序,要求:(1)說明程序功能;(2)試修改程序,使片內(nèi)ram的內(nèi)容成為如圖所示的結(jié)果。 mov r2,#0ah50h00hmov r0,#50h51h01hclr a52h02hloop:mov r0,a53h03hinc r054h04hdjnz r2,loop55h05hdone:56h06h57h07h58h08h59h09h 解 (1)功能是將片內(nèi)ram中50h59h單元清零。 (2)7a(oa) (7850) da(fc)(3)在inc r0后添一句inc a。4-26設(shè)(r0)=7eh,

12、(dptr)=10feh,片內(nèi)ram中7eh單元的內(nèi)容為0ffh,7f單元的內(nèi)容為38h,試為下列程序注釋其運行結(jié)果。解 inc r0 (7eh)00h inc r0 (r0)7fh inc r0 (7fh) 39h inc dptr (dptr) 10ffh inc dptr (dptr) 1100h inc dptr (dptr) 1101h4-27下列程序段經(jīng)匯編后,從1000h開始的各有關(guān)存儲單元的內(nèi)容將是什么? org 1000h tab1 equ 1234h tab2 equ 3000hdb “start”dw tab1,tab2,70h解 (1000h)=53h (1001h)=

13、54h (1002h)=41h (1003h)=52h (1004h)=54h (1005h)=12h (1006h)=34h (1007h)=30h (1008h)=00h (1009h)00h (100ah)=70h4-28閱讀下列程序,并要求:(1)說明程序功能;(2)寫出涉及的寄存器及片內(nèi)ram單元(如圖所示)的最后結(jié)果。40h98hafh mov r0,#40h ;40hr0 mov a,r0 ;98ha inc r0 ;41hr0 add a,r0 ;98+(a)=47ha inc r0 mov r0,a ;結(jié)果存入42h單元 clr a ;清a addc a,#0 ;進位位存入a

14、 inc r0 mov r0,a ;進位位存入43h解 功能:將40h,41h單元中的內(nèi)容相加結(jié)果放在42h單元,進位放在43h單元,(r0)=43h,(a)1,(40h)=98h,(41h)afh,(42h)47h,(43h)=01h。4-29同上題要求,程序如下:61hf2hcch mov a,61h ;f2ha mov b,#02h ;02hb mul ab ;f2h02he4ha add a,62h ;積的低8位加上ccha mov 63h,a ;結(jié)果送63h clr a ;清a addc a,b ;積的高8位加進位位a mov 64h,a ;結(jié)果送64h解 功能:將61h單元的內(nèi)容乘

15、2,低8位再加上62h單元的內(nèi)容放人63h,將結(jié)果的高8位放在64h單元。(a)02h (b)01h (61h)f2h (62h)cch (63h)boh (64h)02h4-30編寫程序,采用“與”運算,判斷8位二進制數(shù)是奇數(shù)個1還是偶數(shù)個1。解 mov a,#xxh ;待判斷的數(shù)a anl a,#0ffh ;與0ffh相與 jb p,rel ;是奇數(shù)轉(zhuǎn)rel ;是偶數(shù)程序順序執(zhí)行 rel: 4-31編寫程序,采用“或”運算,使任意8位二進制數(shù)的符號位必為1。解 mov a,xxh ;取數(shù)據(jù)a orl a,#80h ;使該數(shù)符號位為1 mov xxh,a ;保存該數(shù)據(jù)4-32請思考:采用“異

16、或”運算怎樣可使一帶符號數(shù)的符號位改變,數(shù)據(jù)位不變?怎樣可使該數(shù)必然為零? 解 (1)符號位改變,數(shù)據(jù)位不變: mov a,xxh ;取數(shù)據(jù)a xrl a,#80h ;異或80ha (2)使該數(shù)為零: mov a,xxh ;該數(shù)a mov r0,a ;該數(shù)r0 xrl a,r0 ;該數(shù)自身相異或第5章 習(xí)題解答5-1編寫程序,查找在片內(nèi)ram中的20h50h單元中是否有0aah這一數(shù)據(jù)。若有,則51h單元置為01h;若未找到,則51h單元置為00h。解 mov r2,#31h ;數(shù)據(jù)塊長度r2 mov r0,#20h ;數(shù)據(jù)塊首地址r0 loop:mov a,r0 ;待查找的數(shù)據(jù)a clr c

17、 ;清進位位 subb a,#0aah ;待查找的數(shù)據(jù)是 0aah 嗎 jz l1 ;是,轉(zhuǎn)l1 inc r0 ;不是,地址增1,指向下一個待查數(shù)據(jù) djnz r2,loop ;數(shù)據(jù)塊長度減1,不等于0,繼續(xù)查找 mov 51h,#00h ;等于0,未找到,00h51h sjmp l2 ;返回l1: mov 51h,#01h ;找到,01h51hl2: ret ;返回 5-2編寫程序,查找在片內(nèi)ram中的20h50h單元中出現(xiàn)00h的次數(shù),并將查找結(jié)果存入51h單元。 解 mov r2,#31h ;數(shù)據(jù)塊長度r2 mov r0,#20h ;數(shù)據(jù)塊首地址r0 mov 51h,#00h ;51h單

18、元清零,以記錄00h的個數(shù)loop: mov a,r0 ;待查找的數(shù)據(jù)a anl a,#0ffh ;與0ffh相與,判斷該數(shù)據(jù)是否為零 jnz l1 ;不為零,轉(zhuǎn)l1 inc 51h ;為零,00h個數(shù)增1l1: inc r0 ;地址增1,指向下一個待查數(shù)據(jù) djnz r2,loop ;數(shù)據(jù)塊長度減1,不等于零,繼續(xù)查找 ret ;全部查找完,返回5-3外部數(shù)據(jù)ram中有一個數(shù)據(jù)塊,存有若干字符、數(shù)字,首地址為source。要求將數(shù)據(jù)塊傳送到內(nèi)部ram以dist開始的區(qū)域,直到遇到字符“$”時結(jié)束。(“$”也要傳送,它的ascii碼為24h。)解 mov dptr,#source ;源首地址d

19、ptr mov r0,#dist ;目的首地址r0l1: movx a,dptr ;傳送一個字符 mov r0,a inc dptr ;指向下一個字符 inc r0 cjne a,#24h,l1 ;傳送的是“$”字符嗎?不是,傳送下一個字符 ret ; 是,結(jié)束傳送5-4已知r3和r4中存有一個16位的二進制數(shù),高位在r3中,低位在r4中。編寫程序?qū)⑵淝笱a,并存回原處。解 mov a,r3 ;取該數(shù)高8位a anl a,#80h ;取出該數(shù)符號判斷 jz l1 ;是正數(shù),轉(zhuǎn)l1 mov a,r4 ;是負數(shù),將該數(shù)低8位a cpl a ;低8位求反 add a,#01h ;加1 mov r4,a

20、 ;低8位求反加1后r4 mov a,r3 ;取該數(shù)高8位a cpl a ;高8位求反 addc a,#00h ;加上低8位加1時可能產(chǎn)生的進位 mov r3,a ;高8位求反后r3l1: ret5-5已知30h和31h中存有一個16位的二進制數(shù),高位在前,低位在后。編寫程序?qū)⑵涑?,并存回原處。解 clr c ;清進位位c mov a,31h ;取該數(shù)低8位a rlc a ;帶進位位左移一位 mov 31h,a ;結(jié)果存回31h mov a,30h ;取該數(shù)高8位a rlc a ;帶進位位左移一位 mov 30h,a ;結(jié)果存回30h5-6內(nèi)存中有2個4b以壓縮bcd碼形式存放的十進制數(shù),一

21、個存放在30h33h的單元中,一個存放在40h43h的單元中。編寫程序求它們的和,結(jié)果存放在30h33h中。解 mov r2,#04h ;字節(jié)長度r2 mov r0,#30h ;一個加數(shù)首地址r0 mov r1,#40h ;另一個加數(shù)首地址r1 clr c ;清進位位l1; mov a,r0 ;取一個加數(shù) addc a,r1 ;兩個加數(shù)帶進位相加 daa ;十進制調(diào)整 mov r0,a ;存放結(jié)果 inc r0 ;指向下一個字節(jié) inc r1 djnz r2,l1 ;字節(jié)長度減l,沒加完,轉(zhuǎn)l1,繼續(xù)相加 ret ;全加完,返回5-7編寫程序,把片外ram從2000h開始存放的8個數(shù)傳送到片內(nèi)

22、30h開始的單元中。解 mov r2,#08h ;數(shù)據(jù)塊長度r2 mov r1,#30h ;數(shù)據(jù)塊目的地址r1 mov dptr,#2000h ;數(shù)據(jù)塊源地址dptrloop: movx a,dptr ;傳送一個數(shù)據(jù) mov r1,a inc dptr ;指向下一個數(shù)據(jù) inc r1 djnz r2,loop ;長度減1,沒傳送完,轉(zhuǎn)loop,繼續(xù)傳送 ret ;傳送完,返回5-8解 mov dptr,#2000h ;數(shù)據(jù)塊源地址dptrmovx a,dptr ;傳送一個數(shù)據(jù) cpl a setb acc.0 ;指向下一個數(shù)據(jù) setb acc.7 ;指向下一個數(shù)據(jù)movx a,dptr ;存

23、放結(jié)果ret5-9解 mov r0,#20h ;一個加數(shù)首地址r0mov a,r0 ;取數(shù)組長度mov r2,a ;數(shù)組長度r2 inc r0 ;指向數(shù)組字節(jié) clr a ;清al1; add a,r0 ;加一個加數(shù) inc r0 ;指向下一個字節(jié) djnz r2,l1 ;數(shù)組長度減l,沒加完,轉(zhuǎn)l1,繼續(xù)相加 mov r0,a ;存放結(jié)果ret ;全加完,返回第6章 習(xí)題解答6-1什么是中斷和中斷系統(tǒng)?其主要功能是什么?答 當cpu正在處理某件事情的時候,外部發(fā)生的某一事件請求cpu迅速去處理,于是,cpu暫時中止當前的工作,轉(zhuǎn)去處理所發(fā)生的事件,中斷服務(wù)處理完該事件以后,再回到原來被終止的

24、地方,繼續(xù)原來的工作。這種過程稱為中斷,實現(xiàn)這種功能的部件稱為中斷系統(tǒng)。功能1;使計算機具有實時處理功能,能對外界異步發(fā)生的事件作出及時的處理。功能2:完全消除了cpu在查詢方式中的等待現(xiàn)象,大大提高了cpu的工作效率。功能3:實現(xiàn)實時控制。6-2試編寫一段對中斷系統(tǒng)初始化的程序,使之允許、to、串行接口中斷,且使to中斷為高優(yōu)先級中斷。解mov ie,#097h10010111iemov ip,#02h00000010ip6-3在單片機中,中斷能實現(xiàn)哪些功能?答 有三種功能:分時操作,實時處理,故障處理。6-480c51有哪些中斷源?對其中斷請求如何進行控制?答 (1)80c51有如下中斷源

25、:外部中斷0請求,低電平有效(由p3.2輸入)。:外部中斷1請求,低電平有效(由p3.3輸入)。to:定時器/計數(shù)器0溢出中斷請求。ti:定時器/計數(shù)器1溢出中斷請求。tx/rx:串行接口中斷請求。(2)通過對特殊功能寄存器tcon、scon、ie、ip的各位進行置位或復(fù)位等操作,可實現(xiàn)各種中斷控制功能。6-5什么是中斷優(yōu)先級?中斷優(yōu)先處理的原則是什么?答 中斷優(yōu)先級是cpu響應(yīng)中斷的先后順序。原則:(1)先響應(yīng)優(yōu)先級高的中斷請求,再響應(yīng)優(yōu)先級低的。(2)如果一個中斷請求已被響應(yīng),同級的其他中斷請求將被禁止。(3)如果同級的多個中斷請求同時出現(xiàn),則cpu通過內(nèi)部硬件查詢電路,按查詢順序確定應(yīng)該

26、響應(yīng)哪個中斷請求。查詢順序:外部中斷0定時器0中斷外部中斷1定時器1中斷串行接口中斷6-6說明外部中斷請求的查詢和響應(yīng)過程。 答 當cpu執(zhí)行主程序第k條指令時,外設(shè)向cpu發(fā)出中斷請求,cpu接到中斷請求信號并在本條指令執(zhí)行完后,中斷主程序的執(zhí)行并保存斷點地址,然后轉(zhuǎn)去響應(yīng)中斷。cpu在每一個s5p2期間順序采樣每個中斷源,cpu在下一個機器周期s6期間按優(yōu)先級順序查詢中斷標志,如查詢到某個中斷標志為1,將在接下來的機器周期s1期間按優(yōu)先級進行中斷處理,中斷系統(tǒng)通過硬件自動將相應(yīng)的中斷矢量地址裝入pc,以便進入相應(yīng)的中斷服務(wù)程序。中斷服務(wù)完畢后,cpu返回到主程序第k+1條指令繼續(xù)執(zhí)行。6-

27、780c51在什么條件下可響應(yīng)中斷?答 (1)有中斷源發(fā)出中斷請求。(2)中斷總允許位ea1,即cpu開中斷。(3)申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽。(4)無同級或更高級中斷正在服務(wù)。(5)當前指令周期已經(jīng)結(jié)束。(6)若現(xiàn)行指令為reti或訪問ie或ip指令時,該指令以及緊接著的另一條指令已執(zhí)行完畢。6-8簡述80c51單片機的中斷響應(yīng)過程。答 cpu在每個機器周期s5p2期間順序采樣每個中斷源,cpu在下一個機器周期s6期間按優(yōu)先級順序查詢中斷標志,如查詢到某個中斷標志為1,將在接下來的機器周期s1期間按優(yōu)先級進行中斷處理,中斷系統(tǒng)通過硬件自動將相應(yīng)的中斷矢量地址裝入pc,

28、以便進入相應(yīng)的中斷服務(wù)程序。一旦響應(yīng)中斷,8051首先置位相應(yīng)的中斷“優(yōu)先級生效”觸發(fā)器,然后由硬件執(zhí)行一條長調(diào)用指令,把當前的pc值壓人堆棧,以保護斷點,再將相應(yīng)的中斷服務(wù)的入口地址送人pc,于是cpu接著從中斷服務(wù)程序的人口處開始執(zhí)行。對于有些中斷源,cpu在響應(yīng)中斷后會自動清除中斷標志。6-9在80c51 rom中,應(yīng)如何安排程序區(qū)?答 主程序一般從0030h開始,主程序后一般是子程序及中斷服務(wù)程序。 中斷源 中斷矢量地址 int0 0003h to 000bh int1 0013h t1 001bh 串行接口 0023h6-10試述中斷的作用及全過程。答 作用:對外部異步發(fā)生的事件作出

29、及時的處理。過程:中斷請求,中斷響應(yīng),中斷處理,中斷返回。6-11在執(zhí)行某一中斷源的中斷服務(wù)程序時,如果有新的中斷請求出現(xiàn),試問在什么情況下可響應(yīng)新的中斷請求?在什么情況下不能響應(yīng)新的中斷請求?答 (1)符合以下6個條件可響應(yīng)新的中斷請求:有中斷源發(fā)出中斷請求。中斷總允許位ea1,即cpu開中斷。申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽。無同級或更高級中斷正在被服務(wù)。 當前的指令周期已結(jié)束。若現(xiàn)行指令為reti或訪問ie或ip指令時,該指令以及緊接著的另一條指令已執(zhí)行完。(2)如果新的中斷請求“優(yōu)先級”低于正在執(zhí)行的中斷請求或與其同級,則不能被響應(yīng)。6-1280c51單片機外部中斷源

30、有幾種觸發(fā)中斷請求的方法?如何實現(xiàn)中斷請求?答 有兩種方式:電平觸發(fā)和沿觸發(fā)。電平觸發(fā)方式:cpu在每個機器周期的s5p2期間采樣外部中斷引腳的輸入電平。若為低電平,使ie1(ie0)置“1”,申請中斷;若為高電平,則ie1(ie0)清零。邊沿觸發(fā)方式:cpu在每個機器周期的s5p2期間采樣外部中斷請求引腳的輸入電子。如果在相繼的兩個機器周期采樣過程中,一個機器周期采樣到外部中斷請求為高電平,接著下個機器周期采樣到外部中斷請求為低電平,則使ie1(ie0)置1,申請中斷,否則,ie1(ie0)置0。6-138051單片機有五個中斷源,但只能設(shè)置兩個中斷優(yōu)先級,因此在中斷優(yōu)先級安排上受到一定的限

31、制,試問以下幾種中斷優(yōu)先級的安排(由高到低)是否可能?若可能,則應(yīng)如何設(shè)置中斷源的中斷級別?否則請簡述不可能的理由。解 同級優(yōu)先次序為:,to,t1,tx/rx。(1)定時器0,定時器1,外部中斷0,外部中斷1,串行接口中斷??梢?,將to,t1設(shè)置為高級。mov ip,#0ah(2)串行接口中斷,外部中斷0,定時器0溢出中斷,外部中斷1,定時器1溢出中斷??梢裕瑢⒋薪涌谥袛嘣O(shè)置為高級。mov 0b8h,#10h(3)外部中斷0,定時器1溢出中斷,外部中斷1,定時器0溢出中斷,串行接口中斷。不可以,只能設(shè)置一級高級優(yōu)先級,將int0、t1設(shè)置為高級,而to級別高于int1。(4)外部中斷0,外

32、部中斷1,串行接口中斷,定時器1溢出中斷,定時器0溢出中斷。不可以,若將int0,int1,tx/rx設(shè)置為高級,而to高于t1。(5)串行接口中斷,外定時器0溢出中斷,外部中斷0,外部中斷1,定時器1溢出中斷。不可以,rx/tx級別最低,可將其設(shè)為最高級,而int0優(yōu)先級又高于to。(6)外部中斷0,外部中斷1,定時器0溢出中斷,串行接口中斷,定時器1溢出中斷。不可以,rx/tx級別最低,可設(shè)為最高級,而to優(yōu)先級又高于intl。(7)外部中斷0,定時器1溢出中斷,定時器0溢出中斷,外部中斷1,串行接口中斷??梢裕瑢nt0,t1設(shè)為最高級。mov 0b8h,#09h6-14以中斷方法設(shè)計單

33、片機秒、分脈沖發(fā)生器,假定p1.0每秒鐘產(chǎn)生一個機器周期的正脈沖,p1.1每分鐘產(chǎn)生一個機器周期的正脈沖。解 程序1(中斷法): 1s50ms14h50ms20 1min1s3ch1s60 設(shè) 12mhz t0.05s50ms t0 模式1 即tmod=01h定時時間t(216一定時器初值x)12振蕩周期(216x)12/(12106)所以 x216-50103655365000015536=3cboh org 0000h ajmp main org 000bh ajmp inser org 0100hmain: mov r0,#00h ;r0為50ms計數(shù)器 mov r1,#00h ;r1為

34、秒計數(shù)器 mov tmod,#01h ;定時器t0工作于模式1 mov th0,#3ch ;置50 ms定時初值 mov tl0,#0boh setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動定時器t0loop: ajmp loop ;等待50ms時間到 org 0200hinser: mov th0,#3ch ;重新置人定時初值 mov tl0,#0boh inc r0 ;50 ms計數(shù)器增1 cjne r0,#14h,l1 ;未到1s,轉(zhuǎn)l1,中斷返回 clr p1.0 setb p1.0 ;到ls,發(fā)一個正脈沖 clr p1.0 mov r0,#0

35、0h ;清r0 inc r1 ;秒計數(shù)器增1 cjne r1,#3ch,l1 ;未到1min,轉(zhuǎn)l1,中斷返回 clr p1.1 setb p1.1 ;到1min,發(fā)一個正脈沖 clr p1.1 mov r1,#00h ;清r1l1: reti ;中斷返回解 程序2(中斷法): 1s50ms14h50ms20 1min1s3ch1s60 設(shè) 12mhz t0.05s50ms t0 模式1 即tmod=01h定時時間t(216一定時器初值x)12振蕩周期(216x)12/(12106)所以 x216-50103655365000015536=3cboh org 0000h ajmp main o

36、rg 000bh ajmp inser org 0100hmain: mov r0,#14h ;r0為“50ms”計數(shù)器,置入初值20(計1s) mov r1,#3ch ;r1為秒計數(shù)器,置入初值60(計1min) mov tmod,#01h ;定時器t0工作于模式1 mov th0,#3ch ;置50 ms定時初值 mov tl0,#0boh setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動定時器t0loop: ajmp loop ;等待50ms時間到 org 0200hinser: mov th0,#3ch ;重新置人定時初值 mov tl0,#0

37、boh djnz r0,l1 ;“50ms”計數(shù)器減1,到1s嗎? 未到轉(zhuǎn)l1,中斷返回 clr p1.0 setb p1.0 ;到ls,發(fā)一個正脈沖 clr p1.0 mov r0,#14h ;“50ms”計數(shù)器,置入初值20(計下1s) djnz r1,l1 ;秒計數(shù)器減1,到1min嗎? 未到轉(zhuǎn)l1,中斷返回 clr p1.1 setb p1.1 ;到1min,發(fā)一個正脈沖 clr p1.1mov r1,#3ch ;秒計數(shù)器,置入初值60(計下1min)l1: reti ;中斷返回程序2(查詢法):計算初值,=12mhz,t0計時50ms, (216一x)12(12106)5010-3

38、(作50ms定時)則初值 x=15536d=3cboh 1s 50msl4h 1min1s3ch org 0000h sjmp main org 0040hmain: mov tmod,#0lh ;設(shè)定時器t0工作于模式1mc: mov r1,#3ch ;r1為秒計數(shù)器,置入初值60(計1min)mch: mov r0,#14h ;r0為“50ms”計數(shù)器,置入初值20(計1s)chv: mov tho,#3ch ;t0設(shè)置50ms定時 mov tl0,#0boh setb tr0 ;啟動t0loop: jnb tf0,$ ;查詢50ms時間到,時間未到,繼續(xù)查詢 djnz r0,chv ;到

39、50ms,“50ms”計數(shù)器減1,到1s嗎? 未到轉(zhuǎn)chv clr tr0 ;到1s,關(guān)閉t0 clr p1.0 setb p1.0 ;發(fā)一個正脈沖 clr p1.0 djnz r1,mch ;秒計數(shù)器減1,到1min嗎? 未到轉(zhuǎn)mch clr p1.1 setb p1.1 ;到1min,發(fā)一個正脈沖 clr p1.1 sjmp mc ;轉(zhuǎn)mc end第7章 習(xí)題解答7-1定時器方式2有什么特點?適用于什么應(yīng)用場合?答 (1)方式2把tl0(或tl1)配置成一個可以自動重裝載的8位定時器計數(shù)器。tl0計數(shù)溢出時不僅使溢出中斷標志位tf0置1,而且還自動把th0中的內(nèi)容重新裝載到tl0中。tl0

40、用作8位計數(shù)器,th0用以保存初值。(2)用于定時工作方式時間(tf0溢出周期)為t(28th0初值)振蕩周期12,用于計數(shù)工作方式時,最大記數(shù)長度(th0初值=0)為28256個外部脈沖。這種工作模式可省去用戶軟件重裝初值的語句,并可產(chǎn)生相當精確定時時間,特別適于作串行波特率發(fā)生器。7-2單片機用內(nèi)部定時方式產(chǎn)生頻率為100 khz等寬矩形波,假定單片機的晶振頻率為12mhz,請編程實現(xiàn)。解 程序1(中斷法):f100khz,t110-5秒 設(shè) 12mhz t0.510-5s5us t0 模式0 即tmod=00h定時時間t(213一定時器初值x)12振蕩周期 0.510-5(213-x)1

41、2(12106) x81871111111111011 to低5位:1bh to高8位:ffh org 0000h ajmp main org 000bh ajmp inser org 0100hmain: mov tmod,#00h ;定時器t0工作于模式0 mov th0,#0ffh ;置5us定時初值 mov tl0,#1bh setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動定時器t0loop: ajmp loop ;等待5us時間到 org 0200hinser: mov th0,#0ffh ;重新置人定時初值 mov tl0,#1bh cpl

42、 p1.0 ;輸出取反,形成等寬矩形波 reti ;中斷返回解 程序2(中斷法):f100khz,t110-5秒 設(shè) 12mhz t0.510-5s5us t0 模式1 即tmod=01h定時時間t(216一定時器初值x)12振蕩周期 0.510-5(216-x)12(12106) x655311111111111111011 to低8位:fbh to高8位:ffh org 0000h ajmp main org 000bh ajmp inser org 0100hmain: mov tmod,#01h ;定時器t0工作于模式1 mov th0,#0ffh ;置5us定時初值 mov tl0,

43、#0fbh setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動定時器t0loop: ajmp loop ;等待5us時間到 org 0200hinser: mov th0,#0ffh ;重新置人定時初值 mov tl0,#0fbh cpl p1.0 ;輸出取反,形成等寬矩形波 reti ;中斷返回解 程序3(中斷法):f100khz,t110-5秒 設(shè) 12mhz t0.510-5s5us t0 模式2 即tmod=02h定時時間t(28一定時器初值x)12振蕩周期 0.510-5(28-x)12(12106) x25111111011 to低8位:fb

44、h to高8位:fbh org 0000h ajmp main org 000bh ajmp inser org 0100hmain: mov tmod,#02h ;定時器t0工作于模式2 mov tl0,#0fbh ;置5us定時初值 mov th0,#0fbh ;置自動重裝載常數(shù) setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動定時器t0loop: ajmp loop ;等待5us時間到 org 0200hinser: cpl p1.0 ;輸出取反,形成等寬矩形波 reti ;中斷返回7-380c51定時器有哪幾種工作方式?有何區(qū)別?答 有模式0,模式1,模式2,模式3。(1)模式0:選擇定時器(to或t1)的高8位和低5位組成一個13位定時器計數(shù)器。tl低5位溢出時向th進位,th溢出時向中斷標志位tf0進位,并申請中斷。定時時間t(213一初值)振蕩周期12;計數(shù)長度為21381

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論