《單片機原理及應用》黃友銳主編課后習題答案.doc
《《單片機原理及應用》黃友銳主編課后習題答案.doc》由會員分享,可在線閱讀,更多相關《《單片機原理及應用》黃友銳主編課后習題答案.doc(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第1章 1-1 什么是單片機?它與一般微型計算機在結構上何區(qū)別? 答:單片微型計算機簡稱為單片機(Single Chip Computer),又稱為微控制器(MCU即Micro-Controller Unit)。它是在一塊芯片上集成了中央處理器(CPU)、存儲器(RAM、ROM)、定時器/計數(shù)器、中斷控制、各種輸入/輸出(I/O)接口(如并行I/O口、串行I/O口和A/D轉換器)等為一體的器件。 微型計算機的基本結構由CPU(運算器、控制器)、存儲器、輸入設備和輸出設備五大部分組成,各部分通過外部總線連接而成為一體。單片機的結構是在一塊芯片上集成了中央處理器(CPU)、存儲器、定時器/計數(shù)器、中斷控制、各種輸入/輸出接口(如并行I/O口、串行I/O口和A/D轉換器)等,它們通過單片機內部部總線連接而成為一體。 1-2 MCS-51系列單片機內部資源配置如何?試舉例說明8051與51兼容的單片機的異同。 答:MCS-51系列單片機內部資源配置 AT89S53 12KB Flash ROM 256B 316 32 1 9/2 SPI,WDT,2個數(shù)據(jù)指針 W77E58 32KB Flash ROM 256B+ 1024B 316 36 2 12/2 擴展了4位I/O口,雙數(shù)據(jù)指針,WDT。 資源。 第2章 2-1 MCS-51系列單片機內部有哪些主要的邏輯部件? 答: 一個8位CPU;一個片內振蕩器及時鐘電路;4K字節(jié)ROM程序存儲器;128字節(jié)RAM數(shù)據(jù)存儲器;兩個16位定時器/計數(shù)器;可尋址64K外部數(shù)據(jù)存儲器和64K外部程序存儲器空間的控制電路;32條可編程的I/O線(四個8位并行I/O端口);一個可編程全雙工串行口;具有五個中斷源、兩個優(yōu)先級嵌套中斷結構 2-2 MCS-51設有4個8位端口(32條I/O線),實際應用中8位數(shù)據(jù)信息由哪一個端口傳送?16位地址線怎樣形成?P3口有何功能? 答:實際應用中8位數(shù)據(jù)信息由P0口傳送。16位地址線由P0口輸出低8位地址A7~A0,P2口輸出高8位地址A15~A8。P3口是一個多用途的端口,也是一個準雙向口,作為第一功能使用時,其功能同P1口;當作第二功能使用時,P3.0—RXD串行輸入(數(shù)據(jù)接收)口,P3.1—TXD串行輸出(數(shù)據(jù)發(fā)送)口,P3.2—外部中斷0輸入線,P3.3—外部中斷1輸入線,P3.4—T0定時器0外部輸入,P3.5—T1定時器1外部輸入,P3.6—外部數(shù)據(jù)存儲器寫選通信號輸出,P3.7—外部數(shù)據(jù)存儲器讀選通信號輸入。 2-3 MCS-51的存儲器結構與一般的微型計算機有何不同?程序存儲器和數(shù)據(jù)存儲器各有何作用? 答:MCS-51存儲器結構與常見的微型計算機的配置方式不同,它把程序存儲器和數(shù)據(jù)存儲器分開,各有自已的尋址系統(tǒng)、控制信號和功能。 程序存儲器用來存放程序和始終要保留的常數(shù),如經匯編后所編程序的機器碼。數(shù)據(jù)存儲器通常用來存放程序運行中所需要的常數(shù)或變量,例如模/數(shù)轉換時實時采集的數(shù)據(jù)等。 2-4 MCS-51內部RAM區(qū)功能結構如何分配?4組工作寄存器使用時如何選用?位尋址區(qū)域的字節(jié)地址范圍是多少? 答:MCS-51系列單片機內部數(shù)據(jù)存儲器:00H ~ 7FH單元組成的低128字節(jié)地址空間的RAM區(qū),又分為為工作寄存器區(qū)(00H~1FH)、位尋址區(qū)(20H~2FH)和用戶RAM區(qū)(30H~7FH)。 80H ~ FFH(128 ~255)單元組成的高128字節(jié)地址空間的特殊功能寄存器(又稱SFR)區(qū)。對于8032、8052、8752的單片機還有80H~FFH單元組成的高128字節(jié)地址空間的RAM區(qū)。 4組工作寄存區(qū)是由程序狀態(tài)字PSW(特殊功能寄存器,字節(jié)地址為0D0H)中的D4、D3位(RS1和RS0)來決定的。 位尋址區(qū)域的字節(jié)地址范圍是20H~2FH(對應的位地址范圍是00H~7FH)。 2-5 特殊功能寄存器中哪些寄存器可以位尋址?它們的字節(jié)地址是什么? 答:P0字節(jié)地址80H,TCON字節(jié)地址88H,P1字節(jié)地址90H,SCON字節(jié)地址98H,P2字節(jié)地址A0H,IE字節(jié)地址A8H,P3字節(jié)地址B0H,IP字節(jié)地址B8H,PSW字節(jié)地址D0H,ACC字節(jié)地址E0H,B字節(jié)地址F0H。 2-6 簡述程序狀態(tài)字PSW中各位的含義。 答:CY(PSW7)進位標志,AC(PSW6)輔助進位標志,F(xiàn)0(PSW5)用戶標志位,RS1、RS0(PSW4、PSW3)寄存器區(qū)選擇控制位,OV(PSW2)溢出標志,P(PSW.0)奇偶標志,每個指令周期都由硬件來置位或清“0”,以表示累加器A 中1的位數(shù)的奇偶數(shù). 2-7 一個時鐘頻率為6MHz的單片機應用系統(tǒng),它的振蕩信號周期、時鐘周期、機器周期分別是多少? 答:振蕩信號周期=1/6us、時鐘周期=1/3us、機器周期=2us。 2-8 堆棧有何功能?堆棧指針的作用是什么?二者的關系?為什么在程序設計時,要對SP重新賦值? 答:堆棧的主要功能:保護斷點和程序現(xiàn)場,保存用戶數(shù)據(jù)。 堆棧指針的作用是:堆棧指針SP是一個8位特殊功能寄存器,指示出堆棧頂部在內部RAM中的位置。 兩者的關系:堆棧指針SP給定當前的棧頂,SP的初始值越小,堆棧深度就越深。 系統(tǒng)復位后,SP初始化為07H,使得堆棧事實上由08H 單元開始??紤]到08H~1FH單元分屬于工作寄存器區(qū)1~3,若程序設計中要用到這些區(qū),則最好把SP值改置為1FH或更大的值如60H,SP的初始值越小,堆棧深度就越深,堆棧指針的值可以由軟件改變,因此堆棧在內部RAM中的位置比較靈活。 第3章 3-4: (1) ORG 0000H AJMP START ORG 0100H START:MOV A, #21H ADD A, #45H ADD A, #78H SJMP $ END (2) ORG 0000H AJMP START ORG 0100H START:MOV A, #78H ADD A, #45H CLR C; SUBB A, #21H SUBB A, #09H SJMP $ END (3) ORG 0000H AJMP START ORG 0100H START:MOV A, #34H ADD A, #0ABH MOV R0, A MOV A, 12 ADDC A, #21H MOV R1, A SJMP $ END (3) ORG 0000H AJMP START ORG 0100H START:CLR C; MOV A, #0BCH SUBB A, #0CDH MOV R0, A MOV A, 1#2AH SUBB A, #0FH MOV R1, A SJMP $ END 3-5:請編程實現(xiàn):將片內20H存儲單元的8位二進制數(shù)轉換成BCD碼,并存放在片外以2000H起始的單元中,2000H單元存放轉換后的BCD碼的百位,2001H單元存放轉換后的BCD碼的十位/個位。 ORG 0000H AJMP START ORG 0050H START:MOV A,20H ;A←被除數(shù) MOV B, #100 ; B←除數(shù)100 DIV AB ;AB,A←商(百位數(shù)BCD碼),B←余數(shù) MOVX 2000H,A ;(2000H)←將百位數(shù)BCD碼 MOV A,B ;A←余數(shù)作被除數(shù) MOV B,#10 ;B←除數(shù)10 DIV AB ;AB,A←商(十位數(shù)BCD碼),B←余數(shù)(個位BCD碼) SWAP A ;十位BCD碼調整到A中高4位 ADD A,B ;A中壓縮成2位BCD碼 MOVX 2001H,A ; (2001H)←十位、個位BCD碼 SJMP $ END 3-6: 將片內RAM 20H,21H,22H,23H(千/百/十/個位)中的十進制的ascii碼轉換成bcd碼,并壓縮放于片內30H,31H兩個單元,其中31H中放bcd碼的十位/個位,30H中放bcd碼的千位/百位。 MOV A, #00H ;這一句不是必須 MOV R0, #20H MOV R1, #21H XCHD A, @R0 ;A←(20H) SWAP A ;A高4位←(20H)的BCD碼數(shù)字 XCHD A, @R1 ;A低4位←(21H)的BCD碼數(shù)字 MOV 30H,A MOV A, #00H ;這一句不是必須 MOV R0, #22H MOV R1, #23H XCHD A, @R0 ;A←(22H) SWAP A ;A高4位←(22H)的BCD碼數(shù)字 XCHD A, @R1 ;A低4位←(21H)的BCD碼數(shù)字 MOV 31H,A 3-7:片內RAM的30H~32H單元中連續(xù)存放了6個壓縮BCD碼,編制程序將它們轉換為ASCII碼,存入片外3000H開始的連續(xù)存儲區(qū)中 MOV R0,#30H MOV DPTR,3000H LOOP: MOV A,@R0 SWAP A ANL A,#0FH ADD A,#30H ;30H= 0 MOVX @DPTR,A INC DPTR MOV A,@R0 ANL A,#0FH ADD A,#30H MOVX @DPTR,A INC DPTR INC R0 CJNE R0,#33H, LOOP 3-9: 從外部RAM 2000H 單元開始存放著100個無符號數(shù),編寫程序統(tǒng)計出:(1)最大數(shù);(2)最小數(shù);(6)大于50,小于50,等于50的個數(shù)。 (1) MOV DPTR, #2000H MOV 30H, #0 ;先用0當做最大數(shù) (求最小數(shù)時,用255) MOV R2, #100 LOOP: MOVX A, @DPTR CJNE A, 20H, TTT ;(A)-(20H) TTT: JNC NEXT ;不夠減轉移 (求最小數(shù)時,用JNC NEXT) MOV 30H, A ;夠減,這個數(shù)是大數(shù),給(20H) NEXT: INC DPTR DJNZ R2, LOOP SJMP $ END (6) ORG 0600H MOV DPTR, #2000H MOV R2, #100 ;總數(shù) MOV R3, #0 ; 小于50的數(shù)的個數(shù) MOV R4, #0 ; 等于50的數(shù)的個數(shù) MOV R5, #0 ; 大于50的數(shù)的個數(shù) LOOP: MOVX A, @DPTR CLR C SUBB A, #50 JZ EQU_50 JNC BIG INC R3 ;小于50的個數(shù) JMP NEXT EQU_50: INC R4 JMP NEXT BIG: INC R5 NEXT: INC DPTR DJNZ R2, LOOP MOV 30H,R3 ; 小于50的數(shù)的個數(shù) MOV 31H,R4 ; 等于50的數(shù)的個數(shù) MOV 32H,R5 ; 大于50的數(shù)的個數(shù) SJMP $ 3-10 MCS-51片外RAM區(qū)1000H~1007H單元中存有8個無符號數(shù),編程求其平均值,將結果存于1008H中。%先加,加的結果可能超出8位,所以存儲結果于(30H)和(40H)單元中。 MOV DPTR, #1000H MOV R7, #08H MOV 30H, #00H MOV 40H, #00H SS1:MOVX A, @DPTR ADD A, 30H MOV 30H, A CLR A ADDC A, 40H MOV 40H, A INC DPTR DJNZ R7, SS1 MOV R7, #03H ;移位3次,等于除以8 SS2:CLR C MOV A, 40H RRC A MOV 40H, A MOV A, 30H RRC A MOV 30H, A DJNZ R7, SS2 MOVX @DPTR, A 3-11下面是以數(shù)學公式,X值存于片內20H,Y值存于21H單元中。Y=X2(X>0) 0(X=0) 2X(X<0) MAIN:MOV A,20H JZ SUL JB ACC.7,NEG MOV B,A MUL AB SJMP SUL NEG:CLR C RLC A SUL:MOV 21H ,A 3-12試編寫程序,將外部 RAM 2000H~20FFH數(shù)據(jù)塊,傳送到3000H~30FFH區(qū)域。 MOV R6,#0FFH MOV R2,#00H MOV R3,#20H;暫存2000H地址 MOV R4,#00H MOV R5,#30H;暫存3000H地址 NEXT:MOV DPL,R2 MOV DPH,R3 MOVX A,@DPTR MOV DPL,R4 MOV DPH,R5 MOVX @DPTR,A INC R2 INC R4 DJNZ R6,NEXT 3-13:振蕩頻率:6MHz(機器周期:2us), (1)1ms延時 ORG 2000H MOV R7,#125 LOP1: NOP NOP DJNZ R7,LOP1 RET (2) 100ms延時 ORG 2000H MOV R6,#100 LOP2: MOV R7,#125 LOP1: NOP NOP DJNZ R7,LOP1 DJNZ R6,LOP2 RET (3)1s延時 ORG 2000H MOV R5,#10 LOP3: MOV R6,#100 LOP2: MOV R7,#125 LOP1: NOP NOP DJNZ R7,LOP1 DJNZ R6,LOP2 DJNZ R5,LOP3 RET 3-14:片內RAM30H有一數(shù)(0~15),查表求平方值,存入31H中。 ORG 1000H MAIN: MOV DPTR,#TAB MOV 30H, #13 ;NUMB=0~15 MOV A, 30H MOVC A,@A+DPTR MOV 31H,A SJMP $ TAB: DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,255 第4章 4-4 試編程實現(xiàn),將設為高優(yōu)先級中斷,且為電平觸發(fā)方式;T0溢出中斷設為低優(yōu)先級中斷,串行口中斷為高優(yōu)先級中斷,其余中斷源設為禁止狀態(tài)。 SETB PX0 CLR IT0 CLR PT0 SETB PS MOV IE,#93H 4-9 試用中斷技術設計一個秒閃電路,其功能是發(fā)光二極管LED每秒閃亮400ms。主機頻率為6MHz。(仿真見exercise4_9.ms11) 題意可理解為LED每次亮400ms,滅600ms。設使用定時器T1,定時時間為100ms,用P1.0作輸出,設P1.0為高時燈滅。 ORG 0000H AJMP START ORG 000BH AJMP T0INT ORG 0050H START: MOV SP, #30H MOV TMOD,#01H ;T0方式1計數(shù), MOV TH1, #3CH MOV TL1, #0B0H ;定時100ms MOV R0, #04H SETB F0 ;燈亮(1)、滅(0)的轉換標志 MOV IE, #88H SETB P1.0 SETB TR1 SJMP $ ORG 0100H T0INT: MOV TH1, #3CH MOV TL1, #0B0H DJNZ R0, NEXT JNB F0, TURNON ;F0為0轉 TURNOFF: CPL P1.0 CLR F0 MOV R0, #06H SJMP NEXT TURNON: CPL P1.0 SETB F0 MOV R0, #04H NEXT: RETI END 4-1 簡述中斷、中斷源、中斷源的優(yōu)先級及中斷嵌套的含義。 答: 當CPU正在處理某項事件的時,如果外界或內部發(fā)生了緊急情況,要求CPU暫停正在處理的工作轉而去處理這個緊急情況,待處理完以后再回到原來被中斷的地方,繼續(xù)執(zhí)行原來被中斷了的程序,這樣的過程稱為中斷。 向CPU提出中斷請求的源稱為中斷源。 當系統(tǒng)有多個中斷源時,就可能出現(xiàn)同時有幾個中斷源申請中斷,而CPU在一個時刻只能響應并處理中斷優(yōu)先高的請求。 在實際應用系統(tǒng)中,當CPU正在處理某個中斷源,即正在執(zhí)行中斷服務程序時,會出現(xiàn)優(yōu)先級更高的中斷源申請中斷。為了使更緊急的級別高的中斷源及時得到服務,需要暫時中斷(掛起)當前正在執(zhí)行的級別較低的中斷服務程序,去處理級別更高的中斷源,待處理完以后,再返回到被中斷了的中斷服務程序繼續(xù)執(zhí)行,但級別相同或級別低的中斷源不能中斷級別高的中斷服務,這就是所謂的中斷嵌套。 4-2 MCS-51單片機能提供幾個中斷源?幾個中斷優(yōu)先級?各個中斷的源的優(yōu)先級怎樣確定?在同一優(yōu)先級中各個中斷源的優(yōu)先級怎樣確定? 答: MCS-51單片機能提供五個中斷源,兩個中斷優(yōu)先級。中斷優(yōu)先級是由片內的中斷優(yōu)先級寄存器IP(特殊功能寄存器)控制的。 PS:串行口中斷優(yōu)先級控制位。PS=1,串行口定義為高優(yōu)先級中斷源;PS=0,串行口定義為低優(yōu)先級中斷源。 PT1:T1中斷優(yōu)先級控制位。PT1=1,定時器/計數(shù)器1定義為高優(yōu)先級中斷源;PT1=0,定時器/計數(shù)器1定義為低優(yōu)先級中斷源。 PX1:外部中斷1中斷優(yōu)先級控制位。PX1=1,外中斷1定義為高優(yōu)先級中斷源;PX1=0,外中斷1定義為低優(yōu)先級中斷源。 PT0:定時器/計數(shù)器0(T0)中斷優(yōu)先級控制位,功能同PT1。 PX0:外部中斷0中斷優(yōu)先級控制位,功能同PX1。 在同一優(yōu)先級中,循環(huán)輪流排隊。不分級別高低,所有中斷源優(yōu)先級都一律平等,CPU輪流響應各個中斷源的中斷請求。 4-3 簡述MCS-51單片機中斷響應過程。 答:CPU在每個機器周期的S5P2時刻采樣中斷標志,而在下一個機器周期對采樣到的中斷進行查詢。如果在前一個機器周期的S5P2有中斷標志,則在查詢周期內便會查詢到并按優(yōu)先級高低進行中斷處理,中斷系統(tǒng)將控制程序轉入相應的中斷服務程序。 4-4 MCS-51單片機外部中斷有哪兩種觸發(fā)方式?如何選擇?對外部中斷源的觸發(fā)脈沖或電平有何要求? 答:MCS-51單片機外部中斷有:負邊沿觸發(fā)方式和電平觸發(fā)方式。外部中斷1()觸發(fā)方式控制位。如果IT1為1,則外中斷1為負邊沿觸發(fā)方式(CPU在每個機器周期的S5P2采樣腳的輸入電平,如果在一個周期中采樣到高電平,在下個周期中采樣到低電平,則硬件使IE1置1,向CPU請求中斷);如果IT1為0,則外中斷1為電平觸發(fā)方式。采用電平觸發(fā)時,輸入到的外部中斷源必須保持低電平有效,直到該中斷被響應。同時在中斷返回前必須使電平變高,否則將會再次產生中斷。 4-5 在MCS-51單片機的應用系統(tǒng)中,如果有多個外部中斷源,怎樣進行處理? 答:當系統(tǒng)有多個中斷源時,就可能出現(xiàn)同時有幾個中斷源申請中斷,而CPU在一個時刻只能響應并處理一個中斷請求,為此,要進行排隊。排隊的方式有: (1)按優(yōu)先級排隊。 (2)循環(huán)輪流排隊。MCS-51單片機優(yōu)先級比較簡單,只有兩級,可以通過優(yōu)先級控制寄存器設置不同的優(yōu)先級。當優(yōu)先級相同時,約定有5個中斷源優(yōu)先級順序由高到低分別為:外部中斷0、定時器/計數(shù)器0溢出、外部中斷1、定時器/計數(shù)器1溢出、串行口中斷。 4-6 MCS-51有哪幾種擴展外部中斷源的方法?各有什么特點? 答:1) 利用定時器作為外部中斷使用 特點:把MCS-51的兩個定時器/計數(shù)器(T0和T1)選擇為計數(shù)器方式,每當P3.4(T0)或P3.5(T1)引腳上發(fā)生負跳變時,T0和T1的計數(shù)器加1。可以把P3.4和P3.5引腳作為外部中斷請求輸入線,而定時器的溢出中斷作為外部中斷請求標志。 2)采用中斷和查詢相結合的方法擴充外部中斷源 特點:這種方法是把系統(tǒng)中多個外部中斷源經過與門連接到一個外部中斷輸入端(例如),并同時還接到一個I/O口,中斷請求由硬件電路產生,而中斷源的識別由程序查詢來處理,查詢順序決定了中斷源的優(yōu)先級。 4-7 MCS-51單片機響應外部中斷的典型時間是多少?在哪些情況下,CPU將推遲對外部中斷請求的響應? 答:響應外部中斷的典型時間是至少需要3個完整的機器周期。 1、外部中斷和的電平在每個機器周期的S5P2時被采樣并鎖存到IE0和IE1中,這個置入到IE0和IE1的狀態(tài)在下一個機器周期才被其內部的查詢電路查詢,未產生了一個中斷請求。 2、沒有滿足響應的條件,CPU沒有響應中斷。 3、沒有由硬件生成一條長調用指令轉到相應的服務程序入口。 第5章 5-1 MCS-51單片機定時/計數(shù)器作定時和計數(shù)用時,其計數(shù)脈沖分別由誰提供? 定時: 計數(shù)脈沖由系統(tǒng)振蕩器產生的內部時鐘信號12分頻后提供。定時時間與時鐘頻率和定時初值有關。 計數(shù):外部輸入脈沖計數(shù),接相應的外部輸入引腳T0(P3.4)或T1(P3.5) 5-2 MCS-51單片機內設有幾個定時/計數(shù)器?它們是由哪些特殊功能寄存器組成? 答:MCS-51單片機內部有兩個16位可編程的定時器/計數(shù)器,即定時器T0和定時器T1。 定時/計數(shù)器T0由特殊功能寄存器TH0、TL0(字節(jié)地址分別為8CH和8AH)構成,定時/計數(shù)器T1由特殊功能寄存器TH1、TL1(字節(jié)地址分別為8DH和8BH)構成。其內部還有一個8位的定時器方式寄存器TMOD和一個8位的定時器控制寄存器TCON。TMOD主要是用于選定定時器的工作方式,TCON主要是用于控制定時器的啟動和停止。 5-3定時/計數(shù)器作定時器用時,其定時時間與哪些因素有關?作計數(shù)器用時,對外界計數(shù)頻率有何限制? 答:①定時器/計數(shù)器作定時用時,其定時時間與下面因素有關:晶體振蕩器的頻率、機器周期、計數(shù)器的長度、定時器/計數(shù)器初值。 ②用做"計數(shù)器"時,對外部輸入端T0、T1上1到0的跳變進行加1計數(shù)。在計數(shù)狀態(tài)下,每個機器周期的S5P2時刻采樣外部輸入,當?shù)谝粋€機器周期采樣為高電平,而在第二個機器周期采樣為低電平時,內部計數(shù)器加1。新的計數(shù)值在緊接著采樣到跳變后的下一機器周期的S3P1出現(xiàn)在計數(shù)器中。由于檢測一個1到0的跳變需要2個機器周期,即24個振蕩周期,因此外部計數(shù)的最快速率為振蕩頻率的1/24。外部輸入信號的速率向下可以不受限制,但是脈沖寬度必須保證在其電平變化之前能被采樣到一次,即至少保持一個完整的機器周期,否則,將會由于采樣不到而出現(xiàn)漏計現(xiàn)象。 3-1 設內部RAM中59H單元的內容為50H,寫出當執(zhí)行下列程序段后寄存器A,R0和內部RAM中50H,51H單元的內容為何值? MOV A,59H ;A=50H MOV R0,A ;R0=50H MOV A,#00H ;A=00H MOV @R0,A ;50H=00H MOV A,#25H ;A=25H MOV 51H,A ;51H=25H MOV 52H,#70H ;52H=70H A=25H R0=50H 50H=00H 51H=25H 3-2 訪問外部數(shù)據(jù)存儲器和程序存儲器可以用哪些指令來實現(xiàn)?舉例說明。 答:訪問外部數(shù)據(jù)存儲器指令有: MOVX @DPTR,A MOV DPTR,#0100H MOV @DPTR,A MOVX A,@DPTR MOV DPTR,#0200H MOV A,@DPTR MOVX A,@Ri MOVX A,@R0 MOVX @Ri,A MOVX @R1,A 訪問程序存儲器指令有: MOVC A,@A+PC MOVC A,@A+DPTR 3-3 設堆棧指針SP中的內容為60H,內部RAM中30H和31H單元的內容分別為24H和10H,執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內容將有何變化? PUSH 30H ;61H=24H PUSH 31H ;62H=10H SP=62H POP DPL ;DPL=10H POP DPH ;DPH=24H SP=60H MOV 30H,#00H ;30H=00H MOV 31H,#0FFH ;31H=0FFH 3-4 設(A)=40H,(R1)=23H,(40H)=05H。執(zhí)行下列兩條指令后,累加器A和R1以及內部RAM中40H單元的內容各為何值? XCH A,R1 ;A=23H R1=40H XCHD A,@R1 ;A=25H 40H=03H 3-5 兩個四位BCD碼數(shù)相加,被加數(shù)和加數(shù)分別存于50H,51H和52H,53H單元中(千位、百位在低地址中,十位、個位在高地址中),和存放在54H,55H和56H中(56H用來存放最高位的進位),試編寫加法程序。 ORG 0000H LJMP START ORG 0100H START: MOV A,53H ADD A,51H DA A MOV 55H,A MOV A,52H ADDC A,50H DA A MOV 56H,C SJMP $ END 3-6 設(A)=01010101B,(R5)=10101010B,分別寫出執(zhí)行下列指令后結果。 ANL A , R5 ; 00000000B ORL A , R5 ; 11111111B XRL A , R5 ; 11111111B 3-7指令SJMP rel中,設rel=60H,并假設該指令存放在2114H和2115H單元中。當該條指令執(zhí)行后,程序將跳轉到何地址? 答: 2116H+60H=2176H 3-8 簡述轉移指令AJMP addr11、SJMP rel、 LJMP addr16及JMP @A+DPTR的應用場合。 答:AJMP addr11 為2K字節(jié)范圍內的無條件轉跳指令,把程序的執(zhí)行轉移到指定的地址。SJMP rel是無條件轉跳指令,執(zhí)行時在PC加2后,把指令中補碼形式的偏移量值加到PC上,并計算出轉向目標地址。轉向的目標地址可以在這條指令前128字節(jié)到后127字節(jié)之間。 LJMP addr16執(zhí)行這條指令時把指令的第二和第三字節(jié)分別裝入PC的高位和低位字節(jié)中,無條件地轉向指定地址。轉移的目標地址可以在64K程序存儲器地址空間的任何地方,不影響任何標志。 JMP @A+DPTR 指令的功能是把累加器中8位無符號數(shù)與數(shù)據(jù)指針DPTR中的16位數(shù)相加,將結果作為下條指令地址送入PC,利用這條指令能實現(xiàn)程序的散轉。 3-9 試分析下列程序段,當程序執(zhí)行后,位地址00H,01H中的內容將為何值?P1口的8條I/O線為何狀態(tài)? CLR C ;CY=0 MOV A,#66H ;A=66H JC LOOP1 CPL C ;CY=1 SETB 01H ;20H.1=1 LOOP1: ORL C, ACC.0 ;CY=1 JB ACC.2,LOOP2 ; CLR 00H LOOP2: MOV P1,A ;P1=01100110B SJMP $ 20H.0=0 20H.1=1 P1=66H 3-10 查指令表,寫出下列兩條指令的機器碼,并比較一下機器碼中操作數(shù)排列次序的特點。 MOV 58H,80H 85(80)(58) 直接尋址字節(jié)送直接尋址字節(jié): 匯編時源操作數(shù)在目標操作數(shù)之前。 MOV 58H,#80H 75(58)(80) 立即數(shù)送直接尋址字節(jié): 匯編時目標操作數(shù)在原操作數(shù)之前。 第4章 4-1 什么是單片機的程序設計語言。 答:單片機的程序設計語言是指計算機能理解和執(zhí)行的語言,人與CPU、MCU交流的語言。MCS-51系列單片機的程序設計語言,按照語言的結構及其功能可以分為三種:機器語言、匯編語言、高級語言。 4-2 單片機的程序設計包括哪幾個步驟。 答:程序設計步驟如下: (1) 分析問題。即仔細分析任務書中要實現(xiàn)的功能和性能指標。 (2) 確定算法。即找到解決問題思路、方法。 (3) 分配內存單元。即確定數(shù)據(jù)結構。這一步往往與算法同時考慮。 (4) 根據(jù)算法和數(shù)據(jù)結構,畫出程序流程圖。 (5) 根據(jù)流程圖編寫匯編語言源程序。編輯錄入,保存為*.ASM文件。 (6) 匯編。排除語法錯誤。 (7) 調試(DEBUG)。找出錯誤并更正,再調試,直至通過。 (8) 編寫相關說明文檔。 4-3 畫出單片機的三種基本程序結構。 答: A B 條件成立嗎? A B 是 否 條件成立嗎? A 是 否 順序結構流程圖 分支結構流程圖 循環(huán)結構流程圖 4-4 單片機的分支結構程序指令有哪幾條? 答:分支結構程序指令有JB、JNB、JC、JNC、JZ、JNZ、CJNE、JBC 4-5 什么是單片機的程序嵌套?生活中有哪些現(xiàn)象與單片機的嵌套類似? 答:一個程序中還會調用別的程序,這稱為程序嵌套。 生活例子:在學習,有電話了,去接電話,水開了,放下電話去關掉電水壺,接著打電話,打完電話,接著學習。 4-6 能否從一個子程序內部使用轉移指令直接跳轉到另一個子程序執(zhí)行? 答:可以,為了保證正確地從子程序2返回子程序1,再從1返回主程序,每次調用子程序時必須將下條指令地址保存起來,返回時按后進先出原則依次取出舊PC值。 4-7 能否使用轉移指令從主程序跳到子程序? 答:不可以,當主程序需要執(zhí)行某子程序的功能時,只需執(zhí)行一條調用指令。而并非使用轉移指令 4-8 能否使用轉移指令從子程序跳到主程序? 答:不可以,子程序的最后一條指令應該是返回指令RET或RETI,以確保子程序能夠正確返回主程序。執(zhí)行RET指令時單片機將原來存在堆棧中的斷點地址彈出給PC,保證子程序返回主程序中調用子程序的地方繼續(xù)執(zhí)行主程序。 子程序從子程序的標號開始,到RET或RETI指令結束。 RET指令是一般子程序的返回指令。 RETI指令是中斷服務子程序的返回指令。 4-9 畫出主程序的一般流程圖。 答:主程序流程圖 初始化模塊 上電/復位 人機接口(鍵盤顯示)模塊 輸入模塊 運算模塊 輸出模塊 4-10 畫出子程序的一般流程圖。 答:子程序流程圖 4-11 子程序的規(guī)范化設計包括那幾個部分? 答:子程序的規(guī)范化設計包括: (1) 子程序名稱。給子程序起名字,起名的原則是子程序名能夠反映子程序功能,該名字就是子程序的入口地址標識符。 (2) 子程序功能,對子程序的功能給予簡要的描述。 (3) 入口參數(shù),子程序所要運算或處理的數(shù)據(jù)(加工前的原料),在調用子程序之前,主程序要先準備好入口參數(shù)。 (4)出口參數(shù),子程序運算或處理的結果(加工完成的數(shù)據(jù)),子程序結束之前,最終結果(出口參數(shù))存放在約定的RAM單元,供主程序取用。 (5) 資源占用情況,指出該子程序運行時所使用的片內工作寄存器(R0~R7)、SFR(特殊功能寄存器)、片內RAM單元及片外RAM單元,以便在主程序調用該子程序之前,考慮將這些資源中的哪些字節(jié)保護入棧。 4-12 在片內RAM地址40H到4FH的存儲單元中存有16個無符號數(shù),找出其中的最大值,放入50H單元,請用“循環(huán)結構”和“分支結構”編程。 答:流程圖: 結束 A 50H R2-15=0? N A 中放大值 指針加1 初始化: R2=15賦判斷次數(shù),R0指針指向40H單元 B @R0+1 判斷A>B? 開始 Y Y 源程序: ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R2,#0FH MOV R0,#40H MOV A,@R0 SUB: INC R0 MOV B,@R0 CJNE A,B,NEXT NEXT: JC NEXT1 DJNZ R2,SUB JMP LAST NEXT1: MOV A,B DJNZ R2,SUB JMP LAST LAST: MOV 50H,A SJMP $ 4-13 將片內若干個RAM單元的內容復制到片外RAM單元,請用“主程序”調用“子程序”編程,要求子程序入口參數(shù)為:R0存放片內RAM起始地址,DPTR存放片外RAM起始地址,R1存放字節(jié)數(shù)。請分別編寫主程序和子程序。 答:流程圖 主程序 子程序 開始 R0單元送DPTR 初始化常數(shù) R0←40H DPTR←0200H R1←10H 指針加1 調用復制子程序 N R1-1=0? 結束 返回 Y 源程序: ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R1,#10H MOV R0,#40H MOV DPTR,#0000H LCALL COPY SJMP $ COPY: NEXT: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPL DJNZ R1,NEXT RET 第5章 5-1 簡述中斷、中斷源、中斷源的優(yōu)先級及中斷嵌套的含義。 答: 當CPU正在處理某項事件的時,如果外界或內部發(fā)生了緊急情況,要求CPU暫停正在處理的工作轉而去處理這個緊急情況,待處理完以后再回到原來被中斷的地方,繼續(xù)執(zhí)行原來被中斷了的程序,這樣的過程稱為中斷。 向CPU提出中斷請求的源稱為中斷源。 當系統(tǒng)有多個中斷源時,就可能出現(xiàn)同時有幾個中斷源申請中斷,而CPU在一個時刻只能響應并處理中斷優(yōu)先高的請求。 在實際應用系統(tǒng)中,當CPU正在處理某個中斷源,即正在執(zhí)行中斷服務程序時,會出現(xiàn)優(yōu)先級更高的中斷源申請中斷。為了使更緊急的級別高的中斷源及時得到服務,需要暫時中斷(掛起)當前正在執(zhí)行的級別較低的中斷服務程序,去處理級別更高的中斷源,待處理完以后,再返回到被中斷了的中斷服務程序繼續(xù)執(zhí)行,但級別相同或級別低的中斷源不能中斷級別高的中斷服務,這就是所謂的中斷嵌套。 5-2 MCS-51單片機能提供幾個中斷源?幾個中斷優(yōu)先級?各個中斷的源的優(yōu)先級怎樣確定?在同一優(yōu)先級中各個中斷源的優(yōu)先級怎樣確定? 答: MCS-51單片機能提供五個中斷源,兩個中斷優(yōu)先級。中斷優(yōu)先級是由片內的中斷優(yōu)先級寄存器IP(特殊功能寄存器)控制的。 PS:串行口中斷優(yōu)先級控制位。PS=1,串行口定義為高優(yōu)先級中斷源;PS=0,串行口定義為低優(yōu)先級中斷源。 PT1:T1中斷優(yōu)先級控制位。PT1=1,定時器/計數(shù)器1定義為高優(yōu)先級中斷源;PT1=0,定時器/計數(shù)器1定義為低優(yōu)先級中斷源。 PX1:外部中斷1中斷優(yōu)先級控制位。PX1=1,外中斷1定義為高優(yōu)先級中斷源;PX1=0,外中斷1定義為低優(yōu)先級中斷源。 PT0:定時器/計數(shù)器0(T0)中斷優(yōu)先級控制位,功能同PT1。 PX0:外部中斷0中斷優(yōu)先級控制位,功能同PX1。 在同一優(yōu)先級中,循環(huán)輪流排隊。不分級別高低,所有中斷源優(yōu)先級都一律平等,CPU輪流響應各個中斷源的中斷請求。 5-3 簡述MCS-51單片機中斷響應過程。 答:CPU在每個機器周期的S5P2時刻采樣中斷標志,而在下一個機器周期對采樣到的中斷進行查詢。如果在前一個機器周期的S5P2有中斷標志,則在查詢周期內便會查詢到并按優(yōu)先級高低進行中斷處理,中斷系統(tǒng)將控制程序轉入相應的中斷服務程序。 5-4 MCS-51單片機外部中斷有哪兩種觸發(fā)方式?如何選擇?對外部中斷源的觸發(fā)脈沖或電平有何要求? 答:MCS-51單片機外部中斷有:負邊沿觸發(fā)方式和電平觸發(fā)方式。外部中斷1()觸發(fā)方式控制位。如果IT1為1,則外中斷1為負邊沿觸發(fā)方式(CPU在每個機器周期的S5P2采樣腳的輸入電平,如果在一個周期中采樣到高電平,在下個周期中采樣到低電平,則硬件使IE1置1,向CPU請求中斷);如果IT1為0,則外中斷1為電平觸發(fā)方式。采用電平觸發(fā)時,輸入到的外部中斷源必須保持低電平有效,直到該中斷被響應。同時在中斷返回前必須使電平變高,否則將會再次產生中斷。 5-5 在MCS-51單片機的應用系統(tǒng)中,如果有多個外部中斷源,怎樣進行處理? 答:當系統(tǒng)有多個中斷源時,就可能出現(xiàn)同時有幾個中斷源申請中斷,而CPU在一個時刻只能響應并處理一個中斷請求,為此,要進行排隊。排隊的方式有: (1)按優(yōu)先級排隊。 (2)循環(huán)輪流排隊。MCS-51單片機優(yōu)先級比較簡單,只有兩級,可以通過優(yōu)先級控制寄存器設置不同的優(yōu)先級。當優(yōu)先級相同時,約定有5個中斷源優(yōu)先級順序由高到低分別為:外部中斷0、定時器/計數(shù)器0溢出、外部中斷1、定時器/計數(shù)器1溢出、串行口中斷。 5-6 MCS-51有哪幾種擴展外部中斷源的方法?各有什么特點? 答:1) 利用定時器作為外部中斷使用 特點:把MCS-51的兩個定時器/計數(shù)器(T0和T1)選擇為計數(shù)器方式,每當P3.4(T0)或P3.5(T1)引腳上發(fā)生負跳變時,T0和T1的計數(shù)器加1??梢园裀3.4和P3.5引腳作為外部中斷請求輸入線,而定時器的溢出中斷作為外部中斷請求標志。 2)采用中斷和查詢相結合的方法擴充外部中斷源 特點:這種方法是把系統(tǒng)中多個外部中斷源經過與門連接到一個外部中斷輸入端(例如),并同時還接到一個I/O口,中斷請求由硬件電路產生,而中斷源的識別由程序查詢來處理,查詢順序決定了中斷源的優(yōu)先級。 5-7 MCS-51單片機響應外部中斷的典型時間是多少?在哪些情況下,CPU將推遲對外部 中斷請求的響應? 答:響應外部中斷的典型時間是至少需要3個完整的機器周期。 1、外部中斷和的電平在每個機器周期的S5P2時被采樣并鎖存到IE0和IE1中,這個置入到IE0和IE1的狀態(tài)在下一個機器周期才被其內部的查詢電路查詢,未產生了一個中斷請求。 2、沒有滿足響應的條件,CPU沒有響應中斷。 3、沒有由硬件生成一條長調用指令轉到相應的服務程序入口。 第6章 6-1 8051單片機內設有幾個可編程的定時器/計數(shù)器?它們可以有4種工作方式,如何選擇和設定?各有什么特點? 答:MCS-51單片機內部有兩個16位可編程的定時器/計數(shù)器,即定時器T0和定時器T1 M1 M0:定時器/計數(shù)器四種工作方式選擇 6-2 8051單片機內的定時/計數(shù)器T0、T1工作在模式3時,有何不同? 答:方式3對定時器T0和定時器T1是不相同的。若T1設置為方式3,則停止工作。方式3只適用于T0。 當T0設置為方式3時,將使TL0和TH0成為兩個相互獨立的8位計數(shù)器, TL0利用了T0本身的一些控制方式,它的操作與方式0和方式1類似。而TH0被規(guī)定為用作定時器功能,對機器周期計數(shù),并借用了T1的控制位TR1和TF1。在這種情況下TH0控制了T1的中斷。 6-3 已知單片機時鐘振蕩頻率為6MHz,利用T0定時器,在P1.1引腳上輸出連續(xù)方波,波形如下: 100s P1. 150s 計算定時常數(shù): 100us 方式0 Tc=FE0E; 方式1 Tc=FFCE; 方式2 Tc=CE 150us 方式0 Tc=FD15; 方式1 Tc=FFB5; 方式2 Tc=B5 方法一:采用方式一,定時器中斷。 開始 主程序流程圖: 初始化T0,設置 工作方式 開T0中斷, 設置標志位20H.0 開定時器T0, P1.1=1 等待中斷 中斷子程序流程圖: 開始 20H.0=1? T0賦初值150us T0賦初值100us P1.1=0 P1.1=1 取反20H.0 取反20H.0 中斷返回 中斷返回 Y N 源程序: LJMP TINT0 ORG 0100H START: MOV TMOD,#01H MOV TL0,#0CEH MOV TH0,#0FFH SETB TR0 SETB EA SETB ET0 SETB 20H.0 SETB P1.1 SJMP $ TINT0: JNB 20H.0,NEXT MOV TL0,#0B5H MOV TH0,#0FFH CLR P1.1 CPL 20H.0 SJMP LAST NEXT: MOV TL0,#0CEH MOV TH0,#0FFH SETB P1.1 CPL 20H.0 LAST:RETI 方法二: 采用方式2 定時器中斷 加延時程序 源程序: LJMP START ORG 000BH LJMP TINT0- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 單片機原理及應用 單片機 原理 應用 黃友銳 主編 課后 習題 答案
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://italysoccerbets.com/p-12749887.html