單片微機原理與接口技術答案(宋躍版)_第1頁
單片微機原理與接口技術答案(宋躍版)_第2頁
單片微機原理與接口技術答案(宋躍版)_第3頁
單片微機原理與接口技術答案(宋躍版)_第4頁
單片微機原理與接口技術答案(宋躍版)_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第1章 思考題及習題參考答案1.1寫出下列二進制數的原碼、反碼和補碼(設字長為8位)。(1)001011(2)100110(3)-001011(4)-111111答:(1)原碼:00001011 反碼:00001011 補碼:00001011(2)原碼:00100110 反碼:00100110 補碼:00100110(3)原碼:10001011 反碼:11110100 補碼:11110101(4)原碼:10111111 反碼:11000000 補碼:110000011.2已知X和Y,試計算下列各題的X+Y補和X-Y補(設字長為8位)。(1) X=1011Y=0011(2) X=1011Y=01

2、11 (3) X=1000Y=1100 答:(1)X補碼=00001011 Y補碼=00000011 Y補碼=11111101X+Y補=00001110 X-Y補=00001000(2)X補碼=00001011 Y補碼=00000111 Y補碼=11111001X+Y補=00010010 X-Y補=00000100(3)X補碼=00001000 Y補碼=00001100 Y補碼=11110100X+Y補=00010100 X-Y補=111111001.3 微型計算機由那幾部分構成?答:微型計算機由微處理器、存儲器和I/O接口電路構成。各部分通過地址總線(AB)、數據總線(DB)和控制總線(CB

3、)相連。1.4 8086的尋址范圍有多大?其物理地址是如何形成?答:8086有20根地址總線,它可以直接尋址的存儲器單元數為1M字節,其地址區域為00000HFFFFFH。物理地址是由段地址與偏移地址共同決定的,物理地址=段地址×16+偏移地址其中段地址通常來自于段寄存器CS ,物理地址來自于IP。1.5 什么叫單片機?它有何特點? 答:單片機就是在一塊硅片上集成了CPU、RAM、ROM、定時器/計數器和多種I/O口(如并行、串行及A/D變換器等)的一個完整的數字處理系統。單片機主要特點有:品種多樣,型號繁多;存儲容量大;頻率高,速度快;控制功能強,集成度高;功耗低;配套應用軟件多。

4、第2章 思考題及習題參考答案:2.1.說明ROM、EPROM、EEPROM和FLASH之間的主要區別解:ROM為只讀存儲器,在一般情況下只能讀出所存信息,而不能重新寫入。信息的寫入是通過工廠的制造環節或采用特殊的編程方法進行的,一旦寫入,就能長期保存。EPROM芯片一般允許用戶多次編程和擦除。擦除時,通過向芯片窗口照射紫外光的方法來進行。 EEPROM,也稱E2PROM。該類芯片允許用戶多次編程和擦除。擦除時,可采用加電方法在線進行。FLASH是一種新型的大容量、速度快、電可擦除可編程只讀存儲器。2.2.EPROM、PROM、動態RAM、靜態RAM等存儲器中,哪幾類是可以隨時讀寫的?解:動態R

5、AM、靜態RAM這幾類是可以隨時讀寫的。2.3 某ROM芯片中有12根地址輸入端和8個數據輸出端,該芯片的存儲容量是多少位?解:芯片的存儲容量是4K*8位。2.4.說明動態RAM和靜態RAM的主要區別,使用時應如何選用?解:靜態(static)RAM,即SRAM。它以觸發器為基本存儲單元,所以只要不掉電,其所存信息就不會丟失。該類芯片的集成度不如動態RAM,功耗也比動態RAM高,但它的速度比動態RAM快,也不需要刷新電路。在構成小容量的存儲系統時一般選用SRAM。在微型計算機中普遍用SRAM構成高速緩沖存儲器。 動態(Dynamic)RAM,即DRAM。一般用MOS型半導體存儲器件構成,最簡單

6、的存儲形式以單個M0S管為基本單元,以極間的分布電容是否持有電荷作為信息的存儲手段,其結構簡單,集成度高。但是,如果不及時進行刷新,極間電容中的電荷會在很短時間內自然泄漏,致使信息丟失。所以,必須為它配備專門的刷新電路。動態RAM芯片的集成度高、價格低廉,所以多用在存儲容量較大的系統中。目前,微型計算機中的主存幾乎都是使用動態RAM。 2.5.說明NOR FLASH與NAND FLASH的主要區別,使用時應如何選用?解:NOR Flash具有以下特點:(1) 程序和數據可存放在同一芯片上,擁有獨立的數據總線和地址總線,能快速隨機讀取,允許系統直接從Flash中讀取代碼執行,而無需先將代碼下載至

7、RAM中再執行;(2) 可以單字節或單字編程,但不能單字節擦除,必須以塊為單位或對整片執行擦除操作,在對存儲器進行重新編程之前需要對塊或整片進行預編程和擦除操作。但是NOR Flash的擦除和編程速度較慢,塊尺寸又較大,因此擦除和編程操作所花費的時間很長,在純數據存儲和文件存儲的應用中,NOR技術顯得力不從心。NAND Flash具有以下特點:(1) 以頁為單位進行讀和編程操作,1頁為256或512B(字節);以塊為單位進行擦除操作,1塊為4K、8K或16KB。具有快編程和快擦除的功能,其塊擦除時間是2ms;而NOR技術的塊擦除時間達到幾百ms。(2) 數據、地址采用同一總線,實現串行讀取。隨

8、機讀取速度慢且不能按字節隨機編程。(3) 芯片尺寸小,引腳少,是位成本(bit cost)最低的固態存儲器,將很快突破每兆字節1美元的價格限制。(4) 芯片包含有失效塊,其數目最大可達到335塊(取決于存儲器密度)。失效塊不會影響有效塊的性能,但設計者需要將失效塊在地址映射表中屏蔽起來。NOR Flash具有可靠性高、隨機讀取速度快的優勢,在擦除和編程操作較少而直接執行代碼的場合,尤其是純代碼存儲的應用中廣泛使用,如PC的BIOS固件、移動電話、硬盤驅動器的控制存儲器等。 NAND Flash結構的閃速存儲器適合于純數據存儲和文件存儲,主要作為SmartMedia卡、CompactFlash卡

9、、PCMCIA ATA卡、固態盤的存儲介質,并正成為閃速磁盤技術的核心。 2.6.現有2K×8位的RAM芯片若干片,若用線選法組成存儲器,有效的尋址范圍最大是多少KB?若用3-8譯碼器來產生片選信號,則有效的尋址范圍最大又是多少?若要將尋址范圍擴展到64KB,應選用什么樣的譯碼器來產生片選信號?解:以8086為例,8086有20條地址線,用11條地址線尋址一片2K×8位的RAM,余下的9條地址線做線選法的線,故可以并聯9個芯片,故尋址最大范圍是20KB,若用3-8譯碼器來產生片選信號,9條地址線可以控制3個3-8譯碼器這樣就可以控制24個芯片最大范圍是50KB. 若要將尋址

10、范圍擴展到64KB可選用4-16地址譯碼器來產生片選信號。2.7.什么是地址重疊區?它對存儲器擴展有什么影響?解:基本地址和前面全譯碼連接的地址范圍是相同的,但兩者還是有區別的。區別在于全譯碼連接時各芯片的地址是唯一的,而部分譯碼連接時各芯片地址不是唯一的,也就是可以由若干個地址都選中同一芯片的同一單元,既所謂的地址重疊區。由于存在的地址重疊,影響了地址區的有效使用,也限制了存儲器的擴展。因此,在選用部分譯碼時,也要盡可能多選一些高位地址線來作為譯碼器的輸入。圖2-22 1K×8擴展的3 K×8的存儲系統2.8如圖2-22若用1K×8位片子來擴展3K×8

11、位RAM,試核算各片的地址范圍為多少?解:A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址G1 A B C 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 片1:A000H···1 0 1 0 0 0 11 1 1 1 1 1 1 1 1 片1:A3FFHA15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址G1 A B C 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 片2:B000H···1 0 1

12、1 0 0 11 1 1 1 1 1 1 1 1 片2:B3FFHA15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址G1 A B C 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 片3:B400H···1 0 1 1 0 1 11 1 1 1 1 1 1 1 1 片3:B7FFH所以各片地址范圍為:片1:A000H-A3FFH, 片2:B000H-B3FFH, 片3:B400H-B7FFH2.9. 現有8K×8位RAM多片,1片3-8譯碼器,要構成容量為16K×8位的存儲器,請

13、用線譯碼、部分譯碼、全譯碼3種方式分別設計,畫出連接圖,并指出尋址范圍。解:線譯碼法: 尋址范圍:2000H5FFFH部分譯碼尋址范圍:0000H3FFFH全譯碼:尋址范圍:0000HFFFFH2.10.如何檢查擴展的RAM工作是否正常?試編一個簡單的RAM檢查程序,要求此程序能記錄有多少個RAM單元工作有錯?且能記錄出錯的單元地址。解:TEST_CONST EQU 5AHTEST_RAM EQU 03HORG 0000HLJMP INITIAL ORG 0050HINITIAL: MOV R0,#253MOV R1,#3HTEST_ALL_RAM: MOV R2,#0FFHTEST_ONE_

14、RAM: MOV A, R2MOV R1,ACLR AMOV A,R1CJNE A,2H, ERROR_DISPLAYDJNZ R2, TEST_ONE_RAMINC R1DJNZ R0, TEST_ALL_RAMOK_DISPLAY:MOV P1, #11111110BWAIT1: SJMP WAIT1ERROR_DISPLAY: MOV A, R1MOV P1,AWAIT2: SJMP WAIT2END第3章 思考題及習題參考答案3.1. 80C51單片機的P0P3口在通用I/O口時操作要注意哪些?P0P3口不做通用I/O口時是什么功能?在使用上有何特點? P0P3驅動能力如何?答:(1)

15、作為通用I/O口時,P0P3都是準雙向口,輸入引腳信息時都必須先向其鎖存器寫“1”,作為輸出口時P0口需結上拉電阻。(2)P0可以作為地址/數據總線;P2口可以作為地址線的高8位;P3口是雙功能口,每條口線還具有不同的第二功能。(3)P0口的驅動能力為8個TTL負載,而其它口僅可驅動4個TTL負載。3.2、MCS-51單片機運行出錯或程序進入死循環,如何擺脫困境?答:通過復位電路復位3.3、單片機的復位(RST)操作有幾種方法,復位功能的主要作用是什么?答:單片機的復位操作方式有:1、上電復位;2、手動復位。復位功能的主要作用是:復位時,PC初始化為0000H,使MCS-51單片機從0000H

16、開始執行程3.4、簡述程序狀態寄存器PSW寄存器中各位的含義。答:程序狀態字寄存器PSW,8位。其各位的意義為:CY:進位、借位標志。有進位、借位時CY=1,否則CY=0;AC:輔助進位、借位標志(高半字節與低半字節間的進位或借位);F0:用戶標志位,由用戶自己定義;RS1、RS0:當前工作寄存器組選擇位,共有四組:00、01、10、11;OV:溢出標志位。有溢出時OV=1,否則OV=0;P:奇偶標志位。存于累加器ACC中的運算結果有奇數個1時P=1,否則P=0.3.5、80C51單片機的當前工作寄存器組如何選擇?答:由特殊功能寄存器中的程序狀態寄存器PSW的RS1、RS0來決定,當RS1、R

17、S0為00時,選擇0組;為01時,選擇1組;為10時選擇2組,為11時選擇3組。3.6. 80C51單片機的控制總線信號有哪些?各信號的作用如何?答:80C51單片機的控制總線信號有以下4個,各信號的作用為:RST/VPD: 復位信號輸入引腳/備用電源輸入引腳;ALE/PROG: 地址鎖存允許信號輸出引腳/編程脈沖輸入引腳;EA/Vpp : 內外存儲器選擇引腳/片內EPROM(或FlashROM)編程電壓輸入引腳;PSEN:外部程序存儲器選通信號輸出引腳。3.7、8051單片機中EA引腳的作用是什么?答:訪問內部或外部程序存儲器的選擇端當EA接高電平的時候程序從內部ROM開始執行,當EA為低電

18、平的時候,從外部ROM開始執行3.8、 程序計數器PC的作用是什么?答:程序計數器PC是一個16位的計數器,他總是存放著下一個要取的指令的16位存儲單元地址。用來存放下一條指令的地址用來存放下一條指令的地址的。當執行一條指令時,首先需要根據PC中存放的指令地址,將指令由內存取到指令寄存器中,此過程稱為“取指令”。與此同時,PC中的地址或自動加1或由轉移指針給出下一條指今的地址。此后經過分析指令,執行指令。完成第一條指令的執行,而后根據PC取出第二條指令的地址,如此循環,執行每一條指令3.9、堆棧有哪些功能?堆棧指示器( SP)的作用是什么?在程序設計時,為什么要對 SP重新賦值?答:堆棧在中端

19、過程中用來保護現場數據,復位后SP=7H,而堆棧一般設置在通用ROM區(30H-7FH),在系統初始化時候要從新設置。3.10、內部 RAM低 128單元劃分為哪 3個主要部分?說明各部分的使用特點。 答:80C51內部128B的數據RAM區,包括有工作寄存器組區、可直接位尋址區和數據緩沖區。各區域的特性如下:(1) 00H1FH為工作寄存器組區,共分4組,每組占用8個RAM字節單元,每個單元作為一個工作寄存器,每組的8個單元分別定義為8個工作寄存器R0R7。當前工作寄存器組的選擇是由程序狀態字PSW的RS1、RS0兩位來確定。如果實際應用中并不需要使用工作寄存器或不需要使用4組工作寄存器,不

20、使用的工作寄存器組的區域仍然可作為一般數據緩沖區使用,用直接尋址或用Ri的寄存器間接尋址來訪問。(2) 20H2FH為可位尋址區域,這16個字節的每一位都有一個地址,編址為00H7FH。當然,位尋址區也可以用作字節尋址的一般數據緩沖區使用。(3)30H7FH為堆棧、數據緩沖區。3.11、簡述MCS-51單片機存儲區的劃分。答:MCS-51單片機的存儲器從物理結構上分為:片內和片外數據存儲器,片內和片外程序存儲器。2)從邏輯上分別可劃分為:片內統一尋址的64K程序存儲器空間(0000H-FFFFH);64KB的片外數據存儲器空間(0000H-FFFFH);256B的片內數據存儲器空間(00H-F

21、FH)。12、MCS-51基本型單片機的中斷入口地址各為多少。答:外部中斷0 中斷入口地址 0003H定時/計數器0 中斷入口地址 000BH外部中斷1 中斷入口地址 0013H定時/計數器1 中斷入口地址 001BH串行接口 中斷入口地址 0023H3.13、什么是指令周期、機器周期和時鐘周期?答:指令周期:指令的執行時間;機器周期:CPU完成一個最簡單的指令所需要的時間;時鐘周期:晶振信號周期就是時鐘周期。3.14、已知一MCS51單片機系統使用6MHZ的外部晶體振蕩器,計算:該單片機系統的狀態周期與機器周期各為多少?解:由于晶振為6MHz,所以機器周期為2us,因為一個機器周期由6個狀態

22、周期組成,所以狀態周期1/3us3.15、8031單片機需要外接程序存儲器,實際上它還有多少條I/O線可以用?當使用外部存儲器時,還剩下多少條I/O線可用?答:8031系統必須外接程序促成器,原則上說,P0和P2口要用作數據和地址總線,所以只有P1和P3口可用作I/O口,共16條I/O線。在使用外部存儲器時,除了占用P0和P2口外,還需要用P3口RD(P3.7)和WR(P3.6)兩條控制線,所以這種情況下就只剩下14條I/O線可用了。第4章 思考題及習題參考答案4.1. 尋址方式是什么?答:尋址方式是尋找操作數或操作數地址的方式。2. 89C51指令系統有哪幾種尋址方式?答:89C51的尋址方

23、式有七種。即:寄存器尋址、直接尋址、寄存器間接尋址、立即尋址、基址寄存器加變址寄存器變址尋址、相對尋址和位尋址。3、訪問特殊功能寄存器SFR可以采用哪些尋址方式?答:直接尋址和位尋址方式。4、訪問RAM單元可以采用哪些尋址方式?訪問外部RAM單元有哪些指令?答:直接尋址、寄存器間接尋址和位尋址方式。訪問外部RAM單元的指令有4條:MOVX A,DPTR MOVX A,Ri MOVX DPTR,A MOVX Ri,A 5、訪問外部程序存儲器可以采用哪些尋址方式?訪問外部程序存儲器有哪些指令?答:立即尋址、變址尋址和相對尋址方式。訪問外部程序存儲器的指令有2條MOVC A,A+DPTR MOVC

24、A,A+PC 6、試寫出完成以下每種操作的指令序列。 (1)將R0的內容傳送到片內RAM 20H;(2)將R1的內容傳送到R0; (3)內部RAM單元10H的內容傳送到外部RAM單元1000H; (4)外部RAM單元1000H的內容傳送到R5; (5)外部ROM單元1000H的內容傳送到R5; (6)外部RAM單元2000H的內容傳送到外部RAM單元2001H。答:(1)MOV 20H,R0(2) MOV A,R1MOV R0,A(3)MOV A,10HMOV DPTR,#1000HMOVX DPTR,A(4)MOV DPTR,#1000HMOVX A,A+DPTRMOV R5,A(5) MO

25、V DPTR,#1000HMOV A,#00HMOVC A,A+DPTRMOV R5,A(6) MOV DPTR,#2000HMOVX A,DPTRINC DPTRMOVX DPTR,A7. 設內部RAM (30H)=60H, (60H)=10H, (10H)=20H, (R1)=22H,(P1)=0AH, 分析以下程序執行后(30H)=?, (60H)= ?, (10H)= ?,(A)= ?,(B)= ?,(P2)= ?每條指令的機器碼為多少? MOV R0, 30H MOV A, R0 MOV R1, A MOV B, R1 MOV R1, P1 MOV P2, P1 MOV 10H, 9

26、0H 答: MOV R0, 30H ; (R0)= 30H , 78 30 MOV A, R0 ; (A) =60H , E6 MOV R1, A ; (R1) =60H , F9 MOV B, R1 ; (B) = 10H , 87 F0 MOV R1, P1 ; (60H) =0AH , A7 90 MOV P2, P1 ; (P2) =0AH , 85 90 A0 MOV 10H, 90H ; (10H) =90H , 75 10 90 (30H)= 60H, (60H)= 0A H, (10H)= 90H,(A)= 60H,(B)= 10H,(P2)= 0AH8. 設外部RAM (20

27、30H)=0FH, 分析以下指令執行后(DPTR)=?, (30H)=?, (2030H)=?(A)=?每條指令的機器碼為多少? MOV DPTR, 2030H MOVX A, DPTR MOV 30H, A MOV A, 3FH MOVXDPTR, A 答:MOV DPTR, 2030H ; (DPTR) = 2030H , 90 20 30 MOVX A, DPTR ; (A) =0FH , E0 MOV 30H, A ; (30H) =0FH , F5 30 MOV A, 3FH ; (A) =3FH , 74 3F MOVXDPTR, A ; (2030H)=3FH , F0 執行結果

28、為: (DPTR)=2030H, (30H)=0FH, (2030H)=3FH ,(A)=3FH。 9、編寫指令實現下列位操作。 (1)使累加器的最高2位清零; (2)屏蔽(清零)20H的高4位; (3)將E0H的低4位取反,高4位不變;(4)將P0的低2位置1。(5)將10H的內容取補后存放到20H答:(1)CLR ACC.7 CLR ACC.6(2) ANL 20H,#0FH(3) XRL E0H,#0FH(4)ORL P0,#03H(5) XRL 10H,#0FFHINC 10HMOV 20H,10H10. 在外部程序存儲器中, 從1020H單元開始依次存放09的平方值: 0、 1、 4

29、、 9、 、81, 要求依據累加器A中的值(09)來查找所對應的平方值, 試設計程序實現。 答:MOV DPTR, 1020H MOVC A, A+DPTR 11. 設(R0)=20H, (20H)=40H, (A)=58H, 則: 執行 XCH A, R0 后 (A)=?, (20H)=? 若執行 XCHD A, R0 后 (A) =?, (20H) =?答:執行 XCH A, R0 后 (A)=40H, (20H)=58H若執行 XCHD A, R0 后 (A) =50H, (20H) =48H12、試編寫程序序列,完成兩個16位數的減法:(30H)(31H)(10H)(11H) (30H

30、)(31H)。答:CLR CMOV A,31HSUBB A,11HMOV 31H,AMOV A,30HSUBB A,10HMOV 30H,A13、試編寫程序,將R0中的低4位數與R1中的高4位數合并成一個8位數,并將其存放在R0中。答:MOV A,R0ANL A,#0FHMOV B,AMOV A,R1ANL A,#0F0HORL A,BMOV R0,A14. 設計雙字節無符號數加法程序實現(R0 R1)+(R2 R3) (R4 R5), R0、 R2、 R4存放16位數的高字節, R1、 R3、 R5存放低字節,假設其和不超過16位。答:MOV A, R1 ADD A, R3 MOV R5,

31、A MOV A, R0 ADDC A, R2 MOV R4, A 15. 設計雙字節無符號數相減程序實現(R0 R1)(R2 R3) (R4 R5)。R0、 R2、 R4存放16位數的高字節, R1、 R3、 R5存放低字節, 答: MOV A, R1 CLR C SUBB A, R3 MOV R5, A MOV A, R0 SUBB A, R2 MOV R4, A 17. 設2個BCD碼數存在外部RAM的2000H和內部RAM的20H。設計程序實現2個BCD碼相加,其結果的十位和個位送到外部 RAM的2000H單元, 結果的百位值送F0位。答: MOV DPTR,#2000H MOVX A,

32、DPTR ADD A, 20H DA A MOVX DPTR, A MOV F0H,CY18. 設變量X存放在片內10H單元中, 函數Y存放在片內20H單元。 編寫程序實現如下函數功能。 80H X>0 Y= 50 X=0 FFH X<0 答: MOV A, 10H ; 取出X送A JZ COM ; 若X=0 則轉移到COM JNB ACC.7, POSI ; 若X>0則轉移到POSI MOV A, 0FFH ; 若X<0 則A=FFH SJMP COMP ; 轉分支結構出口COM: MOV A,# 50 ; X=0時的賦值SJMP COMP ; ; 轉分支結構出口PO

33、SI: MOV A, 80H ; X>0 時A=80H COMP: MOV 20H, A ; 存函數Y值 SJMP $ ; 結束19. 利用位邏輯指令, 模擬下圖硬件邏輯電路功能。試編寫程序實現。答:MOV CY,P1.0ANL CY,P1.1CPL CYMOV F0,CYMOV CY,P1.1ORL CY,P1.2ANL CY,F0CPL CY MOV F0,CY20.若(CY)=0,(P1)=10110111B,試指出執行下列程序段后,CY、P1口內容的變化情況。 MOV P1.2,C MOV C, P1.4 JBC P1.7 ,SS ORL C, P1.6SS:CPL P1.3 A

34、NL C, /P1.3 MOV P1.0,C答:(CY)=0,(P1)=0011 1010B第5章 思考題及習題參考答案1、80C51單片機匯編語言有何特點?答:優點;源程序結構緊湊、靈活,匯編成的目標程序效率高,具有占存儲空間少、運行速度快、實時性強等優點。缺點:由于它的是面向機器的語言,所以它缺乏通用性,編程復雜繁瑣,但應用相當廣泛。2、利用80C51單片機匯編語言進行程序設計的步驟如何?答:(1).需要對單片機應用系統預先完成的任務進入深入的分析,明確系統的設計任務、功能要求、技術指標。(2).要對系統的硬件資源和人工作環境進行分析和熟悉.(3).利用數學方法或數學模型來對其進行描述,從

35、而把一個實際問題轉化成由計算機進行處理的問題。(4).對各種算法進行分析比較,并進行合理的優化。3、常用的程序結構有哪幾種?特點如何?答:常用的程序結構有以下幾種: (1)順序程序結構:順序結構是按照邏輯操作順序,從某一條指令開始逐條順序進行,直到某一條指令為止;比如數據傳送與交換、查表程序和查表程序的設計等;在順序結構中沒有分支,也沒有子程序,但它是組成復雜程序的基礎和主干; (2)分支程序結構:它的主要特點是程序執行流程中必然包含有條件判斷指令,符合條件要求的和不符條件合要求的有不同的處理程序; (3)循環程序結構 :它在本質上只是分支程序中的一個特殊形式,它由循環初始化、循環體、循環控制

36、和結束部分構成;在循環次數已知情況下,采用計數循環程序,其特點是必須在初始部分設定計數的初始值,循環控制部分依據計數器的值決定循環次數;根據控制循環結束的條件,決定是否繼續循環程序的執行。 (4)子程序:它的主要特點是,在執行過程中需要由其它的程序來調用,執行完后又需要把執行流程返回到調用該子程序的主程序。4、子程序調用時,參數的傳遞方法有哪幾種?答:在80C51單片機中,子程序調用時,參數的傳遞方法由三種:(1)、利用累加器A或寄存器;(2)、利用存儲器;(3)、利用堆棧。5、什么是偽指令?常用的偽指令功能如何?答:偽指令是匯編程序能夠識別并對匯編過程進行某種控制的匯編命令。常用的偽指令有:

37、 (1)起始地址設定偽指令ORG,該指令的功能是向匯編程序說明下面緊接的程序段或數據段存放的起始地址; (2)匯編結束偽指令END,該指令的功能是匯編程序遇到END偽指令后立即結束匯編; (3)字節數據定義偽指令DB,該指令的功能是從標號指定的地址單元開始,在程序存儲器中定義字節數據; (4)字數據定義偽指令DW,該指令的功能是從標號指定的地址單元開始,在程序存儲器中定義字數據; (5)空間定義偽指令DS,該指令的功能是從標號指定的地址單元開始,在程序存儲器中保留由表達式所指定的個數存儲單元作為備用空間,并都填以零值; (6)賦值偽指令EQU,該指令的功能是將表達式的值或特定的某個匯編符號定義

38、為一個指定的符號名; (7)位地址符號定義偽指令BIT,該指令的功能是將位地址賦給指定的符號名。6:把外部RAM的2000-20FFH RAM空間置零程序如下: ORG 000H MOV R0,#00H MOV DPTR,#2000H ;空間首地址送DPTRLOOP: MOV A,#00H MOVX DPTR,A;清零 INC DPTR;DPTR加1 INC R0;字節數加1 CJNE R0,#00H,LOOP;連續清256個字節LOOP1: SJMP LOOP1 END7、錄入并調試一個排序子程序,其功能為用冒泡法將內部RAM中從50H開始的十個單字節無符號正整數,按從小到大的次序重新排列。

39、程序如下:用冒泡法進行數據排序ORG 0000HMOV R3,#50HLOOP0:MOV A,R3MOV R0,A;指針送R0MOV R7,#0AH;長度送R7CLR 00H ;標志位為0MOV A,R0LOOP1:INC R0MOV R2,ACLR CMOV 22H,R0CJNE A,22H,LOOP2;相等嗎?SETB CLOOP2:MOV A,R2JC LOOP3;小于或等于不交換SETB 00HXCH A,R0DEC R0XCH A,R0INC R0;大于交換位置LOOP3:MOV A,R0DJNZ R7,LOOP1JB 00H,LOOP0;一次循環中有交換繼續LOOP:SJMP LO

40、OP;無交換退出END8、設被加數存放在內部RAM的20H、21H單元,加數存放在22H、23H單元,若要求和存放在24H、25H中,試編寫出16位數相加的程序。答: ORG 1000H MOV R1,#21HMOV R2,#23H MOV R3,#25H CLR CLP;MOV A,R2 ADDC A,R1 MOV R3,A DEC R1 DEC R2 DEC R3 DJNE R1,#1FH,LP SJMP $ 9、編寫一段程序,把外部RAM中1000H1030H單元的內容傳送到內部RAM的30H60H單元中。答: ORG 0030H MOV R1,#49 MOV R0,#30H MOV D

41、PTR,#1000HLOOP: MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R1,LOOP SJMP $ END 10、編寫程序,實現雙字節無符號數加法運算,要求(R1R0)+(R7R6)(61H60H)。答: MOV A,R0 ADD A,R6 MOV 60H,A MOV A,R1 ADDC A,R7 MOV 61H,A SJMP $11、用R0和R1作數據指針,R0指向第一個加數,并兼作“和”的指針,R1指向另一個加數,字節存放到R2中作計數初值。答:主程序:JAFA: MOV R0,#20H ;指向加數最低字節MOV R1,#29H ;指向另一加數

42、最低字節MOV R2,#04H ;字節數作計數值ACALL JASUB ;調用加法子程序AJMP $ RTE 多字節加法子程序:JASUB: CLR CJASUB1: MOV A,R0 ;取出加數的一個字節(無符號數加數)ADDC A,R1 ;加上另一數的一個字節MOV R0,A ;保存和數INC R0 ;指向加數的高位INC R1 ;指向另一加數的高位DJNZ R2,JASUB1 ;全部加完了嗎?RET12、在內部RAM的21H單元開始存有一組單字節不帶符號數,數據長度為30H,要求找出最大數存入BIG單元。答:START: MOV R7,30H DEC R7 MOV R0,#21HMOV

43、A,R0 LOOP:INC R0 CLR C SUBB A,R0 JNC NEXT MOV A,R0NEXT:DJNZ R7,LOOP MOV BIG, A SJMP $ END13、求雙字節補碼程序 設雙字節數放在內部RAM的30H和31H單元(高字節在低地址),將其取補后存入40H(存放高字節)和41H(存放低字節)單元答:START:MOV A,31H CPL A ADD A,#01H MOV 41H,A MOV A,30H CPL A JNC DONE ADD A,#01HDONE:MOV 30H,A SJMP $14、編程統計累加器A中“1”的個數。答: MOV R1,#0 PUSH

44、 ACCLOOP1:JZ DONE CLR C RLC A JNC LOOP1 INC R1 SJMP LOOP1DONE:POP ACC SJMP $ END15、編程序實現1+2+3+100?答:匯編代碼如下: H_Byte EQU R4 ;保存結果,高8位L_Byte EQU R5 ;保存結果,低8位Max_Adder EQU 100 ;最大的加數 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#1 ;加數 MOV R4,#0 MOV R5,#0 START: MOV A,#Max_Adder CLR CY SUBB A,R2 JC RESULT

45、MOV A,R2 ADD A,L_ByteMOV L_Byte,A ;保存低位MOV A,H_ByteADDC A,#0MOV H_Byte,A ;保存高位 INC R2 JMP START RESULT: SJMP $ ;只用于調試 END C語言代碼如下: #include "at89x51.h" /由于這里只是計算結果,所以這行代碼可以去掉 void main(void) unsigned char i=1; unsigned int result=0; for(i=1;i<=100;i+) result+=i; while(1); /這里用于調試 第6章思考題

46、及習題參考答案1. 什么是中斷、中斷源、中斷服務程序、中斷程序入口地址?答: 當有中斷源申請中斷,并允許響應時,處理暫停當前執行的程序轉去執行中斷服務子程序的過程叫中斷。導致中斷產生的事件和原因統稱為中斷源。處理暫停主程序后轉去執行的,用來處理中斷事件的程序成為中斷服務子程序。中斷程序入口地址是指的中斷服務子程序的第一條指令所在的地址。2. 中斷優先權有什么作用,中斷嵌套是什么?答:中斷優先權可以用來解決多個中斷源同時申請中斷時,處理器響應中斷的優先順序。中斷嵌套是指處理器正在執行中斷服務子程序時,被新的中斷打斷,轉去執行新的中斷而出現的一個中斷嵌套到另一個中斷中的現象。3. 保護斷點是保護什

47、么,怎么保護的,中斷返回后的下一步到到哪里去? 答:保護斷點是保護主程序暫停時的下一條將要執行的指令的地址。保護方法是將下一條指令的地址值入棧。中斷返回后,斷點地址從堆棧中彈出到程序計數器或指令指針寄存器,繼續執行主程序。4.保護現場有什么作用,需要保護哪些內容,怎么保護的?5. 80C51單片機有_個中斷源,分別是_、 _、 _、 _和_。答: 5,T0,T1,串口6. 80C51單片機中斷有_個優先權等級,最多可以實現_級嵌套。 答:2,27. 80C51中斷嵌套的原則是什么?答: 80C51中斷嵌套的原則是:高級中斷可以打斷低級中斷,低級中斷不能打斷高級中斷,同級中斷不可以打斷同級中斷。8. 80C51響應中斷的條件有哪些? 答: 80C51響應中斷的條件有: 中斷申請的對應中斷使能控制位有效;全局中斷使能控制位有效;中斷申請時沒有更高級別的中斷服務程序正在執行;9. 80C51的各個中斷源是如何撤銷中斷申請的?答: 80C51各中斷源的中斷申請撤銷方法是:定時

溫馨提示

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

評論

0/150

提交評論