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

下載本文檔

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

文檔簡(jiǎn)介

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

2、28b和特殊功能寄存器。 寄存器尋址:r0r7,a,ab,cy,dptr。 寄存器間接尋址:片內(nèi)ram低128b,片外ram。 變址尋址:程序存儲(chǔ)器64kb。 相對(duì)尋址:程序存儲(chǔ)器256b范圍。 位尋址:片內(nèi)ram的20h2fh字節(jié)地址,部分特殊功能寄存器。4-5要訪問(wèn)特殊功能寄存器和片外數(shù)據(jù)存儲(chǔ)器,應(yīng)采用哪些尋址方式?答 sfr:直接尋址,位尋址,寄存器尋址;片外ram:寄存器間接尋址。4-6在80c51片內(nèi)ram中,已知(30h)=38h,(38h)=40h,(40h)=48h,(48h)=90h。請(qǐng)分析下面各是什么指令,說(shuō)明源操作數(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對(duì)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。請(qǐng)指出在執(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如何訪問(wèn)sfr,可使用哪些尋址方式?答 訪問(wèn)sfr:直接尋址,位尋址,寄存器尋址。4-11如何訪問(wèn)片外ram單元,可使用哪些尋址方式?答 只能采用寄存器間接尋址(用movx指令)。4-12如何訪問(wèn)片內(nèi)ram單元,可使用哪些尋址方式?答 低128b:直接尋址,位尋址,寄存器間接尋址,寄存器尋址(r0r7)。 高128b:直接尋址,位尋址,寄存器尋址。4-13如何訪問(wèn)片內(nèi)外程序存儲(chǔ)器,采用哪些尋址方式?答 采用變址尋址(用movc指令)。4-14說(shuō)明十進(jìn)制調(diào)整的原因和方法。答 壓縮bcd碼在

6、進(jìn)行加法運(yùn)算時(shí)本應(yīng)逢十進(jìn)一,而計(jì)算機(jī)只將其當(dāng)作十六進(jìn)制數(shù)處理,此時(shí)得到的結(jié)果不正確。用daa指令調(diào)整(加06h,60h,66h)。4-15說(shuō)明80c51的布爾處理機(jī)功能。 答 用來(lái)進(jìn)行位操作。4-16已知(a)=83h,(r0)=17h,(17h)=34h,請(qǐng)指出在執(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使用位操作指令實(shí)現(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三個(gè)連續(xù)單元的內(nèi)容

8、依次存入2fh,2eh,2dh中。解 mov 2fh,20h mov 2eh,21h mov 2dh,22h4-20編寫程序,進(jìn)行兩個(gè)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)容分別滿足下列條件時(shí),則程序轉(zhuǎn)至label存儲(chǔ)單元。設(shè)a中有的是無(wú)符號(hào)數(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 ;無(wú)條件轉(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。問(wèn)此時(shí)執(zhí)行“ret”指令后,sp=? pc=?解 sp23h,pc=3412h4-23已知sp=25h,pc=2345h,標(biāo)號(hào)label所在的地址為3456h。問(wèn)執(zhí)行長(zhǎng)調(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)說(shuō)明程序功能;(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,試為下列程序注釋其運(yùn)行結(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)存儲(chǔ)單元的內(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)說(shuō)明程序功能;(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 ;進(jìn)位位存入a

14、 inc r0 mov 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)=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位加進(jìn)位位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編寫程序,采用“與”運(yùn)算,判斷8位二進(jìn)制數(shù)是奇數(shù)個(gè)1還是偶數(shù)個(gè)1。解 mov a,#xxh ;待判斷的數(shù)a anl a,#0ffh ;與0ffh相與 jb p,rel ;是奇數(shù)轉(zhuǎn)rel ;是偶數(shù)程序順序執(zhí)行 rel: 4-31編寫程序,采用“或”運(yùn)算,使任意8位二進(jìn)制數(shù)的符號(hào)位必為1。解 mov a,xxh ;取數(shù)據(jù)a orl a,#80h ;使該數(shù)符號(hào)位為1 mov xxh,a ;保存該數(shù)據(jù)4-32請(qǐng)思考:采用“異

16、或”運(yùn)算怎樣可使一帶符號(hào)數(shù)的符號(hào)位改變,數(shù)據(jù)位不變?怎樣可使該數(shù)必然為零? 解 (1)符號(hào)位改變,數(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ù)塊長(zhǎng)度r2 mov r0,#20h ;數(shù)據(jù)塊首地址r0 loop:mov a,r0 ;待查找的數(shù)據(jù)a clr c

17、 ;清進(jìn)位位 subb a,#0aah ;待查找的數(shù)據(jù)是 0aah 嗎 jz l1 ;是,轉(zhuǎn)l1 inc r0 ;不是,地址增1,指向下一個(gè)待查數(shù)據(jù) djnz r2,loop ;數(shù)據(jù)塊長(zhǎng)度減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ù)塊長(zhǎng)度r2 mov r0,#20h ;數(shù)據(jù)塊首地址r0 mov 51h,#00h ;51h單

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

19、ptr mov r0,#dist ;目的首地址r0l1: movx a,dptr ;傳送一個(gè)字符 mov r0,a inc dptr ;指向下一個(gè)字符 inc r0 cjne a,#24h,l1 ;傳送的是“$”字符嗎?不是,傳送下一個(gè)字符 ret ; 是,結(jié)束傳送5-4已知r3和r4中存有一個(gè)16位的二進(jìn)制數(shù),高位在r3中,低位在r4中。編寫程序?qū)⑵淝笱a(bǔ),并存回原處。解 mov a,r3 ;取該數(shù)高8位a anl a,#80h ;取出該數(shù)符號(hào)判斷 jz l1 ;是正數(shù),轉(zhuǎn)l1 mov a,r4 ;是負(fù)數(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時(shí)可能產(chǎn)生的進(jìn)位 mov r3,a ;高8位求反后r3l1: ret5-5已知30h和31h中存有一個(gè)16位的二進(jìn)制數(shù),高位在前,低位在后。編寫程序?qū)⑵涑?,并存回原處。解 clr c ;清進(jìn)位位c mov a,31h ;取該數(shù)低8位a rlc a ;帶進(jìn)位位左移一位 mov 31h,a ;結(jié)果存回31h mov a,30h ;取該數(shù)高8位a rlc a ;帶進(jìn)位位左移一位 mov 30h,a ;結(jié)果存回30h5-6內(nèi)存中有2個(gè)4b以壓縮bcd碼形式存放的十進(jìn)制數(shù),一

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

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

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

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

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

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

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

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

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

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

31、制,試問(wèn)以下幾種中斷優(yōu)先級(jí)的安排(由高到低)是否可能?若可能,則應(yīng)如何設(shè)置中斷源的中斷級(jí)別?否則請(qǐng)簡(jiǎn)述不可能的理由。解 同級(jí)優(yōu)先次序?yàn)椋海瑃o,t1,tx/rx。(1)定時(shí)器0,定時(shí)器1,外部中斷0,外部中斷1,串行接口中斷??梢?,將to,t1設(shè)置為高級(jí)。mov ip,#0ah(2)串行接口中斷,外部中斷0,定時(shí)器0溢出中斷,外部中斷1,定時(shí)器1溢出中斷??梢?,將串行接口中斷設(shè)置為高級(jí)。mov 0b8h,#10h(3)外部中斷0,定時(shí)器1溢出中斷,外部中斷1,定時(shí)器0溢出中斷,串行接口中斷。不可以,只能設(shè)置一級(jí)高級(jí)優(yōu)先級(jí),將int0、t1設(shè)置為高級(jí),而to級(jí)別高于int1。(4)外部中斷0,外

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

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

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

35、0h ;清r0 inc r1 ;秒計(jì)數(shù)器增1 cjne r1,#3ch,l1 ;未到1min,轉(zhuǎn)l1,中斷返回 clr p1.1 setb p1.1 ;到1min,發(fā)一個(gè)正脈沖 clr p1.1 mov r1,#00h ;清r1l1: reti ;中斷返回解 程序2(中斷法): 1s50ms14h50ms20 1min1s3ch1s60 設(shè) 12mhz t0.05s50ms t0 模式1 即tmod=01h定時(shí)時(shí)間t(216一定時(shí)器初值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”計(jì)數(shù)器,置入初值20(計(jì)1s) mov r1,#3ch ;r1為秒計(jì)數(shù)器,置入初值60(計(jì)1min) mov tmod,#01h ;定時(shí)器t0工作于模式1 mov th0,#3ch ;置50 ms定時(shí)初值 mov tl0,#0boh setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動(dòng)定時(shí)器t0loop: ajmp loop ;等待50ms時(shí)間到 org 0200hinser: mov th0,#3ch ;重新置人定時(shí)初值 mov tl0,#0

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

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

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

40、用作8位計(jì)數(shù)器,th0用以保存初值。(2)用于定時(shí)工作方式時(shí)間(tf0溢出周期)為t(28th0初值)振蕩周期12,用于計(jì)數(shù)工作方式時(shí),最大記數(shù)長(zhǎng)度(th0初值=0)為28256個(gè)外部脈沖。這種工作模式可省去用戶軟件重裝初值的語(yǔ)句,并可產(chǎn)生相當(dāng)精確定時(shí)時(shí)間,特別適于作串行波特率發(fā)生器。7-2單片機(jī)用內(nèi)部定時(shí)方式產(chǎn)生頻率為100 khz等寬矩形波,假定單片機(jī)的晶振頻率為12mhz,請(qǐng)編程實(shí)現(xiàn)。解 程序1(中斷法):f100khz,t110-5秒 設(shè) 12mhz t0.510-5s5us t0 模式0 即tmod=00h定時(shí)時(shí)間t(213一定時(shí)器初值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 ;定時(shí)器t0工作于模式0 mov th0,#0ffh ;置5us定時(shí)初值 mov tl0,#1bh setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動(dòng)定時(shí)器t0loop: ajmp loop ;等待5us時(shí)間到 org 0200hinser: mov th0,#0ffh ;重新置人定時(shí)初值 mov tl0,#1bh cpl

42、 p1.0 ;輸出取反,形成等寬矩形波 reti ;中斷返回解 程序2(中斷法):f100khz,t110-5秒 設(shè) 12mhz t0.510-5s5us t0 模式1 即tmod=01h定時(shí)時(shí)間t(216一定時(shí)器初值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 ;定時(shí)器t0工作于模式1 mov th0,#0ffh ;置5us定時(shí)初值 mov tl0,

43、#0fbh setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動(dòng)定時(shí)器t0loop: ajmp loop ;等待5us時(shí)間到 org 0200hinser: mov th0,#0ffh ;重新置人定時(shí)初值 mov tl0,#0fbh cpl p1.0 ;輸出取反,形成等寬矩形波 reti ;中斷返回解 程序3(中斷法):f100khz,t110-5秒 設(shè) 12mhz t0.510-5s5us t0 模式2 即tmod=02h定時(shí)時(shí)間t(28一定時(shí)器初值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 ;定時(shí)器t0工作于模式2 mov tl0,#0fbh ;置5us定時(shí)初值 mov th0,#0fbh ;置自動(dòng)重裝載常數(shù) setb et0 ;允許t0中斷setb ea ;cpu開放中斷 setb tr0 ;啟動(dòng)定時(shí)器t0loop: ajmp loop ;等待5us時(shí)間到 org 0200hinser: cpl p1.0 ;輸出取反,形成等寬矩形波 reti ;中斷返回7-380c51定時(shí)器有哪幾種工作方式?有何區(qū)別?答 有模式0,模式1,模式2,模式3。(1)模式0:選擇定時(shí)器(to或t1)的高8位和低5位組成一個(gè)13位定時(shí)器計(jì)數(shù)器。tl低5位溢出時(shí)向th進(jìn)位,th溢出時(shí)向中斷標(biāo)志位tf0進(jìn)位,并申請(qǐng)中斷。定時(shí)時(shí)間t(213一初值)振蕩周期12;計(jì)數(shù)長(zhǎng)度為21381

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論