版權(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)逢十進一,而計算機只將其當(dā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,標(biāo)號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)?其主要功能是什么?答 當(dāng)cpu正在處理某件事情的時候,外部發(fā)生的某一事件請求cpu迅速去處理,于是,cpu暫時中止當(dāng)前的工作,轉(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)過程。 答 當(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)先級進行中斷處理,中斷系統(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)當(dāng)前指令周期已經(jīng)結(jié)束。(6)若現(xiàn)行指令為reti或訪問ie或ip指令時,該指令以及緊接著的另一條指令已執(zhí)行完畢。6-8簡述80c51單片機的中斷響應(yīng)過程。答 cpu在每個機器周期s5p2期間順序采樣每個中斷源,cpu在下一個機器周期s6期間按優(yōu)先級順序查詢中斷標(biāo)志,如查詢到某個中斷標(biāo)志為1,將在接下來的機器周期s1期間按優(yōu)先級進行中斷處理,中斷系統(tǒng)通過硬件自動將相應(yīng)的中斷矢量地址裝入pc,
28、以便進入相應(yīng)的中斷服務(wù)程序。一旦響應(yīng)中斷,8051首先置位相應(yīng)的中斷“優(yōu)先級生效”觸發(fā)器,然后由硬件執(zhí)行一條長調(diào)用指令,把當(dāng)前的pc值壓人堆棧,以保護斷點,再將相應(yīng)的中斷服務(wù)的入口地址送人pc,于是cpu接著從中斷服務(wù)程序的人口處開始執(zhí)行。對于有些中斷源,cpu在響應(yīng)中斷后會自動清除中斷標(biāo)志。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ù)。 當(dāng)前的指令周期已結(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,串行接口中斷??梢?,將int0,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ù)溢出時不僅使溢出中斷標(biāo)志位tf0置1,而且還自動把th0中的內(nèi)容重新裝載到tl0中。tl0
40、用作8位計數(shù)器,th0用以保存初值。(2)用于定時工作方式時間(tf0溢出周期)為t(28th0初值)振蕩周期12,用于計數(shù)工作方式時,最大記數(shù)長度(th0初值=0)為28256個外部脈沖。這種工作模式可省去用戶軟件重裝初值的語句,并可產(chǎn)生相當(dāng)精確定時時間,特別適于作串行波特率發(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溢出時向中斷標(biāo)志位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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省定西市通渭縣2025屆高三一診考試語文試卷含解析
- 遼寧省阜新市博大教育2025屆高三沖刺模擬數(shù)學(xué)試卷含解析
- 湖北省荊州市沙市區(qū)沙市中學(xué)2025屆高三下學(xué)期聯(lián)合考試數(shù)學(xué)試題含解析
- 陜西省榆林市第二中學(xué)2025屆高考仿真卷數(shù)學(xué)試卷含解析
- 安徽省宣城市郎溪縣七校2025屆高考英語一模試卷含解析
- 云南省鎮(zhèn)康縣第一中學(xué)2025屆高考沖刺語文模擬試題含解析
- 寧夏銀川一中2025屆高考仿真卷英語試卷含解析
- 黑龍江省安達市七中2025屆高考適應(yīng)性考試數(shù)學(xué)試卷含解析
- 2025屆浙江省新課改協(xié)作校高三適應(yīng)性調(diào)研考試英語試題含解析
- 江西省南昌五校2025屆高三第三次模擬考試語文試卷含解析
- 反恐防范重點目標(biāo)檔案 空白模板2023年
- 科學(xué)技術(shù)中的倫理問題
- 中國子宮內(nèi)膜增生管理指南(2022)解讀
- 四年級上學(xué)期體育理論試卷(附答案)
- 預(yù)防物體打擊安全課件
- 2024年村支書年度述職報告(四篇合集)
- 弱視斜視知識講座
- 湖南省雅禮中學(xué)2023-2024學(xué)年高一上學(xué)期12月月考歷史試卷
- 2023醫(yī)院內(nèi)部審計工作計劃范文
- 華為招聘與人員配置
- 如何預(yù)防老年癡呆知識講座
評論
0/150
提交評論