《單片機原理及接口技術》(第二版)余錫存著 課后習題答案 二到七_第1頁
《單片機原理及接口技術》(第二版)余錫存著 課后習題答案 二到七_第2頁
《單片機原理及接口技術》(第二版)余錫存著 課后習題答案 二到七_第3頁
《單片機原理及接口技術》(第二版)余錫存著 課后習題答案 二到七_第4頁
《單片機原理及接口技術》(第二版)余錫存著 課后習題答案 二到七_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章1.89C51、87C51、80C51和80C31單片機的主要區(qū)別在那里? 答:相同之處是:制造工藝都為CHMOS,都有128字節(jié)片內(nèi)RAM、兩個定時/計數(shù)器、4個8位I/O并行口,一個串行口和5個中斷源。主要區(qū)別: 89C51片內(nèi)4K字節(jié)FLASHROM; 87C51片內(nèi)4K字節(jié)EPROM; 80C51片內(nèi)4K字節(jié) 掩膜ROM; 80C31片內(nèi)無程序存儲器。2.MCS-51單片機引腳有多少I/O線?它們和單片機對外的地址總線和數(shù)據(jù)總線有何關系?答:4個8位I/O并行口,一個串行口;其中P0口為外接程存和數(shù)存的地址低8位和數(shù)據(jù)總線的時分復用接口;其中P2口為外接程存和數(shù)存的地址高8位總線

2、接口;其中P1口為真正的用戶口線;其中P3口有第2功能; 以上4個口線在沒有專用功能時,也可以做通用I/O口線用。3.簡述8031片內(nèi)RAM區(qū)地址空間的分配特點。答:MCS-51 單片機片內(nèi)RAM為 256 字節(jié), 地址范圍為00HFFH, 分為兩大部分: 低 128 字節(jié)(00H7FH)為真正的RAM區(qū); 高 128 字節(jié)(80HFFH)為特殊功能寄存器區(qū)SFR。 在低 128 字節(jié)RAM中, 00H1FH共 32 單元是 4 個通用工作寄存器區(qū)。每一個區(qū)有 8 個通用寄存器R0R7。4. MCS-51單片機由哪幾個部分組成。答: 一個8位CPU; 4KB ROM or EPROM(8031

3、無ROM); 128字節(jié)RAM數(shù)據(jù)存儲器; 21個特殊功能寄存器SFR; 4個8位并行I/O口,其中P0、P2為地址/數(shù)據(jù)線,可尋址64KB 程序存儲器和64KB 數(shù)據(jù)存儲器; 一個可編程全雙工串行口; 具有5個中斷源,兩個優(yōu)先級,嵌套中斷結構; 兩個16位定時器/計數(shù)器; 一個片內(nèi)振蕩器及時鐘電路。7.8.4.5.6.5. MCS-51單片機的信號各自的功能是什么?答:都是控制總線 :訪問內(nèi)部程序存儲器的控制信號/編程電壓輸入端。 時,CPU從片內(nèi)讀取指令, CPU從片外讀取指令。 :地址鎖存允許/編程信號線。 :外部程序存儲器讀選通信號。:復位輸入信號/掉電保護后備電源引腳。6.MCS-5

4、1單片機如何實現(xiàn)工作寄存器組的選擇? RS1(PSW.4)、RS0(PSW.3) 為工作寄存器組的選擇位; 取值為00時選擇第0組工作寄存器,片內(nèi)RAM地址是00H07H,名稱為R0R7; 取值為01時選擇第1組工作寄存器,片內(nèi)RAM地址是08H0FH,名稱為R0R7; 取值為10時選擇第2組工作寄存器,片內(nèi)RAM地址是10H17H,名稱為R0R7; 取值為11時選擇第3組工作寄存器,片內(nèi)RAM地址是18H1FH,名稱為R0R7。7. 什么是時鐘周期、機器周期、指令周期?當單片機的時鐘頻率為12MHz時,一個機器周期是多少?ALE引腳的輸出頻率是多少?(1) 振蕩周期: 也稱時鐘周期, 是指為

5、單片機提供時鐘脈沖信號的振蕩源的周期。 (2) 狀態(tài)周期: 每個狀態(tài)周期為時鐘周期的 2 倍, 是振蕩周期經(jīng)二分頻后得到的。 (3) 機器周期: 一個機器周期包含 6 個狀態(tài)周期S1S6, 也就是 12 個時鐘周期。 在一個機器周期內(nèi), CPU可以完成一個獨立的操作。(4) 指令周期: 它是指CPU完成一條操作所需的全部時間。 每條指令執(zhí)行時間都是有一個或幾個機器周期組成。MCS - 51 系統(tǒng)中, 有單周期指令、雙周期指令和四周期指令。 當單片機的時鐘頻率為12MHz時,一個機器周期是多少1s(微秒);ALE引腳的輸出頻率是多少2s(微秒)。第三章1. MCS-51指令系統(tǒng)按功能分為幾類?具

6、有幾種尋址方式?他們的尋址范圍如何? 答: 按功能分為5類,分別是: 數(shù)據(jù)傳送類、算術操作類、邏輯操作類、控制轉(zhuǎn)移類和位操作類; 具有7種尋址方式; 立即尋址,尋址范圍是程序存儲器; 直接尋址,尋址范圍是內(nèi)部RAM低128字節(jié)和高128字節(jié); 寄存器尋址,尋址范圍是四組工作寄存器R0R7; 寄存器間接尋址,尋址范圍是內(nèi)部RAM的低128和外部RAM低64K可尋址空間; 基址寄存器加變址寄存器間接尋址,尋址范圍是程序存儲器; 相對尋址,尋址范圍是以下一條指令為相對地址的-128+127字節(jié)范圍內(nèi); 位尋址,尋址范圍是可位尋址空間,包括內(nèi)部RAM的可尋址位,特殊功能寄存器中的可尋址位。2.設內(nèi)部R

7、AM中59H單元的內(nèi)容為50H,寫出當執(zhí)行下列程序段后寄存器A,R0,和內(nèi)部RAM中50H、51H單元的內(nèi)容為和值?答:MOV A,59H ; (A)=(59H)=50HMOV R0,A ; (R0)=50HMOV A,#00 ; (A)=00MOV R0,A ; (R0)=(50H)=00MOV A,#25H ; (A)=25HMOV 51H,A ; (51H)=25HMOV 52H,#70H ; (52H)=70H執(zhí)行下列程序段后:(A)=25H,(R0)=50H, (50H)=00、(51H)=25H3.PSW中Cy與OV有何不同?下列程序段執(zhí)行后(Cy)=?(OV)=?。 MOV A,

8、#56H ADD A,#74H 答:Cy進位、借位標志位;OV溢出標志位。MOV A,#56H ;(A)=56H=0101 0110 BADD A,#74H ;(A)=56H+74H=0CAH=1100 1010B , 程序執(zhí)行后:(Cy)=0(OV)=14.MOVC A,A+DPTR與MOVX A,DPTR指令有何不同?答: MOVC A,A+DPTR ;尋找的操作數(shù)在程序存儲器中,地址是:(A)+(DPTR); MOVX A,DPTR ;尋找的操作數(shù)在外部數(shù)據(jù)存儲器中,地址是:(DPTR)。5. AJMP、LJMP、SJMP指令功能上有何不同?答:相同之處,都是無條件轉(zhuǎn)移指令。 AJMP

9、addr11 ;下調(diào)指令為基準的2KB范圍內(nèi)的跳轉(zhuǎn)指令。 LJMP addr16 ;轉(zhuǎn)移的目標地址可以在64KB程序存儲器的任何地方。 SJMP rel ;下調(diào)指令為基準的-128B+127B范圍內(nèi)的短跳轉(zhuǎn)指令。6.設堆棧指針SP中的內(nèi)容為60H,內(nèi)部RAM中30H和31H單元的內(nèi)容分別為24H和10H,執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內(nèi)容將有何變化?PUSH 30HPUSH 31HPOP DPLPOP DPHMOV 30H,#00HMOV 31H,#0FFH答:PUSH 30H ;(61H)= (30H) = 24HPUSH 31H ; (62H) = (

10、31H) = 10HPOP DPL ; (DPL) = (62H) = 10HPOP DPH ; (DPH) =(61H)= 24HMOV 30H,#00H ; (30H) = 00HMOV 31H,#0FFH ; (31H) = 0FFH程序執(zhí)行后:(61H)= 24H, (62H) = 10H, (30H) = 00H, (31H) = 0FFH,(DPTR) = 2410H7.試分析下列程序段,當程序執(zhí)行后,位地址00H和01H中的內(nèi)容將為何值?P1口的8條I/O線為何狀態(tài)?CLR CMOV A,#66HJC LOOP1CPL CSETB 01HLOOP1: ORL C,ACC.0JB

11、ACC.2,LOOP2LOOP2: MOV P1,A答: CLR C ; (Cy)=0MOV A,#66H ; (A) = 66H = 0110 0110 BJC LOOP1; 因 此時(Cy)=0 ,所以不跳轉(zhuǎn)CPL C; (Cy) = 1SETB 01H; (01H)= 1LOOP1: ORL C,ACC.0; (Cy) =(Cy)(ACC.0) = 1JB ACC.2,LOOP2 ; 因(ACC.2) = 1LOOP2: MOV P1,A; (P1)= 0110 0110 B8.要完成以下的數(shù)據(jù)傳送,應如何用MCS-51指令實現(xiàn)? R1的內(nèi)容傳送到R0; 片外RAM 20H單元的內(nèi)容送R

12、0; 片外RAM 20H單元的內(nèi)容送片內(nèi)RAM 20H單元; 片外RAM 1000H單元的內(nèi)容送片內(nèi)RAM 20H單元; ROM 2000H 單元的內(nèi)容送R0; ROM 2000H 單元的內(nèi)容送片內(nèi)RAM 20H單元; ROM 2000H 單元的內(nèi)容送片外RAM 20H單元。答: R1的內(nèi)容傳送到R0; MOV A,R1MOV R0,A 片外RAM 20H單元的內(nèi)容送R0;MOV R1,#20HMOVX A,R1MOV R0,A 片外RAM 20H單元的內(nèi)容送片內(nèi)RAM 20H單元;MOV R1,#20HMOVX A,R1MOV 20H,A 片外RAM 1000H單元的內(nèi)容送片內(nèi)RAM 20H

13、單元;MOV DPTR,#20HMOVX A,DPTRMOV 20H,A ROM 2000H 單元的內(nèi)容送R0;MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV R0,A ROM 2000H 單元的內(nèi)容送片內(nèi)RAM 20H單元;MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV 20H,A ROM 2000H 單元的內(nèi)容送片外RAM 20H單元。MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV R0,#20HMOVX R0,A9.分析以下程序每條指令執(zhí)行的結果:MOV A, #25H ; (A) = 25HMOV R1,#3

14、3H ; (R1) = 33HMOV 40H,#1AH ; (40H) = 1AHMOV R0,40H; (R0) = 1AHADD A,R1; (A) = 25H + 33H = 58HADDC A,R0; (A) = 58H + (1AH) + (Cy) = 58H ADDC A,40H; (A) = 58H + 1AH + (Cy) = 72H10.設A=83H,R0=17H,(17H)=34H,執(zhí)行下列程序后,(A) = ?ANL A,#17H; (A) = 1000 0011B0001 0111B = 0000 0011BORL 17H,A; (17H) = 0011 0100B00

15、00 0011B = 0011 0111BXRL A,R0; (A) = 0000 0011B0011 0111 = 0011 0100BCPL A; (A) = 1100 1011B11.兩個4位BCD碼數(shù)相加,被加數(shù)和加數(shù)分別存于30H、31H和40H、41H單元中(次序為千位、百位在低地址中,十位、個位在高地址中),和數(shù)放在50H、51H、52H中(52H用于存放最高位的進位),試編寫加法程序。 解: ORG 00HMOV 30H, #12H ; MOV 31H, #34H ; MOV 40H, #56H ; MOV 41H, #78H ; MOV A, 31H ; 取被加數(shù)十個位ADD

16、 A, 41H ; 相加,(A) = (31H) + (41H) DA A ; 十進制調(diào)整MOV 51H,A ; 存十位個位運算結果MOV A, 30H ; 取被加數(shù)千百位ADDC A, 40H ; 相加,(A) = (30H) + (40H)DA A ; 十進制調(diào)整MOV 50H,A ; 存千位百位運算結果CLR A ; 清AADDC A,#0 ; 將進位加到A中MOV 52H, A ; 存進位SJMP $12.試編寫一程序,查找內(nèi)部RAM單元的20H50H中是否有0AAH這一數(shù)據(jù),若有,則將51H單元置為01H,若沒有,則使51H單元置0。解: ORG 00H MOV 30H, #0AAH

17、 ; MOV R1, #31H ; MOV R0, #20H ; BIJIAO: MOV A, R0 CJNE A, #0AAH , LOOP; MOV 51H,#01H SJMP JIESHU LOOP: INC R0 DJNZ R1,BIJIAO MOV 51H,#00HJIESHU :SJMP $第四章1、若有兩個符號數(shù)X,Y分別存放在內(nèi)部存儲器50H、51H單元中,試編寫一個程序?qū)崿F(xiàn)X*10+Y,結果存入52H、53H中。 1 ORG00H 0000 7850 2MOVR0,#50H 0002 E6 3MOVA,R0 0003 75F00A 4MOVB,#0AH 0006 A4 5MU

18、LAB 0007 08 6INCR0 0008 26 7ADDA,R0 0009 08 8INCR0 000A A6F0 9MOVR0,B 000C 08 10INCR0 000D F6 11MOVR0,A 12END2、在以3000H為首地址的外部RAM中,存放了14個以ASCII碼表示的09的數(shù),試編寫程序?qū)⑺鼈冝D(zhuǎn)換成BCD碼,并以壓縮BCD形式存放在以2000H為首地址的外部RAM中。 1ORG00H 0000 903000 2MOVDPTR,#3000H;原始數(shù)據(jù)首地址 0003 7807 3MOVR0,#07;循環(huán)次數(shù) 0005 7930 4MOVR1,#30H;轉(zhuǎn)換結果暫存區(qū)指針

19、0007 E0 5CH1:MOVXA,DPTR 0008 550F 6ANLA, #00001111B 000A C4 7SWAPA 000B F5F0 8MOVB,A 000D A3 9INCDPTR 000E E0 10MOVXA,DPTR 000F 550F 11ANLA, #00001111B 0011 45F0 12ORLA,B 0013 F7 13MOVR1,A 0014 09 14INCR1 0015 A3 15INCDPTR 0016 D8EF 16DJNZR0,CH1 0018 902000 17MOVDPTR,#2000H;轉(zhuǎn)換結果存儲區(qū) 001B 7A07 18MOVR2

20、,#07H;結果個數(shù) 001D 7930 19MOVR1,#30H 001F E7 20CH2:MOVA,R1;3、采樣的5個值分別存放在R0、R1、R2、R3、R4中,求出它們的中間值,并存放在R2中。 1ORG00H> 0000 7805 2MOVR0,#5 0002 7906 3MOVR1,#6 0004 7A07 4MOVR2,#7 0006 7B08 5MOVR3,#8 0008 7C09 6MOVR4,#9 000A E4 7CLRA; 000B C3 8CLRC; 000C E8 9MOVA,R0; 000D 29 10ADDA,R1; 000E 2A 11ADDA,R2;

21、 000F 2B 12ADDA,R3 0010 2C 13ADDA,R4 0011 75F005 14MOVB,#5 0014 84 15DIVAB 0015 FA 16MOVR2,A 0016 17END 18END4、以BUF1為起始地址的外部數(shù)據(jù)存儲區(qū)中存放著16個單字節(jié)的無符號數(shù),求其平均值并送入R2中。 1ORG00H 2BUF1EQU#1000H 0000 901000 3MOVDPTRBUF1 0003 AA00 4MOVR2,0 0005 7816 5MOVR0,#16H 0007 E0 6SUM:MOVXA,DPTR 0008 2A 7ADDA,R2 0009 FA 8MOV

22、R2,A 000A A3 9INCDPTR 000B D8FA 10DJNZR0,SUM 000D 75F010 11MOVB,#10H 0010 84 12DIVAB 0011 FA 13MOVR2,A 14END5、試編寫程序,將內(nèi)部RAM單元中DATA1開始的20個單字節(jié)數(shù)依次與DATA2單元為起始地址的20個單字節(jié)數(shù)據(jù)進行交換。> 1DATA1EQU#30H 2DATA2EQU#50H 3LENEQU#16 4ORG0H 0000 7830 5MOVR0,DATA1 0002 7950 6MOVR1,DATA2 0004 7A10 7MOVR2,LEN 0006 E6 8EXC:

23、MOVA,R0 0007 C7 9XCHA,R1 0008 F6 10MOVR0,A 0009 08 11INCR0 000A 09 12INCR1 000B DAF9 13DJNZR2,EXC14 END6、某場歌手賽,共有10個評委,試編寫一程序,輸入10個評分,去掉最高分和最低分,求平均分(均為BCD碼)。ORG0HNEQU#5BLOCKEQU#30HISELSORT:MOVR7,NDECR7MOVR1,BLOCKISST1:MOVR0,BLOCKMOVA,R7MOVR6,AMOVA,R0MOVB,AISST2:INCR1MOVA,R1CLRCSUBBA,BJCISST3MOVA,R1M

24、OVR2,AMOVB,R1ISST3:DJNZR6,ISST2MOVA,BXCHA,R1MOVB,R2MOVR1,BMOVR1,ADJNZR7,ISST1MOVR0,BLOCKMOVR0,#0;去掉最低分MOVA,BLOCKADDA,#9MOVR0,AMOVR0,#0;去掉最高分AD:MOVR0,BLOCKINCROMOVR1,#8CLRACLRCMOVB,#0ADL:ADDA,R0DAAMOVR2,AADDCA,#0MOVB,AMOVA,R2DJNZR1,ADLMOVR5,0MOVR4,BMOVR3,AMOVR2,#0MOVR1,#8R5R4R3/R2R1=R4R3MOVR1,#00HMOV

25、R2,#0FHMOVR3,#04HMOVR4,#05HMOVR5,#06HLCALL_DIVAJMP$_DIV:;CLRCMOV30H,#0MOV31H,#0MOV32H,#0_DIV_LOOP:CLRCMOVA,R3SUBBA,R1MOVR3,AMOVA,R4SUBBA,R2MOVR4,AMOVA,R5SUBBA,#0MOVR5,AJC_DIV_END_INC_SHANG:CLRCMOVA,30HADDCA,#1MOV30H,AMOVA,31HADDCA,#0MOV31H,AMOVA,32HADDCA,#0MOV32H,ALJMP_DIV_LOOP_DIV_END:CLRCMOVA,R1AD

26、DCA,R3MOVA,R2ADDCA,R4MOVR3,30HMOVR4,31HEND7、編寫將一個十六進制數(shù)轉(zhuǎn)換為十進制數(shù)的子程序。> 0000 78FE 2MOVR0,#FEH 0002 7930 3MOVR1,#30H 0004 E8 4HEXBCD:MOVA,R0 0005 75F064 5MOVB,#100 0008 84 6DIVAB 0009 F7 7MOVR1,A 000A 740A 8MOVA,#10 000C C5F0 9XCHA,B 000E 84 10DIVAB 000F 09 11INCR1 0010 F7 12MOVR1,A 0011 09 13INCR1 00

27、12 A7F0 14MOVR1,B 15RET8、在內(nèi)部RAM的BLOCK開始的單元中有一無符號數(shù)據(jù)塊,數(shù)據(jù)長度為LEN。試編程求其中最大的數(shù)并存入MAX中。MCS51 1ORG0H 2LENEQU#10;數(shù)據(jù)塊長度 3MAXEQU#40H 0000 7830 4MOVR0,#30H;BLOCK首地址 0002 790A 5MOVR1,LEN 0004 19 6DECR1;循環(huán)次數(shù) 0005 C3 7CLRC 0006 E6 8LOOP:MOVA,R0 0007 08 9INCR0 0008 96 10SUBBA,R0 0009 4002 11JCEXCHANG 000B 8002 12SJM

28、PNEXT 000D 86F0 13EXCHANG:MOVB,R0 000F C3 14NEXT:CLRC 0010 D9F4 15DJNZR1,LOOP 0012 85F040 16MOV40H,B; MAX單元 17END9、試編程將內(nèi)部RAM中41H43H單元中的數(shù)左移4位,移出部分送50H。 題意不清。10、在外部RAM中BLOCK開始的單元中有一數(shù)據(jù)塊,數(shù)據(jù)長度為LEN,試編程統(tǒng)計其中的正數(shù)、負數(shù)和零的個數(shù)分別存入內(nèi)部RAM的Pcount、Mcoun和Zcount單元。 MCS51> 1ORG0H 2LENEQU#10;數(shù)據(jù)塊長度 3PCOUNTEQU#30H 4MCOUNTE

29、QU#31H 5ZCOUNTEQU#32H 6BLOCKEQU#40H 0000 7840 7MOVR0,BLOCK;BLOCK首地址 0002 790A 8MOVR1,LEN 0004 E6 9LOOP:MOVA,R0 0005 C3 10CLRC 0006 B40004 11CJNEA,#0H,SULT1 0009 0532 12INC32H 000B 8009 13SJMPSULT2 000D 33 14SULT1:RLCA; 移出符號位以判斷正負! 000E 4004 15JCNEG 0010 0530 16INC30H 0012 8002 17SJMPSULT2 0014 0531

30、18NEG:INC31H 0016 08 19SULT2:INCR0 0017 D9EB 20DJNZR1,LOOP11、試編寫一查表求平方的子程序SQR(設X在累加器A中,A小于15,平方數(shù)存入工作寄存器R7中)。0000 900008 2MOVDPTR,#TAB 0003 7830 3MOVR0,#30H 0005 E6 4MOVA,R0 0006 93 5MOVCA,A+DPTR 0007 FF 6MOVR7,A 0008 01010409 7TAB:DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 000C 10 19 24 31

31、0010 40 51 64 79 0014 90 A9 C4 E1 8END12、試編寫一程序,將外部數(shù)據(jù)區(qū)DATA1單元開始的50個單節(jié)數(shù)逐一依次移動到內(nèi)部RAM中DATA2單元開始的數(shù)據(jù)區(qū)中。> MCS51 1ORG0H 2DATA1EQU#1000H 3DATA2EQU#30H 4LENEQU#10H 0000 901000 5MOVDPTR,DATA1 0003 7830 6MOVR0,DATA2 0005 7910 7MOVR1,LEN 0007 E0 8LOOP:MOVXA,DPTR 0008 F6 9MOVR0,A 0009 A3 10INCDPTR 000A 08 11I

32、NCR0 000B D9FA 12DJNZR1,LOOP13 END13、14,略第五章1、簡述中斷、中斷源、中斷源優(yōu)先級及中斷嵌套的含義。中斷是單片機實時地處理內(nèi)部或外部事件的一種內(nèi)部機制。當某種內(nèi)部或外部事件發(fā)生時,單片機的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進行中斷事件的處理,中斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去、。 中斷的意義在于資源共享和應急處理。 中斷的功能有四:一、調(diào)整CPU與外設的速度配合;二、實時控制的實現(xiàn);三、故障檢測;四、實現(xiàn)人機交流 引起中斷的原因,或者能夠發(fā)出中斷請求信號的來源統(tǒng)稱為中斷源。通常中斷源有以下幾種: ()外部設備請求中斷。一般的外

33、部設備(如鍵盤、打印機和A / D轉(zhuǎn)換器等)在完成自身的操作后,向CPU發(fā)出中斷請求,要求CPU為他服務。由計算機硬件異?;蚬收弦鸬闹袛?,也稱為內(nèi)部異常中斷。 ()故障強迫中斷。計算機在一些關鍵部位都設有故障自動檢測裝置。如運算溢出、存儲器讀出出錯、外部設備故障、電源掉電以及其他報警信號等,這些裝置的報警信號都能使CPU中斷,進行相應的中斷處理。 ()實時時鐘請求中斷。在控制中遇到定時檢測和控制,為此常采用一個外部時鐘電路(可編程)控制其時間間隔。需要定時時,CPU發(fā)出命令使時鐘電路開始工作,一旦到達規(guī)定時間,時鐘電路發(fā)出中斷請求,由CPU轉(zhuǎn)去完成檢測和控制工作。 (4)數(shù)據(jù)通道中斷。數(shù)據(jù)通

34、道中斷也稱直接存儲器存?。ǎ┎僮髦袛啵绱疟P、磁帶機或等直接與存儲器交換數(shù)據(jù)所要求的中斷。 為了使得系統(tǒng)能及時響應并處理發(fā)生的所有中斷,系統(tǒng)根據(jù)引起中斷事件的重要性和緊迫程度,硬件將中斷源分為若干個級別,稱作中斷優(yōu)先級。 中斷系統(tǒng)正在執(zhí)行一個中斷服務時,有另一個優(yōu)先級更高的中斷提出中斷請求,這時會暫時終止當前正在執(zhí)行的級別較低的中斷源的服務程序,去處理級別更高的中斷源,待處理完畢,再返回到被中斷了的中斷服務程序繼續(xù)執(zhí)行,這個過程稱為是中斷嵌套。2、 MCS-51單片機提供了幾個中斷源?幾個中斷優(yōu)先級? MCS-51單片機的中斷源共有三類,分別是外部中斷、定時計數(shù)器中斷和串行通信口中斷,第一類有

35、IE0和IE1,第二類有TF0和TF1,第三類的RI、TI合二為一。 MCS-51單片機分兩個優(yōu)先級,每個中斷源的優(yōu)先級都可以通過中斷優(yōu)先級寄存器IP中的相應位進行設定。在同級優(yōu)先級中,五個中斷源的優(yōu)先級次序由高到低分別是:IE0、TF0、IE1、TF1、RI或TI。3、簡述TCON、SCON、IE、IP四個特殊功能寄存器各位的定義及功能。TCON(Timer Control Register)定時器/計數(shù)器控制寄存器 TCON在特殊功能寄存器中,字節(jié)地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,所以可以于進行位操作。 TCON的作用是控制定時器的啟、停,標志定時器溢出和

36、中斷情況。 其中,TFl,TRl,TF0和TR0位用于定時器計數(shù)器;IEl,ITl,IE0和IT0位用于中斷系統(tǒng)。 如圖所示:TF1TR1TF0TR0IE1IT1IE0IT0其中,TF1:定時器1溢出標志位。當定時器1計滿溢出時,由硬件使TF1置“1”,并且申請中斷。進入中斷服務程序后,由硬件自動清“0”,在查詢方式下用軟件清“0”。 TR1:定時器1運行控制位。由軟件清“0”關閉定時器1。當GATE=1,且INT1為高電平時,TR1置“1”啟動定時器1;當GATE=0,TR1置“1”啟動定時器1。 TF0:定時器0溢出標志。其功能及操作情況同TF1。 TR0:定時器0運行控制位。其功能及操作

37、情況同TR1。 IE1:外部中斷1請求標志位。 IT1:外部中斷1觸發(fā)方式選擇位。當IT1=0,為低電平觸發(fā)方式;當IT1=1,為下降沿觸發(fā)方式。 IE0:外部中斷0請求標志位。 IT0:外部中斷0觸發(fā)方式選擇位。 當IT0=0,為低電平觸發(fā)方式;當IT0=1,為下降沿觸發(fā)方式。TCON中低4位與中斷有關。由于TCON是可以位尋址的,因而如果只清溢出或啟動定時器工作,可以用位操作命令。例如:執(zhí)行“CLR TF0”后則清定時器0的溢出;執(zhí)行“SETB TR1”后可啟動定時器1開始工作。SCON(Serial Port Control Register)串行口控制寄存器寄存器地址98H,位尋址9F

38、H98H。位地址9F9E9D9C9B9A9998位符號SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式選擇位SM2:多機通信控制位REN:允許/禁止串行口接收的控制位TB8:在方式2和方式3中,是被發(fā)送的第9位數(shù)據(jù),可根據(jù)需要由軟件置1或清零,也可以作為奇偶校驗位,在方式1中是停止位。RB8:在方式2和方式3中,是被接收的第9位數(shù)據(jù)(來自第TB8位);在方式1中,RB8收到的是停止位,在方式0中不用。TI串行口發(fā)送中斷請求標志位當發(fā)送完一幀串行數(shù)據(jù)后,由硬件置1;在轉(zhuǎn)向中斷服務程序后,用軟件清0。RI串行口接收中斷請求標志位   

39、0;  當接收完一幀串行數(shù)據(jù)后,由硬件置1;在轉(zhuǎn)向中斷服務程序后,用軟件清0。 此處的“軟件清零”,意指需要用戶用指令清零。IE(interrupt Enable Register):中斷允許控制寄存器寄存器地址A8H,位尋址AFHA8H。位地址AFAEADACABAAA9A8位符號EA/ET2ESET1EX1ET0EX0EA:中斷允許總控制位當EA=0時,中斷總禁止。當EA=1時,中斷總允許后中斷的禁止與允許由各中斷源的中斷允許控制位進行設置。EX0( EX1):外部中斷允許控制位當EX0( EX1)0 禁止外中斷當EX0( EX1)1 允許外中斷ET0(EX1):定時/計數(shù)中斷允

40、許控制位當ET0(ET1)0  禁止定時(或計數(shù))中斷當ET0(ET1)1  允許定時(或計數(shù))中斷ET2:定時器2中斷允許控制位,在AT89S52、AT89C52中ES:串行中斷允許控制位當ES0  禁止串行中斷當ES1  允許串行中斷IP(Interrupt Priority Register):中斷優(yōu)先級控制寄存器寄存器地址B8H,位尋址BFHB8H。位地址BFBEBDBCBBBAB9B8位符號/PT2PSPT1PX1PT0PX0PX0外部中斷0優(yōu)先級設定位;PT0定時中斷0優(yōu)先級設定位;PX1外部中斷1優(yōu)先

41、級設定位;PT1定時中斷1優(yōu)先級設定位;PS串口中斷優(yōu)先級設定位;PT2定時器2優(yōu)先級設定位(8052才有)。4、簡述MCS-51 單片機的中斷響應過程。MCS-51 單片機的中斷響應過程可簡單歸納為5步:(1) 中斷源檢測:在每條指令結束后, 系統(tǒng)都自動檢測中斷請求信號, 如果有中斷請求,且CPU處于開中斷狀態(tài)下, 則響應中斷。 (2) 保護現(xiàn)場:在保護現(xiàn)場前, CPU自動將當前PC壓入堆棧。此時,一般要關中斷, 以防止現(xiàn)場被破壞。保護現(xiàn)場一般是用堆棧指令將原程序中用到的寄存器推入堆棧。 (3) 中斷服務: 即為相應的中斷源服務。 (4) 恢復現(xiàn)場:用堆棧指令將保護在堆棧中的數(shù)據(jù)彈出來, 在

42、恢復現(xiàn)場前要關中斷, 以防止現(xiàn)場被破壞。在恢復現(xiàn)場后應及時開中斷。 (5) 返回: CPU將推入到堆棧的斷點地址彈回到程序計數(shù)器, 從而使CPU繼續(xù)執(zhí)行剛才被中斷的程序。 5、 說明MCS-51單片機響應中斷后,中斷服務程序的入口地址。MCS-51單片機響應中斷后,其中斷矢量是由硬件自動生成的。各中斷源的中斷服務程序的入口地址如下表。6、 指出哪幾個中斷申請標志在CPU響應中斷響應后能被硬件自動清零。除了串行通信中斷申請標志在CPU響應中斷后需要用戶用軟件指令清零中斷申請標志外,其余的中斷源的申請標志都是在CPU響應后由硬件自動清零的。它們分別是:外部中斷0申請標志(IE0)、外部中斷1申請標

43、志(IE1)、定時計數(shù)器0溢出標志(IT0)和定時計數(shù)器1溢出標志(IT1) 。7、在MCS-51單片機的應用系統(tǒng)中,如果有多個外部中斷源,怎樣進行處理?在多中斷源的系統(tǒng)中,假如各中斷源之間很少發(fā)生競爭,那么采用“線或非”連接,用軟件查詢的方式進行控制如圖。如果個中斷源之間有優(yōu)先級的區(qū)別,固定優(yōu)先級時用“菊花鏈”電路,不定優(yōu)先級時用8259.8、外部中斷INT0、INT1的兩種觸發(fā)方式在原理上有何區(qū)別?如何用軟件設置?ITx為外部中斷觸發(fā)方式選擇。當ITx為0時為低電平觸發(fā)方式,CPU在每個機器周期的S5P2采樣ITx, 當Itx輸入低電平的時,就置位IEx,采用這種觸發(fā)方式時,外部中斷源的低

44、電平必須保持到CPU響應為止。ITx為1的時候邊沿觸發(fā)方式,CPU在每個機器周期的S5P2采樣ITx,如果在相鄰的兩個機器周期內(nèi),前一個機器周期為高,后一個機器周期為低,則置位IEx,因此,采用邊沿觸發(fā)時,高電平和低電平的保持時間需在12拍以上。設置外部中斷信號觸發(fā)方式,可通過對TCON寄存器(字節(jié)地址88H,位地址88H8FH)中的ITx位置一或置零進行。9、在一個應用系統(tǒng)中,晶振頻率為12MHz,一個外部中斷請求信號的寬度是300ns的負脈沖,該采用哪種觸發(fā)方式?如何實現(xiàn)?晶振頻率為12MHz時,機器周期為1微秒,采用邊沿觸發(fā)時,請求信號至少應該保持1微秒,所以只能對原信號進行展寬,常用的

45、方法是連接一個單穩(wěn)態(tài)電路,其時常數(shù)不在1-1.5微秒之間即可。10、MCS-51的中斷服務程序能否放在65KB程序存儲器的任意區(qū)域?如何實現(xiàn)?MCS-51的中斷服務程序可以放在65KB程序存儲器的任意區(qū)域,只要在對應的中斷矢量入口填寫相應的跳轉(zhuǎn)指令即可。例如外部中斷IE1的中斷服務程序的起始地址為3400H,則在0013H單元內(nèi)填寫 LCALL 3400H。第六章1、8051單片機內(nèi)設幾個可編程的定時/計數(shù)器?它們有幾種工作方式?如何選擇和設定?作為定時器或計數(shù)器,它們的波特率各為多少?8051單片機內(nèi)設有兩個鈞為16位的可編程的定時/計數(shù)器,共有4種工作方式,即:方式013位定時/計數(shù)器、方

46、式116位定時/計數(shù)器、方式2自動重載初值得8位定時/計數(shù)器和方式3T0為兩個獨立的8位定時/計數(shù)器,在方式3下,T1停止工作。 8051定時/計數(shù)器的工作方式由控制寄存器TMOD的M0、M1兩位設置,因為TMOD的地址為89H,所以M0、M1不能位尋址,只能通過字節(jié)操作的方式對M0、M1的值進行設定。 當用定時計數(shù)器作為波特率發(fā)生器時,根據(jù)串口的工作模式,有三種情形:方式的波特率為主振頻率fosc的十二分之一;方式2的波特率依照下式確定:,其中,SMOD為PCON寄存器中的波特率倍增位。方式1和方式3的波特率計算依照下列關系求的即可: 2、定時/計數(shù)器作定時器用時,其定時時間有哪些因素有關?

47、做計數(shù)器用時,對外部計數(shù)頻率有何限制? 8051的定時/計數(shù)器工作在定時器狀態(tài)時,輸入的時鐘脈沖是由晶體振蕩器的輸出經(jīng)12分頻得到的,故其頻率為晶振頻率的十二分之一。所以,定時輸出是晶振頻率處以12再除以計數(shù)值。 8051的定時/計數(shù)器工作在計數(shù)器狀態(tài)時,需要兩個機器周期才能識別一個從“1”到“0”的跳變,故最高計數(shù)頻率不大于晶振頻率的二十四分之一。3、8051單片機的晶振頻率為6MHz,若只使用T0產(chǎn)生500微秒定時,可以選擇哪幾種定時方式?分別寫出定時器的方式控制字和計數(shù)器初值。選擇方式0或方式1,計數(shù)器初值為8192-250,或65536-250。.此處給一個C語言寫的程序段,定時信號由

48、P1.0輸出: ORG 0000H LJMP MAIN ORG 000BH LJMP TO_INTERRUPTMAIN:SETB EA MOV TH0, (65536-250)/256 MOV TL0, (65536-250)%256 SETB TR0 SETB ET0SJMP $T0_INTERRUPT: CLR TR0 MOV TH0, (65536-125)/256 MOV TL0, (65536-125)%256 P10 = P10 SETB TR0 RETI4、某8051系統(tǒng)晶振頻率為6MHz,先欲從P1.7引腳輸出一個連續(xù)5Hz的方波信號,請編寫程序。5Hz的方波周期為200毫秒,

49、高低電平各持續(xù)100毫秒,若晶振頻率為6MHz,則機器周期為2微秒,故其計數(shù)值應為:N=100ms/2s=50000采用方式1進行計數(shù),則 X=M-N=65536-50000=15536H=0C350H程序編寫如下:MOVTMOD, #05H;設置T0工作方式,定時,方式1MOVTH0,#0C3H;寫入計數(shù)器初值MOVTL0,#050H;SETBTR0;啟動T0LOOP:JBCTF0,$; 查詢定時器溢出標志MOVTH0,#0C3H;MOVTL0,#050HCPL P1.7SJMPLOOP;END 也可以用C語言編寫:用定時/計數(shù)器T0從P1.7輸出周期為5s的方波,晶振頻率為6MHz。#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit

溫馨提示

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

評論

0/150

提交評論