單片機應(yīng)用技術(shù)思考題及習題_第1頁
單片機應(yīng)用技術(shù)思考題及習題_第2頁
單片機應(yīng)用技術(shù)思考題及習題_第3頁
單片機應(yīng)用技術(shù)思考題及習題_第4頁
單片機應(yīng)用技術(shù)思考題及習題_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章思考題與習題1. 什么叫嵌入式系統(tǒng)?與單片機的關(guān)系如何?以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,針對具體應(yīng)用系統(tǒng),對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)被稱為嵌入式系統(tǒng)。單片機又稱嵌入式微控制器,是嵌入式系統(tǒng)應(yīng)用的主流。2. 單片機主要應(yīng)用在哪些方面? 單片機主要應(yīng)用在工業(yè)、智能儀表、軍事導(dǎo)航、電信、日常生活、辦公自動化、汽車電子、消費電子等方面。3. 單片機系統(tǒng)的開發(fā)過程分幾步進行?單片機的應(yīng)用開發(fā)可分為五個過程,總體方案設(shè)計、硬件單元電路設(shè)計與制作、應(yīng)用程序的設(shè)計與調(diào)試、系統(tǒng)聯(lián)調(diào)、固化(燒寫)與脫機運行。4. 下表每一行給出了一種數(shù)制的無符號數(shù),試將它轉(zhuǎn)換為

2、其他兩種數(shù)制,并填入表中。二進制十進制十六進制010110011B1790B3H110010010B402192H11110101B2450F5H0B1086CH11111111B2550FFH01110110B11876H5. 試寫出下列真值所對應(yīng)的機器數(shù)。(1)+1010011 (2)-1011010(3)+0101110(4)-0111111以8位二進制補碼表示為:(1)11010011(2)10100110(3)10101110(4)110000016. 試寫出下列機器數(shù)所對應(yīng)的真值。(1)11000000(2)01111111(3)01011011(4)11111111(1)-64(

3、2)+127(3)+91(4)-17. 下表每一行給出原碼、反碼或補碼中的一個值,試求出其它兩個碼,并填入下表中。原碼反碼補碼01111111B01111111B01111111B10000000B11111111B00000000B10001111B11110000B11110001B01010101B01010101B01010101B10000010B11111101B0FEH00000011B00000011B03H8. 將下列有符號數(shù)的二進制補碼轉(zhuǎn)換為十進制數(shù),并注明它的正負。(1)11111111B(2)01111111B(3)10000011B(4)11111100B(5)000

4、00011B(6)01111100B(1)-1(2)+127(3)-125(4)-4(5)+3(6)+1249. 一個字節(jié)的十六進制數(shù)最大值相當于多大的十進制數(shù),兩個字節(jié)的十六進制數(shù)最大值相當于多大的十進制數(shù)?一個字節(jié)十六進制數(shù)最大值為0FFH,相當于十進制數(shù)255,兩個字節(jié)的十六進制數(shù)最大值為0FFFFH,相當于十進制數(shù)65535。第二章思考題與習題1. 微型計算機由哪幾個功能部件組成?各功能部件的作用如何?微型計算機由CPU、三總線、存儲器、I/O接口電路及外圍設(shè)備組成。CPU作為系統(tǒng)的運算中心和控制中心;三總線用于完成微處理器、內(nèi)存儲器和I/O接口電路之間信息的相互交換;存儲器用于程序與

5、數(shù)據(jù)的存儲;I/O接口電路作為CPU與外部設(shè)備的聯(lián)接橋梁,用于信號的標準化;外圍設(shè)備可實現(xiàn)顯示、輸入、打印、通信等功能。2. 三總線是指什么?它們的主要功能是什么?三總線是指數(shù)據(jù)總線(Data Bus)、地址總線(Address Bus)和控制總線(Control Bus)。數(shù)據(jù)總線(DB)的功能是完成微處理器與內(nèi)存、I/O接口電路之間的數(shù)據(jù)傳送;地址總線(AB)是微處理器向內(nèi)存和I/O接口電路傳送地址信息的通路;控制總線(CB)是微處理器向內(nèi)存和I/O接口電路發(fā)出的命令信息或由外界向微處理器傳送狀態(tài)的信息通路。3. 微型計算機存儲器的地址線與存儲容量有什么關(guān)系?如果存儲器的地址線有13根,則

6、存儲容量為多大?地址線的多少與存儲容量的關(guān)系滿足:存儲容量=2n(n為地址線的數(shù)量),如果存儲器的地址線有13根,則存儲容量為8KB。4. 89S51單片機的存儲器從物理結(jié)構(gòu)上分別可劃分為幾個空間?89S51單片機的存儲器在物理結(jié)構(gòu)上有4個存儲空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。5. 89S51單片機采用何種方式區(qū)分內(nèi)外程序存儲器及內(nèi)外數(shù)據(jù)存儲器?單片機的程序存儲器是在片內(nèi)存儲器還是片外存儲器,取決于單片機外圍引腳的狀態(tài)。片內(nèi)和片外數(shù)據(jù)存儲器采用不同的指令加以區(qū)別,在訪問片內(nèi)數(shù)據(jù)存儲器時,可使用MOV指令;要訪問片外數(shù)據(jù)存儲器可使用MOVX指令。6. 89S5

7、1單片機內(nèi)部數(shù)據(jù)存儲器分為幾個空間?每個空間有何特點?89S51單片機的內(nèi)部數(shù)據(jù)存儲器分為007FH及80HFFH兩塊空間。片內(nèi)數(shù)據(jù)存儲區(qū)地址為007FH空間劃分為工作寄存器區(qū)、位尋址區(qū)及用戶RAM區(qū)三個空間;80HFFH地址空間中只有26個存儲空間被特殊功能寄存器(SFR)占用。工作寄存器區(qū)共32個存儲單元,分為4組,每組由8個地址單元組成通用寄存器R0R7,每組寄存器均可作為CPU當前的工作寄存器。位尋址區(qū)共16個字節(jié),每個字節(jié)8位,共128位,這128位用位地址編號,范圍為00H7FH,位尋址區(qū)既可采用位尋址方式訪問,也可以采用字節(jié)尋址方式訪問。用戶RAM區(qū)共80個單元,可作為堆棧或數(shù)據(jù)

8、緩沖使用。特殊功能寄存器SFR專門用來設(shè)置單片機內(nèi)部的各種資源,記錄電路的運行狀態(tài),參與各種運算及輸入/輸出操作。7. 程序狀態(tài)字PSW的作用是什么?常用狀態(tài)位是哪些?作用是什么?程序狀態(tài)字PSW用來存放與當前指令執(zhí)行結(jié)果相關(guān)的狀態(tài)。常用的狀態(tài)位有CY、AC、OV、P、RS1、RS0等。CY用于標志運算過程中是否有進位或借位;AC用于標志累加器中D3位向D4位是否存在進位或借位;OV用于標志有符號數(shù)運算過程中是否存在超出范圍的情況;P用于指示累加器A中操作結(jié)果的“1”的個數(shù)的奇偶性,在串行通信中做數(shù)據(jù)校驗;RS1、RS0用于選擇工作寄存器組別。8. 89S51單片機內(nèi)部有幾個特殊功能存儲單元?

9、分別有何用途?89S51單片機內(nèi)部有26個特殊功能存儲單元,各自用途請參見表2-3。9. 89S51單片機復(fù)位后,CPU使用的是哪一組工作寄存器?它們的字節(jié)地址分別是什么?CPU如何確定和改變當前工作寄存器組?89S51單片機復(fù)位后,CPU使用的是第0組工作寄存器,它們的字節(jié)地址為00H07H。CPU通過標志寄存器中的RS1、RS0兩位狀態(tài)確定和改變當前工作寄存器組。10. 89S51單片機的4個I/O端口P0P3在結(jié)構(gòu)上有何異同?使用時應(yīng)注意什么?89S51各端口中P0口既可作地址/數(shù)據(jù)總線口,又可作通用I/O口。在作地址/數(shù)據(jù)總線口時,它是真正的雙向口,可以直接驅(qū)動MOS輸入,不需要加上拉

10、電阻。當它作通用I/O口時,應(yīng)注意必須外接上拉電阻才能驅(qū)動MOS輸入。對P1、P2、P3口而言,內(nèi)部已接有上拉電阻,因此不必外接任何電阻就可驅(qū)動MOS輸入。P0口和P1、P2、P3口作通用I/O口時一樣,在輸入時分為“讀鎖存器”和“讀引腳”兩種操作,這兩種操作是用不同的指令區(qū)分的。11. 簡述89S51中下列各引腳信號的作用:、ALE:讀信號 :寫信號 :讀片外部程序存儲器選通信號 :片外程序存儲器選擇信號 ALE:地址鎖存允許信號12. 什么是時鐘周期、機器周期、指令周期?它們之間有何關(guān)系?時鐘電路產(chǎn)生的最小時序單位稱為時鐘周期;單片機執(zhí)行一次基本操作所需要的時間單位為一個機器周期;單片機執(zhí)

11、行一條指令所需要的時間稱為指令周期。1個機器周期=12個時鐘周期,1個指令周期,通常由14個機器周期組成。13. “復(fù)位”的含義是什么?89S51單片機常用的復(fù)位電路有哪些?復(fù)位后各內(nèi)部存儲器的值分別為多少?復(fù)位就是對單片機進行初始化操作,使單片機內(nèi)部各寄存器處于一個確定的初始狀態(tài)。89S51單片機常用的復(fù)位電路有上電復(fù)位和按鈕復(fù)位兩種。復(fù)位后SP為07H,P0P3為0FFH,SBUF不定,除SP、P0P3及SBUF外,其余各寄存器值均為0。第三章思考題與習題1. MCS-51單片機指令格式是怎樣的?各有何含義?匯編語言表示的指令格式為:標號:操作碼助記符操作數(shù)1,操作數(shù)2, 操作數(shù)3 ;注釋

12、 標號:表示該指令所在的地址。操作碼:表示該語句要執(zhí)行的操作內(nèi)容。操作數(shù):表示操作碼的操作對象。注釋:為閱讀程序方便而加的解釋說明。2. MCS-51單片機有幾種尋址方式?描述這些尋址方式的執(zhí)行過程?MCS-5l系列單片機共有7種尋址方式,立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、相對尋址、變址尋址、位尋址。立即尋址:操作數(shù)直接由指令給出,尋址時直接到程序存儲器中查找操作數(shù)。直接尋址:操作數(shù)在指令給出的地址單元中,尋址時直接到數(shù)據(jù)存儲器中查找操作數(shù)。寄存器尋址:所需查找的操作數(shù)在寄存器中。寄存器間接尋址:所要查找的操作數(shù)位于以寄存器的內(nèi)容為地址的單元中。尋址時從寄存器中查找的值做為地址再

13、次查找操作數(shù)。相對尋址:不是尋找操作數(shù)的地址,而是要得到程序跳轉(zhuǎn)位置對應(yīng)的目標地址。變址尋址:以16位寄存器(數(shù)據(jù)指針DPTR或程序計數(shù)器指針PC)作為基址寄存器,以累加器A作為變址寄存器,并以兩者內(nèi)容相加形成新的16位地址作為操作數(shù)所在的地址,查找操作數(shù)。位尋址:將位地址中的內(nèi)容做為操作數(shù)。3. 指出在下列各條指令中,30H分別代表什么含義?MOVA, #30H;為立即數(shù)MOVA, 30H;為直接地址MOV30H, #30H;30H為直接地址,#30H為立即數(shù)MOV30H, 28H;30H為直接地址MOVC, 30H;為位地址4. 設(shè)(A)=0FH,(R0)=30H,內(nèi)部RAM的(30H)=

14、12H,(31H)=0BH,(32H)=0CH, 請指出每條指令中源操作數(shù)的尋址方式,并寫出執(zhí)行下列程序段后上述各單元內(nèi)容的變化結(jié)果。MOV A, R0;寄存器間接尋址,(A)=12HMOV R0, 32H;直接尋址,(30H)=0CHMOV 32H, A;寄存器尋址,(32H)=12HMOV R0, #31H;立即尋址,(R0)=31HMOV A, R0;寄存器間接尋址,(A)=0BH5. 用指令實現(xiàn)下列數(shù)據(jù)傳送。(1)內(nèi)部RAM 20H單元內(nèi)容送內(nèi)部RAM 30H單元。MOV30H,20H(2)外部RAM 20H單元內(nèi)容送內(nèi)部RAM 30H單元。MOVR0,#20HMOVXA,R0MOV3

15、0H,A(3)外部RAM 1000H單元內(nèi)容送寄存器R2中。MOVDPTR,#1000HMOVXA,DPTRMOVR2,A(4)內(nèi)部RAM 20H單元內(nèi)容送外部RAM 1000H單元。MOVA,20HMOVDPTR,#1000HMOVXDPTR,A(5)外部RAM 20H單元內(nèi)容送外部RAM 1000H單元。MOVR0,#20HMOVXA,R0MOVDPTR,#1000HMOVXDPTR,A(6)ROM 2000H單元內(nèi)容送內(nèi)部RAM 30H單元。MOVDPTR,#2000HCLRAMOVCA,A+DPTRMOV30H,A(7)ROM 2000H單元內(nèi)容送外部RAM 20H單元。MOVDPTR

16、,#2000HCLRAMOVCA,A+DPTRMOVR0,#20HMOVXR0,A(8)ROM 2000H單元內(nèi)容送外部RAM 1000H單元。MOVDPTR,#2000HCLRAMOVCA,A+DPTRMOVDPTR,#1000HMOVXDPTR,A6. 設(shè)(A)= 5AH,(R0)=20H,(20H)=6BH,(B)=02H,(PSW)=80H。寫出下列指令執(zhí)行后的結(jié)果及對標志位的影響。(每條指令都以題中規(guī)定的原始數(shù)據(jù)參加操作)。(1)ADD A,R0;(A)=7AH,(PSW)=01H(2)ADDCA,20H;(A)=0C6H,(PSW)=44H(3)SUBB A,#20H ;(A)=3

17、9H,(PSW)=00H(4)INC A;(A)=5BH,(PSW)=81H(5)MUL AB ;(A)=0B4H,(B)=00H,(PSW)=00H(6)DIVAB;(A)=2DH,(B)=00H,(PSW)=00H(7)ANL 20H,#45H ;(20H)=41H,(PSW)=80H(8)ORLA,#32H;(A)=7AH,(PSW)=81H(9)XRL 20H,A ;(20H)=31H,(PSW)=80H(10)XCHA,20H;(A)=6BH,(20H)=5AH,(PSW)=80H(11)SWAPA ;(A)=0A5H,(PSW)=80H(12)CPL A;(A)=0A5H,(PSW

18、)=80H(13)RR A ;(A)=2DH,(PSW)=80H(14)RLC A;(A)=0B5H,(PSW)=01H7. 寫出執(zhí)行下列程序段的運行結(jié)果。 (1)MOVA,#20HMOV DPTR,#2030HMOVX DPTR,AMOV 30H,#50HMOV R0,#30HMOVX A,R0 外部RAM(2030H)=20H,(DPTR)=2030,(30H)=50H,(R0)=30H,(A)=0FFH(2)MOV A,#79HMOV 20H,#88HADD A,20HDA ASWAPA內(nèi)部RAM(20H)=88H,(A)=76H,(PSW)=0C1H8. 試寫出達到下列要求的程序。(1

19、)將外部RAM 1000H單元中的低4位清0,其余位不變,結(jié)果存回原處。DPTR,#1000HMOVXA,DPTRANLA,#0F0HMOVXDPTR,A(2)將內(nèi)部RAM 50H單元中的高3位置1,其余位不變,結(jié)果存回原處。ORL50H,#0E0H(3)將內(nèi)部RAM 20H單元中的高4位置1,低4位清0,結(jié)果存回原處。ANL20H,#0F0HORL20H,#0F0H(4)將DPTR的中間8位取反,其余位不變,結(jié)果存回原處。XRLDPL,#0F0HXRLDPH,#0FH9. 用三種方法實現(xiàn)累加器A中的無符號數(shù)乘2運算。(1)MOVR0,AADDA,R0(2)MOVB,#02HMULAB(3)C

20、LRCRLA10. 編程實現(xiàn)兩個16位二進制數(shù)8E52H、47A4H相減的運算,結(jié)果放在內(nèi)部RAM的20H與21H單元中,前者放低8位,后者放高8位。CLRCMOVA,#52HSUBBA,#0A4HMOV20H,AMOVA,#8EHSUBBA,#47HMOV21H,A11. SJMP 指令和AJMP指令都是兩字節(jié)轉(zhuǎn)移指令,它們有什么區(qū)別?各自的轉(zhuǎn)移范圍是多少?能否用AJMP代替SJMP?為什么?兩條指令區(qū)別在于轉(zhuǎn)移范圍不同,SJMP轉(zhuǎn)移范圍256B,AJMP轉(zhuǎn)換范圍2K,通??梢杂肁JMP代替SJMP,AJMP的轉(zhuǎn)移范圍比SJMP轉(zhuǎn)換范圍大,但必須保證地址前5位不變。12. 已知(SP)=35

21、H,(34H)=12H,(35H)=34H,(36H)=56H。問此時執(zhí)行“RET”指令后,(SP)=? (PC)=?(SP)=33H,(PC)=1234H13. 若(SP)=35H,(PC)=2345H,標號LOOP所在的地址為3456H。執(zhí)行長調(diào)用指令“LCALL LOOP”后,堆棧指針和堆棧的內(nèi)容發(fā)生什么變化?PC的值為多少?若將上述指令改為“ACALL LOOP”是否可以?為什么?(SP)=37H,(36H)=48H,(37H)=23H,(PC)=3456H若將上述指令改為“ACALL LOOP”是不行的,因為“ACALL”指令只能在2K范圍內(nèi)調(diào)用。 14. 試編寫程序完成將內(nèi)部RAM

22、 30H為首地址的20個數(shù)據(jù)傳送至外部RAM以1000H為首地址的區(qū)域中。MOVR0,#30HMOVDPTR,#1000HMOVR7,#20LOOP:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR7,LOOPRET15. 試編程實現(xiàn):若累加器A的內(nèi)容為正數(shù),則將內(nèi)部RAM 20H單元內(nèi)容清零,否則置FFH。MOV20H,#00HJNBACC.7,LOOPMOV20H,#0FFHLOOP:RET16. 試編程實現(xiàn):查找內(nèi)部RAM的20H50H單元中出現(xiàn)00H的次數(shù),并將查找結(jié)果存入R1單元。MOVR0,#20HMOVR7,#31HMOVR1,#00HLOOP:MOVA,R0

23、JNZNZEROINCR1NZERO:INCR0DJNZR7,LOOPRET第四章思考題與習題1. 匯編語言程序設(shè)計分哪幾個步驟?匯編語言程序設(shè)計一般有以下幾步:(1)分析問題,明確任務(wù);(2)確定算法;(3)制訂程序流程圖;(4)編寫源程序;(5)匯編與調(diào)試。2. 什么叫“偽指令”?偽指令與指令有什么區(qū)別?它們的用途是什么?偽指令是指在單片機的指令系統(tǒng)中為匯編程序提供相關(guān)信息的特定指令。與指令不同之處在于,偽指令在匯編時不產(chǎn)生目標代碼,不影響程序執(zhí)行。它們主要用于為匯編程序提供匯編的信息,例如為程序指定起始點和結(jié)束點等。3. 基本程序結(jié)構(gòu)有哪幾種?各有什么特點?基本程序結(jié)構(gòu)主要有順序結(jié)構(gòu)、分

24、支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種。順序結(jié)構(gòu)是從第一條指令開始依次執(zhí)行每一條指令,直到執(zhí)行完畢。分支結(jié)構(gòu)是通過對條件是否滿足的判斷,產(chǎn)生一個或多個分支以決定程序的流向。循環(huán)結(jié)構(gòu)是可對同一組操作重復(fù)執(zhí)行多次的程序結(jié)構(gòu)。4. 試對下列程序進行匯編,并用流程圖說明程序的功能。ORG 0100HMOV A,30HJNB ACC.7,ZHENGCPL AADD A,#01HORLA,#80HZHENG:MOV 32H,ASJMP $END該程序的功能:對30H中的數(shù)據(jù)進行求補運算,并將結(jié)果存入32H單元。5. 子程序調(diào)用時,參數(shù)的傳遞方法有哪幾種?子程序調(diào)用時,參數(shù)傳遞方法有三種:(1)通過工作寄存器或累加器傳遞參數(shù)

25、;(2)通過指針寄存器傳遞參數(shù);(3)通過堆棧傳遞參數(shù)。6. 設(shè)內(nèi)部RAM 50H和51H單元中存放有二個8位有符號數(shù),試編程找出其中的大數(shù),將其存入60H單元中。ORG0100HMOVA,50HXRLA,51HJBACC.7,LOOPMOVA,50HCLRCSUBBA,51HJCLOOP1MOV60H,50HSJMPERETLOOP1:MOV60H,51HSJMPERETLOOP:MOVA,50HJBACC.7,LOOP1MOV60H,50HERET:SJMP$END7. 編程將外部RAM 2000H202FH單元中的內(nèi)容,移入內(nèi)部RAM 20H4FH單元中,并將原數(shù)據(jù)塊區(qū)域全部清0。ORG

26、0100HMOVDPTR,#2000HMOVR0,#20HMOVR7,#30HCHUAN:MOVXA,DPTRMOVR0,ACLRAMOVXDPTR,AINCR0INCDPTRDJNZR7,CHUANSJMP$END8. 編程計算內(nèi)部RAM 50H57H連續(xù)8個單元中所有數(shù)的算術(shù)平均值,將結(jié)果存放在5AH中。假設(shè)所有數(shù)據(jù)和不超過255。ORG0100HMOVR0,#50HMOVR1,#8CLRASUM:ADDA,R0INCR0DJNZR1,SUMMOVB,#8DIVABMOV5AH,ASJMP$END9. 設(shè)有100個有符號數(shù),連續(xù)存放在以2000H為首地址的存儲區(qū)中,試編程統(tǒng)計其中正數(shù)、負數(shù)

27、、零的個數(shù),并將其分別存入40H、41H和42H單元中。ORG0100HMOVDPTR,#2000HMOVR7,#100PD:MOVXA,DPTRJZZEROJNBACC.7,ZHENGINC41HLOOP:INCDPTRDJNZR7,PDSJMP$ZERO:INC42HSJMPLOOPZHENG:INC40HSJMPLOOPEND10. 編程設(shè)計發(fā)光二極管的閃爍程序。要求8只發(fā)光二極管每隔兩只點亮一只,反復(fù)循環(huán)不止,變換時間為100ms,已知時鐘頻率為6MHZ。若時鐘頻率為6MHZ,則機器周期為2s,100ms延時子程序DELAY如下:DELAY:MOVR6,#100DEL:MOVR7,#2

28、50DJNZR7,$DJNZR6,DELRET發(fā)光二極管閃爍程序如下(設(shè)發(fā)光二極管為共陽極,低電平驅(qū)動,接P1口):ORG0100HMOVA,#0FEHLOOP:MOVP1,AACALLDELAYRLARLASJMPLOOPDELAY:(略)END11. 編程將外部RAM DATA1單元開始的50個字節(jié)數(shù)據(jù)逐一移至DATA2單元為起始地址的存儲區(qū)中。ORG0100HMOVDPTR,#DATA1MOVR0,#DTEPMOVR7,#50LOOP:MOVXA,DPTRMOVR0,AINCDPTRINCR0DJNZR7,LOOPMOVDPTR,#DATA2MOVR0,#DTEPMOVR7,#50LOO

29、P1:MOVA,R0MOVXDPTR,AINCDPTR INCR0DJNZR7,LOOP1SJMP$END12. 分別用數(shù)據(jù)傳送指令和位操作指令編寫程序,將內(nèi)部RAM位尋址區(qū)128個位全部清零。(1)用數(shù)據(jù)傳送指令MOVR0,#20HMOVR7,#10HCLRALOOP:MOVR0,AINCR0DJNZR7,LOOPSJMP$(2)用位操作指令CLR00HCLR01HCLR7FH13. 把長度為10H的字符串從內(nèi)部RAM的輸入緩沖區(qū)INBUF向位于外部RAM的輸出緩沖區(qū)OUTBUF進行傳送,當遇到字符“CR”或整個字符串傳送完畢后停止傳送。ORG0100HMOVR7,#10HMOVR0,#IN

30、BUFMOVDPTR,#OUTBUFLOOP:MOVA,R0CJNZA,#0D,JX;0DH為“CR”的ASCII碼SJMPLENDJX:MOVXDPTR,AINCR0INCDPTRDJNZR7,LOOPLEND:SJMP$END14. 編寫一個采用查表法求120的平方數(shù)子程序。要求:X在累加器中,1X20,平方數(shù)高位存放在R6,低位在R7中。ORG0100HMOVDPTR,#TABMOVR0,AADDA,R0MOVR7,AMOVCA,A+DPTRMOVR6,AMOVA,R7INCDPTRMOVCA,A+DPTRMOVR7,ASJMP$TAB:DW0,1,4,9,16,25,36,49,64,

31、81,100,121,144,169,225DW256,289,324,361,400END15. 從內(nèi)部RAM 30H單元開始,連續(xù)存有200字節(jié)的補碼數(shù),編寫程序?qū)⑺鼈兏淖優(yōu)楦髯缘慕^對值。ORG0100HMOVR0,#30HMOVR7,#200LOOP:MOVA,R0JNBACC.7,ZHGSUBBA,#01HCPLAZHG:MOVR0,AINCR0DJNZR7,LOOPSJMP$END16. 若單片機的晶振頻率為6MHZ,試編寫一段延時子程序,其延時時間為500ms。若時鐘頻率為6MHZ,則機器周期為2s,500ms延時子程序DELAY如下:DELAY:MOVR6,#250DEL:MOV

32、R7,#250DEL1:NOPNOPDJNZR7,DEL1DJNZR6,DELRET17. 在內(nèi)部RAM STRING單元開始有一個字符串(字符串以00H結(jié)尾)。試編寫一段程序,統(tǒng)計字符“$”的個數(shù),并將結(jié)果存入NUM單元。ORG0100HMOVR0,#STRINGMOVNUM,#00HLOOP:MOVA,R0CJNEA,#24H,NEQ;24H為“$”的ASCII碼INCNUMNEQ:INCR0CJNEA,#00H,LOOPSJMP$END第五章思考題與習題1. 名詞解釋:(1)中斷 (2)中斷源(3)中斷系統(tǒng)(4)中斷優(yōu)先權(quán)(5)中斷嵌套(6)中斷屏蔽(1)中斷是指在計算機執(zhí)行程序過程中,

33、由服務(wù)對象向CPU發(fā)出請求信號,要求CPU暫停當前程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,當待處理程序執(zhí)行完后,再返回繼續(xù)執(zhí)行原來被中斷程序的過程。(2)中斷源是指引起中斷的原因或觸發(fā)中斷請求的來源。(3)中斷系統(tǒng)是指為實現(xiàn)中斷而設(shè)置的各種硬件和軟件。(4)中斷優(yōu)先權(quán)是指兩個或兩個以上中斷源同時申請中斷時,哪一個中斷源被CPU優(yōu)先響應(yīng)的權(quán)力。(5)中斷嵌套是指在一個中斷處理還未完成時,優(yōu)先級更高的中斷打斷了這個中斷的執(zhí)行過程,即一個中斷程序中又有另一個中斷在執(zhí)行的情況。(6)中斷屏蔽是指某中斷被CPU禁止響應(yīng)的情況。2. 89S51單片機中各中斷源的中斷處理程序的入口地址可否自行設(shè)定?當中斷處理

34、程序的長度大于8個字節(jié)時如何處理?89S51單片機中各中斷源的中斷處理程序的入口地址不能自行設(shè)定,當中斷處理程序的長度大于8個字節(jié)時,應(yīng)設(shè)置一條無條件跳轉(zhuǎn)指令,將中斷處理程序?qū)懭肫渌鎯^(qū)。3. 89S51單片機的中斷系統(tǒng)由哪些部件構(gòu)成?分別有何用處?89S51單片機的中斷系統(tǒng)由中斷源、中斷標志位、中斷允許控制寄存器、中斷優(yōu)先級控制寄存器及中斷入口地址組成。中斷源用于產(chǎn)生中斷請求信號;中斷標志位用于將中斷源產(chǎn)生的中斷請求做上標記,以便于CPU能及時查詢到中斷的請求;中斷允許控制寄存器用于設(shè)置哪些中斷源可以被CPU響應(yīng),哪些被禁止;中斷優(yōu)先級控制寄存器的作用是設(shè)置各種中斷源的優(yōu)先順序;中斷入口地

35、址用于將中斷處理程序的首地址存入PC指針以控制中斷服務(wù)程序的執(zhí)行。4. 89S51單片機中斷系統(tǒng)有幾個中斷源?各中斷標志如何產(chǎn)生?如何清除?CPU響應(yīng)中斷時,它們的中斷入口地址分別是多少?89S51單片機中斷系統(tǒng)有五個中斷源,是通過TCON、SCON中的IE0、IE1、TF0、TF1、TI、RI六個標志位產(chǎn)生的。其中,IE0、IE1、TF0、TF1由硬件清零,TI、RI由軟件清零。它們的中斷入口地址分別是0003H(外部中斷0)、0013H(外部中斷1)、000BH(定時器0)、001BH(定時器1)、0023H(串行口)。5. 89S51內(nèi)部設(shè)有幾個定時器/計數(shù)器?它們是由哪些特殊功能寄存器

36、組成的?89S51內(nèi)部設(shè)有2個定時器/計數(shù)器,它們是由TCON、TMOD、TH1、TH0、TL1、TL0組成。6. 89S51單片機定時/計數(shù)器T0、T1有哪幾種操作模式?它們有什么區(qū)別?89S51單片機定時/計數(shù)器T0、T1有4種操作模式。方式0為13位定時/計數(shù)器,方式1為16位定時/計數(shù)器,方式2為自動重裝初值的8位定時/計數(shù)器,方式3為T0被拆成兩個獨立的8位定時/計數(shù)器。7. 89S51單片機定時/計數(shù)器在定時或計數(shù)工作方式下,其計數(shù)脈沖分別由誰提供?定時時間與哪些因素有關(guān)?做計數(shù)時,對外界計數(shù)脈沖頻率有何限制?89S51單片機定時/計數(shù)器在定時工作方式下,其計數(shù)脈沖由內(nèi)部機器周期提

37、供;89S51單片機定時/計數(shù)器在計數(shù)工作方式下,其計數(shù)脈沖由外部引腳T0(P3.4)、T1(P3.5)提供。定時時間與定時器工作方式及單片機時鐘有關(guān)。做計數(shù)時,對外界計數(shù)脈沖頻率必需小于時鐘頻率的1/24,且高低電平持續(xù)時間不得小于一個機器周期。8. 設(shè)單片機的fosc=12MHz,若內(nèi)部RAM的30H單元的內(nèi)容為55H,則定時器的定時時間為30ms;否則定時時間為15ms。試對定時/計數(shù)器進行初始化編程。MOVTMOD,#01HMOVTH0,#0C5HMOVTL0,#68HMOVA,30HCJNEA,#55H,STMOVTH0,#8AHMOVTL0,#0CFHST:9. 已知89S51的f

38、osc=6MHz,利用定時/計數(shù)器T0編程實現(xiàn)P1.0端口輸出矩形波。要求:矩形波高電平寬度為50s,低電平寬度為300s。將T0作為定時器,工作在方式2,定時時間為25s,則初值為256-25=231=E7H,TMOD=00000010B=02H。ORG0000HLJMPSTARTORG000BHLJMPINTT0ORG0050HSTART:CLRP1.0MOVTMOD,#02HMOVTH0,#0E7HMOVTL0,#0E7HSETBPT0MOVIE,#10000010BSETBTR0SETBP1.0SETBF0MOVR7,#6LJMP$ORG0100HINTT0:JBF0,GAODJNZR

39、7,IEDMOVR7,#6GAO:CPLP1.0CPLF0IED:RETIEND10. 已知 89S51的fosc=12MHz,用定時/計數(shù)器T1編程實現(xiàn)P1.0和 P1.1引腳上分別輸出周期為2ms和500s的方波。將T1作為定時器,工作在方式2,定時時間為250s,則初值為256-250=6=06H,TMOD=00100000B=20H。ORG0000HLJMPSTARTORG001BHLJMPINTT1ORG0050HSTART:CLRP1.0CLRP1.1MOVTMOD,#20HMOVTH1,#06HMOVTL1,#06HSETBPT1MOVIE,#10001000BSETBTR1MO

40、VR7,#4LJMP$ORG0100HINTT1:CPLP1.1DJNZR7,IEDMOVR7,#4CPLP1.0IED:RETIEND11. 什么是串行異步通信?它有哪些特點?串行異步通信是指數(shù)據(jù)傳送時各位分時傳送,只需要一根數(shù)據(jù)線。在傳送過程中數(shù)據(jù)以字符為單位傳送,每個字符數(shù)據(jù)都要加進一些識別信息位和校驗位,數(shù)據(jù)發(fā)送和接收端的時鐘可以不同步。它的特點是節(jié)省傳輸線路,可實現(xiàn)遠距離通信,傳輸速度相對同步通信慢,異步通信不需要發(fā)送端和接收端的時鐘嚴格同步。12. 89S51單片機的串行口由哪些功能部件組成?各有何作用?89S51單片機的串行口由SCON、SBUF及若干門電路構(gòu)成。SCON用于設(shè)置

41、串行口的工作方式,SBUF用于存儲串行通信時要發(fā)送的數(shù)據(jù)或已接收到的數(shù)據(jù)。13. 89S51的串行數(shù)據(jù)緩沖器只有一個地址,如何判斷是發(fā)送還是接收信號?通過不同的傳送指令進行區(qū)分,如果發(fā)送數(shù)據(jù)則使用“MOVSBUF,A”,如果接收數(shù)據(jù)則使用“MOVA,SBUF”14. 89S51的串行口有幾種工作方式?各種方式下的數(shù)據(jù)格式及波特率有何區(qū)別?89S51的串行口有4種工作方式。方式0為同步移位寄存器方式,波特率為fOSC/12;方式1為10位異步通信方式,波特率可調(diào);方式2為11位異步通信方式,波特率為fOSC/32或fOSC/64;方式3為11位異步通信方式,波特率可調(diào)。15. 試用查詢方式編寫一

42、數(shù)據(jù)塊發(fā)送程序。數(shù)據(jù)塊首址為內(nèi)部RAM的30H單元,其長度為20個字節(jié),設(shè)串行口工作于方式1,傳送的波特率為9600bps(fosc=6MHz),不進行奇偶校驗處理。設(shè)波特率=9600bps。由T1工作于方式2,fosc=6MHz,SMOD=1,求得TH1=TL1=0FDH。ORG0100HFIRST:MOVTMOD,#20HMOVTH1,#0FDHMOVTL1,#0FDHMOVSCON,#40HMOVPCON,#80HSETBTR1MOVR0,#30HMOVR1,#20F:MOVA,R0MOVSBUF,AJF:JBCTI,GGSJMPJFGG:INCR0 DJNZR1,F(xiàn)SJMP$END16

43、. 試用中斷方式編寫一數(shù)據(jù)塊接收程序。接收緩沖區(qū)首址為內(nèi)部RAM的20H單元,接收的數(shù)據(jù)為ASCII碼,設(shè)串行口工作于方式1,波特率設(shè)定為1200bps(fosc=11.0592MHz),接收時進行奇偶校驗,若出錯則刪除接收的數(shù)據(jù)。設(shè)波特率=1200bps。由T1工作于方式2,fosc=11.0592MHz,SMOD=0,求得TH1=TL1=0E8H。ORG 0000H LJMP MAINR;轉(zhuǎn)接收主程序 ORG 0023H LJMP INTSE2;轉(zhuǎn)中斷服務(wù)程序 MAINR:MOV SP,#60H;主程序MOVTMOD,#20HMOVTH1,#0E8HMOVTL1,#0E8HMOV SCON

44、,#50H;串行口初始化,允許接收MOV PCON,#00H SETB EA;開中斷 SETB ESSETBTR1 MOV R1,#20H;置接收緩沖區(qū)首址 SJMP $ INTSE2:CLR RI;清中斷標志MOV A,SBUF;接收數(shù)據(jù)JNBPSW.0,RX1;P=0,轉(zhuǎn)RX1JNBRB8,RERR;P=1,RB8=0,轉(zhuǎn)出錯處理SJMPRX2RX1:JBRB8,RERR;P=0,RB8=1,轉(zhuǎn)出錯處理RX2:MOVR1,A ;保存數(shù)據(jù)INCR1RETIRERR:CLRASJMPRX2END第六章思考題與習題1. 在89S51擴展系統(tǒng)中,程序存儲器和數(shù)據(jù)存儲器共用了16位地址線和8位數(shù)據(jù)線

45、,為什么兩個存儲空間不會發(fā)生沖突?兩個存儲器讀寫方式不同,讀信號接線方式也不同,因此不會發(fā)生沖突。2. 為什么當P2作為擴展存儲器的高8位地址后,不再適用作I/O口?因為P2被用作高8位地址輸出時,若再作I/O口會使數(shù)據(jù)被修改,則使輸出的地址也被修改,此時單片機外部所接存儲器地址也會被修改,導(dǎo)致讀寫數(shù)據(jù)錯誤。3. 請用譯碼器74LS138設(shè)計一個譯碼電路,分別選中4片2864,且列出各芯片所占的地址空間范圍。2864的存儲容量為8K,每片芯片地址范圍0000H1FFFH,使用74LS138擴展圖如下。則四片2864的地址范圍依次是(1)0000H1FFFH,(2)2000H3FFFH,(3)4

46、000H5FFFH,(4)6000H7FFFH。4. 試說明8155的內(nèi)部結(jié)構(gòu)特點,其定時/計數(shù)器與89S51內(nèi)部的定時/計數(shù)器有何異同?8155芯片內(nèi)部包含2個8位I/O并行接口和1個6位I/O并行接口,一個14位的減1定時/計數(shù)器及256字節(jié)片內(nèi)RAM。其定時/計數(shù)器是14位減計數(shù),而89S51內(nèi)部的定時/計數(shù)器是16位加計數(shù)。5. 說明8155工作方式控制字的作用及各位的功能。D7D6D5D4D3D2D1D0TM2TM1IEBIEAPC2PC1PBPAPB、PA:控制端口B與A的數(shù)據(jù)傳送方式。PC2、PC1:控制端口工作方式。TM2、TM1:控制定時/計數(shù)器工作方式。IEB、IEA:控制

47、端口B與A的中斷。6. 試對8155進行初始化編程,使其A口作輸出口,B口作輸入口,并啟動定時/計數(shù)器,輸出連續(xù)方波,定時時間為10毫秒,輸入時鐘頻率為500kHz。計數(shù)初值=5000=1388HORG0100H START:MOV DPTR,#7F00H;DPTR指向命令寄存器地址MOV A,#01H ;命令字00000001BMOVXDPTR,A ;初始化8155MOVDPTR,#7F04H;送低8位計數(shù)值MOVA,#88HMOVXDPTR,A INC DPTR ;送高6位計數(shù)值 MOVA,#53H ;設(shè)置M2M1=01,輸出脈沖為連續(xù)方波 MOVXDPTR,A MOV DPTR,#7F0

48、0H;啟動計數(shù)器工作MOV A,#0C0H;設(shè)置工作方式控制字 MOVXDPTR,A7. 用串行口擴展4個LED數(shù)碼管顯示電路,編程使數(shù)碼管輪流顯示“ABCD”,“EFGH”,每秒鐘變換一次。ORG0100HSTART:MOVDPTR,#TABMOVR0,#50HMOVR7,#4ABCD:CLRAMOVCA,A+DPTR;查顯示碼MOVR0,AINCDPTRINCR0DJNZR7,ABCDACALLDISPACALLDELAYMOVR0,#50H MOVR7,#4EFGH:CLRAMOVCA,A+DPTR;查顯示碼MOVR0,AINCDPTRINCR0DJNZR7,EFGHACALLDISPA

49、CALLDELAYLJMPSTARTDISP:CLRP1.4;顯示器熄滅SETBP1.3;打開移位脈沖輸入SETBP1.4;打開74LS164MOVSCON,#00H;設(shè)置串口工作在方式0MOVR0,#50H;設(shè)置顯示緩沖區(qū)首址MOVR2,#04H;設(shè)置循環(huán)次數(shù)LOOP: MOVA,R0MOVSBUF,A;送顯示W(wǎng)AIT:JNBTI,WAIT;發(fā)送是否完成CLRTI;清發(fā)送完成標志INCR0DJNZR2,LOOP;未發(fā)送完繼續(xù)CLRP1.3RETDELAY:MOVR6,#10DLY1:MOVR5,#200DLY2:MOVR4,#250DLY3:DJNZR4,DLY3DJNZR5,DLY2DJN

50、ZR6,DLY1RETTAB:DB88H,83H,0A7H,0A1H,84H,8EH,90H,89HEND8. 試說明鍵盤的工作原理,并說明鍵盤消抖的作用。如圖6-10所示,鍵盤的工作原理簡單的說就是當任意一個按鍵被按下,都會使相應(yīng)的端子出現(xiàn)低電平。若沒有按鍵按下,則為高電平。通過單片機檢測輸入端子的狀態(tài)就可以判斷鍵盤的按鍵是否按下。鍵盤消抖的作用為了保證按鍵識別的準確性。9. 在一個晶振為12MHZ的89S51應(yīng)用系統(tǒng)中,接有一片DAC0832,它的地址為7FFFH,輸出電壓為05V。試編寫一個程序,使DAC0832輸出一個矩形波,波形占空比為1:4。高電平時電壓為2.5V,低電平時電壓為1.25V。ORG0100HSTART:MOVDPTR,#7FFFH;送DAC08

溫馨提示

  • 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

提交評論