單片機及微機原理課后習題答案.doc
《單片機及微機原理課后習題答案.doc》由會員分享,可在線閱讀,更多相關(guān)《單片機及微機原理課后習題答案.doc(48頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第1章 思考題及習題參考答案 1寫出下列二進制數(shù)的原碼、反碼和補碼(設(shè)字長為8位)。 (1)001011 (2)100110 (3)-001011 (4)-111111 答: (1)原碼:00001011 反碼:00001011 補碼:00001011 (2)原碼:00100110 反碼:00100110 補碼:00100110 (3)原碼:10001011 反碼:11110100 補碼:11110101 (4)原碼:10111111 反碼:11000000 補碼:11000001 2已知X和Y,試計算下列各題的[X+Y]補和[X-Y]補(設(shè)字長為8
2、位)。 (1) X=1011 Y=0011 (2) X=1011 Y=0111 (3) X=1000 Y=1100 答: (1)X補碼=00001011 Y補碼=00000011 [–Y]補碼=11111101 [X+Y]補=00001110 [X-Y]補=00001000 (2)X補碼=00001011 Y補碼=00000111 [–Y]補碼=11111001 [X+Y]補=00010010 [X-Y]補=00000100 (3)X補碼=00001000 Y補碼=00001100 [–Y]補碼=11110100 [X+Y]補=0001010
3、0 [X-Y]補=11111100 3 微型計算機由那幾部分構(gòu)成? 答:微型計算機由微處理器、存儲器和I/O接口電路構(gòu)成。各部分通過地址總線(AB)、數(shù)據(jù)總線(DB)和控制總線(CB)相連。 4 8086的尋址范圍有多大?其物理地址是如何形成? 答:8086有20根地址總線,它可以直接尋址的存儲器單元數(shù)為1M字節(jié),其地址區(qū)域為00000H—FFFFFH。 物理地址是由段地址與偏移地址共同決定的,物理地址=段地址16+偏移地址其中段地址通常來自于段寄存器CS ,物理地址來自于IP。 5 什么叫單片機?它有何特點? 答:單片機就是在一塊硅片上集成了CPU、RAM、ROM、定
4、時器/計數(shù)器和多種I/O口(如并行、串行及A/D變換器等)的一個完整的數(shù)字處理系統(tǒng)。單片機主要特點有:品種多樣,型號繁多;存儲容量大;頻率高,速度快;控制功能強,集成度高;功耗低;配套應(yīng)用軟件多。 第2章 思考題及習題參考答案: 2.1.說明ROM、EPROM、EEPROM和FLASH之間的主要區(qū)別 解:ROM為只讀存儲器,在一般情況下只能讀出所存信息,而不能重新寫入。信息的寫入是通過工廠的制造環(huán)節(jié)或采用特殊的編程方法進行的,一旦寫入,就能長期
5、保存。EPROM芯片一般允許用戶多次編程和擦除。擦除時,通過向芯片窗口照射紫外光的方法來進行。 EEPROM,也稱E2PROM。該類芯片允許用戶多次編程和擦除。擦除時,可采用加電方法在線進行。FLASH是一種新型的大容量、速度快、電可擦除可編程只讀存儲器。 2.2.EPROM、PROM、動態(tài)RAM、靜態(tài)RAM等存儲器中,哪幾類是可以隨時讀寫的? 解:動態(tài)RAM、靜態(tài)RAM這幾類是可以隨時讀寫的。 2.3 某ROM芯片中有12根地址輸入端和8個數(shù)據(jù)輸出端,該芯片的存儲容量是多少位? 解:芯片的存儲容量是4K*8位。 2.4.說明動態(tài)RAM和靜態(tài)RAM的主要區(qū)別,使用時應(yīng)如
6、何選用? 解:靜態(tài)(static)RAM,即SRAM。它以觸發(fā)器為基本存儲單元,所以只要不掉電,其所存信息就不會丟失。該類芯片的集成度不如動態(tài)RAM,功耗也比動態(tài)RAM高,但它的速度比動態(tài)RAM快,也不需要刷新電路。在構(gòu)成小容量的存儲系統(tǒng)時一般選用SRAM。在微型計算機中普遍用SRAM構(gòu)成高速緩沖存儲器。 動態(tài)(Dynamic)RAM,即DRAM。一般用MOS型半導體存儲器件構(gòu)成,最簡單的存儲形式以單個M0S管為基本單元,以極間的分布電容是否持有電荷作為信息的存儲手段,其結(jié)構(gòu)簡單,集成度高。但是,如果不及時進行刷新,極間電容中的電荷會在很短時間內(nèi)自然泄漏,致使信息丟失。所以,必須為它配備
7、專門的刷新電路。動態(tài)RAM芯片的集成度高、價格低廉,所以多用在存儲容量較大的系統(tǒng)中。目前,微型計算機中的主存幾乎都是使用動態(tài)RAM。 2.5.說明NOR FLASH與NAND FLASH的主要區(qū)別,使用時應(yīng)如何選用? 解:NOR Flash具有以下特點: (1) 程序和數(shù)據(jù)可存放在同一芯片上,擁有獨立的數(shù)據(jù)總線和地址總線,能快速隨機讀取,允許系統(tǒng)直接從Flash中讀取代碼執(zhí)行,而無需先將代碼下載至RAM中再執(zhí)行; (2) 可以單字節(jié)或單字編程,但不能單字節(jié)擦除,必須以塊為單位或?qū)φ瑘?zhí)行擦除操作,在對存儲器進行重新編程之前需要對塊或整片進行預(yù)編程和擦除操作。 但是NOR Fla
8、sh的擦除和編程速度較慢,塊尺寸又較大,因此擦除和編程操作所花費的時間很長,在純數(shù)據(jù)存儲和文件存儲的應(yīng)用中,NOR技術(shù)顯得力不從心。 NAND Flash具有以下特點: (1) 以頁為單位進行讀和編程操作,1頁為256或512B(字節(jié));以塊為單位進行擦除操作,1塊為4K、8K或16KB。具有快編程和快擦除的功能,其塊擦除時間是2ms;而NOR技術(shù)的塊擦除時間達到幾百ms。(2) 數(shù)據(jù)、地址采用同一總線,實現(xiàn)串行讀取。隨機讀取速度慢且不能按字節(jié)隨機編程。(3) 芯片尺寸小,引腳少,是位成本(bit cost)最低的固態(tài)存儲器,將很快突破每兆字節(jié)1美元的價格限制。(4) 芯片包含有失效塊,其
9、數(shù)目最大可達到3~35塊(取決于存儲器密度)。失效塊不會影響有效塊的性能,但設(shè)計者需要將失效塊在地址映射表中屏蔽起來。 NOR Flash具有可靠性高、隨機讀取速度快的優(yōu)勢,在擦除和編程操作較少而直接執(zhí)行代碼的場合,尤其是純代碼存儲的應(yīng)用中廣泛使用,如PC的BIOS固件、移動電話、硬盤驅(qū)動器的控制存儲器等。 NAND Flash結(jié)構(gòu)的閃速存儲器適合于純數(shù)據(jù)存儲和文件存儲,主要作為SmartMedia卡、CompactFlash卡、PCMCIA ATA卡、固態(tài)盤的存儲介質(zhì),并正成為閃速磁盤技術(shù)的核心。 2.6.現(xiàn)有2K8位的RAM芯片若干片,若用線選法組成存儲器,有效的尋址范圍最大
10、是多少KB?若用3-8譯碼器來產(chǎn)生片選信號,則有效的尋址范圍最大又是多少?若要將尋址范圍擴展到64KB,應(yīng)選用什么樣的譯碼器來產(chǎn)生片選信號? 解:以8086為例,8086有20條地址線,用11條地址線尋址一片2K8位的RAM,余下的9條地址線做線選法的線,故可以并聯(lián)9個芯片,故尋址最大范圍是20KB,若用3-8譯碼器來產(chǎn)生片選信號,9條地址線可以控制3個3-8譯碼器這樣就可以控制24個芯片最大范圍是50KB. 若要將尋址范圍擴展到64KB可選用4-16地址譯碼器來產(chǎn)生片選信號。 2.7.什么是地址重疊區(qū)?它對存儲器擴展有什么影響? 解:基本地址和前面全譯碼連接的地址范圍是相同的,但兩
11、者還是有區(qū)別的。區(qū)別在于全譯碼連接時各芯片的地址是唯一的,而部分譯碼連接時各芯片地址不是唯一的,也就是可以由若干個地址都選中同一芯片的同一單元,既所謂的地址重疊區(qū)。由于存在的地址重疊,影響了地址區(qū)的有效使用,也限制了存儲器的擴展。因此,在選用部分譯碼時,也要盡可能多選一些高位地址線來作為譯碼器的輸入。 2.8如圖2-22若用1K8位片子來擴展3K8位RAM,試核算各片的地址范圍為多少? 圖2-22 1K8位片子擴展的3K8位RAM系統(tǒng) 解:A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0
12、 地址 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:A3FFH A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址 G
13、1 A B C 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 片2:B000H 1 0 1 1 0 0 11 1 1 1 1 1 1 1 1 片2:B3FFH A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址 G1
14、 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-B7FFH 2.9. 現(xiàn)有8K8位RAM多片,1片3-8譯碼器,
15、要構(gòu)成容量為16K8位的存儲器,請用線譯碼、部分譯碼、全譯碼3種方式分別設(shè)計,畫出連接圖,并指出尋址范圍。 解: 線譯碼法: 尋址范圍:2000H~5FFFH 部分譯碼尋址范圍:0000H~3FFFH 全譯碼:尋址范圍:0000H~FFFFH 2.10.如何檢查擴展的RAM工作是否正常?試編一個簡單的RAM檢查程序,要求此程序能記錄有多少個RAM單元工作有錯?且能記錄出錯的單元地址。 解: TEST_CONST EQU 5AH
16、 TEST_RAM EQU 03H ORG 0000H LJMP INITIAL ORG 0050H INITIAL: MOV R0,#253 MOV R1,#3H TEST_ALL_RAM: MOV R2,#0FFH TEST_ONE_RAM: MOV A, R2 MOV @R1,A CLR A MOV A,@R1 CJNE A,2H, ERROR_DISPLAY DJNZ R2, TEST_ONE_RAM INC R1 DJNZ R0, TEST_ALL_RAM OK_DISPLAY: MOV P1, #11111110B W
17、AIT1: SJMP WAIT1 ERROR_DISPLAY: MOV A, R1 MOV P1,A WAIT2: SJMP WAIT2 END 第3章 思考題及習題參考答案 1. 80C51單片機的P0~P3口在通用I/O口時操作要注意哪些?P0~P3口不做通用I/O口時是什么功能?在使用上有何特點? P0~P3驅(qū)動能力如何? 答:(1)作為通用I/O口時,P0~P3都是準雙向口,輸入引腳信息時都必須先向其鎖存器寫“1”,作為輸出口時P0口需結(jié)上拉
18、電阻。 (2)P0可以作為地址/數(shù)據(jù)總線;P2口可以作為地址線的高8位;P3口是雙功能口,每條口線還具有不同的第二功能。 (3)P0口的驅(qū)動能力為8個TTL負載,而其它口僅可驅(qū)動4個TTL負載。 2、MCS-51單片機運行出錯或程序進入死循環(huán),如何擺脫困境? 答:通過復(fù)位電路復(fù)位 3、單片機的復(fù)位(RST)操作有幾種方法,復(fù)位功能的主要作用是什么? 答:單片機的復(fù)位操作方式有:1、上電復(fù)位;2、手動復(fù)位。 復(fù)位功能的主要作用是:復(fù)位時,PC初始化為0000H,使MCS-51單片機從0000H開始執(zhí)行程 4、簡述程序狀態(tài)寄存器PSW寄存器中各位的含義。 答:程序狀態(tài)字寄存器
19、PSW,8位。其各位的意義為: CY:進位、借位標志。有進位、借位時CY=1,否則CY=0; AC:輔助進位、借位標志(高半字節(jié)與低半字節(jié)間的進位或借位); F0:用戶標志位,由用戶自己定義; RS1、RS0:當前工作寄存器組選擇位,共有四組:00、01、10、11; OV:溢出標志位。有溢出時OV=1,否則OV=0; P:奇偶標志位。存于累加器ACC中的運算結(jié)果有奇數(shù)個1時P=1,否則P=0. 5、80C51單片機的當前工作寄存器組如何選擇? 答:由特殊功能寄存器中的程序狀態(tài)寄存器PSW的RS1、RS0來決定,當RS1、RS0為00時,選擇0組;為01時,選擇1組;為10時選
20、擇2組,為11時選擇3組。 6. 80C51單片機的控制總線信號有哪些?各信號的作用如何? 答:80C51單片機的控制總線信號有以下4個,各信號的作用為: RST/VPD: 復(fù)位信號輸入引腳/備用電源輸入引腳; ALE/PROG: 地址鎖存允許信號輸出引腳/編程脈沖輸入引腳; EA/Vpp : 內(nèi)外存儲器選擇引腳/片內(nèi)EPROM(或FlashROM)編程電壓輸入引腳; PSEN:外部程序存儲器選通信號輸出引腳。 7、8051單片機中EA引腳的作用是什么? 答:訪問內(nèi)部或外部程序存儲器的選擇端當EA接高電平的時候程序從內(nèi)部ROM開始執(zhí)行,當EA為低電平的時候,從外部ROM開始執(zhí)
21、行 8、 程序計數(shù)器PC的作用是什么? 答:程序計數(shù)器PC是一個16位的計數(shù)器,他總是存放著下一個要取的指令的16位存儲單元地址。用來存放下一條指令的地址用來存放下一條指令的地址的。當執(zhí)行一條指令時,首先需要根據(jù)PC中存放的指令地址,將指令由內(nèi)存取到指令寄存器中,此過程稱為“取指令”。與此同時,PC中的地址或自動加1或由轉(zhuǎn)移指針給出下一條指今的地址。此后經(jīng)過分析指令,執(zhí)行指令。完成第一條指令的執(zhí)行,而后根據(jù)PC取出第二條指令的地址,如此循環(huán),執(zhí)行每一條指令 9、堆棧有哪些功能?堆棧指示器( SP)的作用是什么?在程序設(shè)計時,為什么要對 SP重新賦值? 答:堆棧在中端過程中用來保護現(xiàn)場數(shù)
22、據(jù),復(fù)位后SP=7H,而堆棧一般設(shè)置在通用ROM區(qū)(30H-7FH),在系統(tǒng)初始化時候要從新設(shè)置。 10、內(nèi)部 RAM低 128單元劃分為哪 3個主要部分?說明各部分的使用特點。 答:80C51內(nèi)部128B的數(shù)據(jù)RAM區(qū),包括有工作寄存器組區(qū)、可直接位尋址區(qū)和數(shù)據(jù)緩沖區(qū)。各區(qū)域的特性如下: (1) 00H~1FH為工作寄存器組區(qū),共分4組,每組占用8個RAM字節(jié)單元,每個單元作為一個工作寄存器,每組的8個單元分別定義為8個工作寄存器R0~R7。當前工作寄存器組的選擇是由程序狀態(tài)字PSW的RS1、RS0兩位來確定。如果實際應(yīng)用中并不需要使用工作寄存器或不需要使用4組工作寄存器,不使用的
23、工作寄存器組的區(qū)域仍然可作為一般數(shù)據(jù)緩沖區(qū)使用,用直接尋址或用Ri的寄存器間接尋址來訪問。 (2) 20H~2FH為可位尋址區(qū)域,這16個字節(jié)的每一位都有一個地址,編址為00H~7FH。 當然,位尋址區(qū)也可以用作字節(jié)尋址的一般數(shù)據(jù)緩沖區(qū)使用。 (3)30H~7FH為堆棧、數(shù)據(jù)緩沖區(qū)。 11、簡述MCS-51單片機存儲區(qū)的劃分。 答:MCS-51單片機的存儲器從物理結(jié)構(gòu)上分為:片內(nèi)和片外數(shù)據(jù)存儲器,片內(nèi)和片外程序存儲器。 2)從邏輯上分別可劃分為:片內(nèi)統(tǒng)一尋址的64K程序存儲器空間(0000H---FFFFH);64KB的片外數(shù)據(jù)存儲器空間(0000H---FFFFH);256B的片
24、內(nèi)數(shù)據(jù)存儲器空間(00H---FFH)。 12、MCS-51基本型單片機的中斷入口地址各為多少。 答:外部中斷0 中斷入口地址 0003H 定時/計數(shù)器0 中斷入口地址 000BH 外部中斷1 中斷入口地址 0013H 定時/計數(shù)器1 中斷入口地址 001BH 串行接口 中斷入口地址 0023H 13、什么是指令周期、機器周期和時鐘周期? 答:指令周期:指令的執(zhí)行時間;機器周期:CPU完成一個最簡單的指令所需要的時間;時鐘周期:晶振信號周期就是時鐘周期。 14、已知一MCS51單片機系統(tǒng)使用6MHZ的外部晶體振蕩器,計算:該單片機系統(tǒng)
25、的狀態(tài)周期與機器周期各為多少? 解:由于晶振為6MHz,所以機器周期為2us,因為一個機器周期由6個狀態(tài)周期組成,所以狀態(tài)周期1/3us 15、8031單片機需要外接程序存儲器,實際上它還有多少條I/O線可以用?當使用外部存儲器時,還剩下多少條I/O線可用? 答:8031系統(tǒng)必須外接程序促成器,原則上說,P0和P2口要用作數(shù)據(jù)和地址總線,所以只有P1和P3口可用作I/O口,共16條I/O線。在使用外部存儲器時,除了占用P0和P2口外,還需要用P3口RD(P3.7)和WR(P3.6)兩條控制線,所以這種情況下就只剩下14條I/O線可用了。 第4章 思考題及習題參考答案 1. 尋址
26、方式是什么? 答:尋址方式是尋找操作數(shù)或操作數(shù)地址的方式。 2. 89C51指令系統(tǒng)有哪幾種尋址方式? 答:89C51的尋址方式有七種。即:寄存器尋址、直接尋址、寄存器間接尋址、立即尋址、基址寄存器加變址寄存器變址尋址、相對尋址和位尋址。 3、訪問特殊功能寄存器SFR可以采用哪些尋址方式? 答:直接尋址和位尋址方式。 4、訪問RAM單元可以采用哪些尋址方式?訪問外部RAM單元有哪些指令? 答:直接尋址、寄存器間接尋址和位尋址方式。 訪問外部RAM單元的指令有4條: MOVX A,@DPTR MOVX A,@Ri MOVX @DP
27、TR,A MOVX @Ri,A 5、訪問外部程序存儲器可以采用哪些尋址方式?訪問外部程序存儲器有哪些指令? 答:立即尋址、變址尋址和相對尋址方式。 訪問外部程序存儲器的指令有2條 MOVC A,@A+DPTR MOVC A,@A+PC 6、試寫出完成以下每種操作的指令序列。 (1)將R0的內(nèi)容傳送到片內(nèi)RAM 20H; (2)將R1的內(nèi)容傳送到R0; (3)內(nèi)部RAM單元10H的內(nèi)容傳送到外部RAM單元1000H; (4)外部RAM單元1000H的內(nèi)容傳送到R5; (5)外部ROM單元1000
28、H的內(nèi)容傳送到R5; (6)外部RAM單元2000H的內(nèi)容傳送到外部RAM單元2001H。 答:(1)MOV 20H,R0 (2) MOV A,R1 MOV R0,A (3)MOV A,10H MOV DPTR,#1000H MOVX @DPTR,A (4)MOV DPTR,#1000H MOVX A,@A+DPTR MOV R5,A (5) MOV DPTR,#1000H MOV A,#00H MOVC A,@A+DPTR MOV R5,A (6) MOV DPTR,#2000H MOVX A,@DPTR INC DPTR MOVX @DPTR,A
29、 7. 設(shè)內(nèi)部RAM (30H)=60H, (60H)=10H, (10H)=20H, (R1)=22H,(P1)=0AH, 分析以下程序執(zhí)行后(30H)=?, (60H)= ?, (10H)= ?,(A)= ?,(B)= ?,(P2)= ?每條指令的機器碼為多少? MOV R0, #30H MOV A, @R0 MOV R1, A MOV B, @R1 MOV @R1, P1
30、 MOV P2, P1 MOV 10H, #90H 答: 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,
31、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)= 0AH 8. 設(shè)外部RAM (2030H)=0FH, 分析以下指令執(zhí)行后(DPTR)=?, (30H)=?, (2030H)=?(A)=?每條指令的機
32、器碼為多少? MOV DPTR, #2030H MOVX A, @DPTR MOV 30H, A MOV A, #3FH MOVX@DPTR, A 答: MOV DPTR, #2030H ; (DPTR) = 2030H , 90 20 30 MOVX A, @DPTR ; (A) =0FH , E0 MO
33、V 30H, A ; (30H) =0FH , F5 30 MOV A, #3FH ; (A) =3FH , 74 3F MOVX@DPTR, A ; (2030H)=3FH , F0 執(zhí)行結(jié)果為: (DPTR)=2030H, (30H)=0FH, (2030H)=3FH ,(A)=3FH。 9、編寫指令實現(xiàn)下列位操作。 (1)使累加器的最高2位清零; (2)屏蔽(清零)20H的高4位; (3)將
34、E0H的低4位取反,高4位不變; (4)將P0的低2位置1。 (5)將10H的內(nèi)容取補后存放到20H 答:(1)CLR ACC.7 CLR ACC.6 (2) ANL 20H,#0FH (3) XRL E0H,#0FH (4)ORL P0,#03H (5) XRL 10H,#0FFH INC 10H MOV 20H,10H 10. 在外部程序存儲器中, 從1020H單元開始依次存放0~9的平方值: 0、 1、 4、 9、 …、81, 要求依據(jù)累加器A中的值(0~9)來查找所對應(yīng)的平方值, 試設(shè)計程序?qū)崿F(xiàn)。 答:MOV DPTR, #102
35、0H MOVC A, @A+DPTR 11. 設(shè)(R0)=20H, (20H)=40H, (A)=58H, 則: 執(zhí)行 XCH A, @R0 后 (A)=?, (20H)=? 若執(zhí)行 XCHD A, @R0 后 (A) =?, (20H) =? 答:執(zhí)行 XCH A, @R0 后 (A)=40H, (20H)=58H 若執(zhí)行 XCHD A, @R0 后 (A) =50H, (20H) =48H 12、試編寫程序序列,完成兩個16位數(shù)的減法:(30H)(31H)-(10H)(11H) →(30H)(31H)。
36、答:CLR C MOV A,31H SUBB A,11H MOV 31H,A MOV A,30H SUBB A,10H MOV 30H,A 13、試編寫程序,將R0中的低4位數(shù)與R1中的高4位數(shù)合并成一個8位數(shù),并將其存放在R0中。 答:MOV A,R0 ANL A,#0FH MOV B,A MOV A,R1 ANL A,#0F0H ORL A,B MOV R0,A 14. 設(shè)計雙字節(jié)無符號數(shù)加法程序?qū)崿F(xiàn)(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位數(shù)的高字節(jié), R1、 R3、 R5存放低字節(jié),假設(shè)其和不超過16位。
37、 答:MOV A, R1 ADD A, R3 MOV R5, A MOV A, R0 ADDC A, R2 MOV R4, A 15. 設(shè)計雙字節(jié)無符號數(shù)相減程序?qū)崿F(xiàn)(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、 R4存放16位數(shù)的高字節(jié), R1、 R3、 R5存放低字節(jié), 答: MOV A, R1 CLR C SUBB A, R3 MOV R5,
38、A MOV A, R0 SUBB A, R2 MOV R4, A 17. 設(shè)2個BCD碼數(shù)存在外部RAM的2000H和內(nèi)部RAM的20H。設(shè)計程序?qū)崿F(xiàn)2個BCD碼相加,其結(jié)果的十位和個位送到外部 RAM的2000H單元, 結(jié)果的百位值送F0位。 答: MOV DPTR,#2000H MOVX A,@DPTR ADD A, 20H DA A MOVX @DPTR, A MOV F0H,C
39、Y 18. 設(shè)變量X存放在片內(nèi)10H單元中, 函數(shù)Y存放在片內(nèi)20H單元。 編寫程序?qū)崿F(xiàn)如下函數(shù)功能。 80H X>0 Y= 50 X=0 FFH X<0 答: MOV A, 10H ; 取出X送A JZ COM ; 若X=0 則轉(zhuǎn)移到COM JNB ACC.7
40、, POSI ; 若X>0則轉(zhuǎn)移到POSI MOV A, #0FFH ; 若X<0 則A=FFH SJMP COMP ; 轉(zhuǎn)分支結(jié)構(gòu)出口 COM: MOV A,# 50 ; X=0時的賦值 SJMP COMP ; ; 轉(zhuǎn)分支結(jié)構(gòu)出口 POSI: MOV A, #80H ; X>0 時A=80H COMP: MOV 20H, A
41、 ; 存函數(shù)Y值 SJMP $ ; 結(jié)束 19. 利用位邏輯指令, 模擬下圖硬件邏輯電路功能。試編寫程序?qū)崿F(xiàn)。 答:MOV CY,P1.0 ANL CY,P1.1 CPL CY MOV F0,CY MOV CY,P1.1 ORL CY,P1.2 ANL CY,F0 CPL CY MOV F0,CY 20.若(CY)=0,(P1)=10110111B,試指出執(zhí)行下列程序段后,CY、P1口內(nèi)容的變化情況。 MOV P1.2,C MOV C, P1
42、.4 JBC P1.7 ,SS ORL C, P1.6 SS:CPL P1.3 ANL C, /P1.3 MOV P1.0,C 答:(CY)=0,(P1)=0011 1010B 第5章 思考題及習題參考答案 1、80C51單片機匯編語言有何特點? 答:優(yōu)點;源程序結(jié)構(gòu)緊湊、靈活,匯編成的目標程序效率高,具有占存儲空間少、運行速度快、實時性強等優(yōu)點。 缺點:由于它的是面向機器的語言,所以它缺乏通用性,編程復(fù)雜繁瑣,但應(yīng)用相當廣泛。 2、利用80C
43、51單片機匯編語言進行程序設(shè)計的步驟如何? 答:(1).需要對單片機應(yīng)用系統(tǒng)預(yù)先完成的任務(wù)進入深入的分析,明確系統(tǒng)的設(shè)計任務(wù)、功能要求、技術(shù)指標。 (2).要對系統(tǒng)的硬件資源和人工作環(huán)境進行分析和熟悉. (3).利用數(shù)學方法或數(shù)學模型來對其進行描述,從而把一個實際問題轉(zhuǎn)化成由計算機進行處理的問題。 (4).對各種算法進行分析比較,并進行合理的優(yōu)化。 3、常用的程序結(jié)構(gòu)有哪幾種?特點如何? 答:常用的程序結(jié)構(gòu)有以下幾種: (1)順序程序結(jié)構(gòu):順序結(jié)構(gòu)是按照邏輯操作順序,從某一條指令開始逐條順序進行,直到某一條指令為止;比如數(shù)據(jù)傳送與交換、查表程序和查表程序的設(shè)計等;在順序
44、結(jié)構(gòu)中沒有分支,也沒有子程序,但它是組成復(fù)雜程序的基礎(chǔ)和主干; (2)分支程序結(jié)構(gòu):它的主要特點是程序執(zhí)行流程中必然包含有條件判斷指令,符合條件要求的和不符條件合要求的有不同的處理程序; (3)循環(huán)程序結(jié)構(gòu) :它在本質(zhì)上只是分支程序中的一個特殊形式,它由循環(huán)初始化、循環(huán)體、循環(huán)控制和結(jié)束部分構(gòu)成;在循環(huán)次數(shù)已知情況下,采用計數(shù)循環(huán)程序,其特點是必須在初始部分設(shè)定計數(shù)的初始值,循環(huán)控制部分依據(jù)計數(shù)器的值決定循環(huán)次數(shù);根據(jù)控制循環(huán)結(jié)束的條件,決定是否繼續(xù)循環(huán)程序的執(zhí)行。 (4)子程序:它的主要特點是,在執(zhí)行過程中需要由其它的程序來調(diào)用,執(zhí)行完后又需要把執(zhí)行流程返回到調(diào)用該子
45、程序的主程序。 4、子程序調(diào)用時,參數(shù)的傳遞方法有哪幾種? 答:在80C51單片機中,子程序調(diào)用時,參數(shù)的傳遞方法由三種: (1)、利用累加器A或寄存器; (2)、利用存儲器; (3)、利用堆棧。 5、什么是偽指令?常用的偽指令功能如何? 答:偽指令是匯編程序能夠識別并對匯編過程進行某種控制的匯編命令。常用的偽指令有: (1)起始地址設(shè)定偽指令ORG,該指令的功能是向匯編程序說明下面緊接的程序段或數(shù)據(jù)段存放的起始地址; (2)匯編結(jié)束偽指令END,該指令的功能是匯編程序遇到END偽指令后立即結(jié)束匯編; (3)字節(jié)數(shù)據(jù)定義偽指令DB,該指令的功
46、能是從標號指定的地址單元開始,在程序存儲器中定義字節(jié)數(shù)據(jù); (4)字數(shù)據(jù)定義偽指令DW,該指令的功能是從標號指定的地址單元開始,在程序存儲器中定義字數(shù)據(jù); (5)空間定義偽指令DS,該指令的功能是從標號指定的地址單元開始,在程序存儲器中保留由表達式所指定的個數(shù)存儲單元作為備用空間,并都填以零值; (6)賦值偽指令EQU,該指令的功能是將表達式的值或特定的某個匯編符號定義為一個指定的符號名; (7)位地址符號定義偽指令BIT,該指令的功能是將位地址賦給指定的符號名。 6:把外部RAM的2000-20FFH RAM空間置零 程序如下:
47、 ORG 000H MOV R0,#00H MOV DPTR,#2000H ;空間首地址送DPTR LOOP: MOV A,#00H MOVX @DPTR,A ;清零 INC DPTR ;DPTR加1 INC R0 ;字節(jié)數(shù)加1 CJNE R0,#00H,LOOP ;連續(xù)清256個字節(jié) LOOP1: SJMP LOOP1 END 7、錄入并調(diào)試一個排序子程序,其功能為用冒泡法將內(nèi)部RAM中從50H開始的十個單字節(jié)無符號正整數(shù),按從小到大的次序重新排列。 程序如下:
48、用冒泡法進行數(shù)據(jù)排序 ORG 0000H MOV R3,#50H LOOP0: MOV A,R3 MOV R0,A ;指針送R0 MOV R7,#0AH ;長度送R7 CLR 00H ;標志位為0 MOV A,@R0 LOOP1: INC R0 MOV R2,A CLR C MOV 22H,@R0 CJNE A,22H,LOOP2 ;相等嗎? SETB C LOOP2: MOV A,R2 JC LOOP3 ;小于或等于不交換 SETB 00H XCH A,@R0 DEC R0 XCH A,@R0
49、 INC R0 ;大于交換位置 LOOP3:MOV A,@R0 DJNZ R7,LOOP1 JB 00H,LOOP0 ;一次循環(huán)中有交換繼續(xù) LOOP: SJMP LOOP ;無交換退出 END 8、設(shè)被加數(shù)存放在內(nèi)部RAM的20H、21H單元,加數(shù)存放在22H、23H單元,若要求和存放在24H、25H中,試編寫出16位數(shù)相加的程序。 答: ORG 1000H MOV R1,#21H MOV R2,#23H MOV R3,#25H
50、CLR C LP;MOV A,@R2 ADDC A,@R1 MOV @R3,A DEC R1 DEC R2 DEC R3 DJNE R1,#1FH,LP SJMP $ 9、編寫一段程序,把外部RAM中1000H~1030H單元的內(nèi)容傳送到內(nèi)部RAM的30H~60H單元中。 答: ORG 0030H MO
51、V R1,#49 MOV R0,#30H MOV DPTR,#1000H LOOP: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R1,LOOP SJMP $ END 10、編寫程序,實現(xiàn)雙字節(jié)無符號數(shù)加法運算,要求(R1R0)+(R7R6)→(61H60H)。 答: MOV A,R0 ADD A,R6 MOV 60H,A MOV A,R1 ADDC A,R7
52、MOV 61H,A SJMP $ 11、用R0和R1作數(shù)據(jù)指針,R0指向第一個加數(shù),并兼作“和”的指針,R1指向另一個加數(shù),字節(jié)存放到R2中作計數(shù)初值。 答: 主程序: JAFA: MOV R0,#20H ;指向加數(shù)最低字節(jié) MOV R1,#29H ;指向另一加數(shù)最低字節(jié) MOV R2,#04H ;字節(jié)數(shù)作計數(shù)值 ACALL JASUB ;調(diào)用加法子程序 AJMP $
53、 RTE 多字節(jié)加法子程序: JASUB: CLR C JASUB1: MOV A,@R0 ;取出加數(shù)的一個字節(jié)(4B無符號數(shù)加數(shù)) ADDC A,@R1 ;加上另一數(shù)的一個字節(jié) MOV @R0,A ;保存和數(shù) INC R0 ;指向加數(shù)的高位 INC R1 ;指向另一加數(shù)的高位 DJNZ R2,JASUB1 ;全部加完了嗎? RET 12、在內(nèi)部RAM的21H單元開始存有一組單字節(jié)不帶符號數(shù),數(shù)據(jù)長度為30H,
54、要求找出最大數(shù)存入BIG單元。 答: START: MOV R7,30H DEC R7 MOV R0,#21H MOV A,@R0 LOOP:INC R0 CLR C SUBB A,@R0 JNC NEXT MOV A,@R0 NEXT:DJNZ R7,LOOP MOV BIG, A SJMP $ END 13、求雙字節(jié)補碼程序 設(shè)雙字節(jié)數(shù)放在內(nèi)部RAM的30H和31H單元(高字節(jié)在低地址),將其取補后存入40H(存放高字節(jié))和41H(存放低
55、字節(jié))單元 答: START:MOV A,31H CPL A ADD A,#01H MOV 41H,A MOV A,30H CPL A JNC DONE ADD A,#01H DONE:MOV 30H,A SJMP $ 14、編程統(tǒng)計累加器A中“1”的個數(shù)。 答: MOV R1,#0 PUSH ACC LOOP1:JZ DONE CLR C RLC
56、A JNC LOOP1 INC R1 SJMP LOOP1 DONE:POP ACC SJMP $ END 15、編程序?qū)崿F(xiàn)1+2+3+……+100=? 答: 匯編代碼如下: H_Byte EQU R4 ;保存結(jié)果,高8位 L_Byte EQU R5 ;保存結(jié)果,低8位 Max_Adder EQU 100 ;最大的加數(shù) ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#1 ;加數(shù) MOV R4,#
57、0 MOV R5,#0 START: MOV A,#Max_Adder CLR CY SUBB A,R2 JC RESULT MOV A,R2 ADD A,L_Byte MOV L_Byte,A ;保存低位 MOV A,H_Byte ADDC A,#0 MOV H_Byte,A ;保存高位 INC R2 JMP START RESULT: SJMP $ ;只用于調(diào)試 END C語言代碼如下: #include "at89x51.h" //由于這里只是計算結(jié)果,所以這行代碼可以去掉 void
58、main(void) { unsigned char i=1; unsigned int result=0; for(i=1;i<=100;i++) result+=i; while(1); //這里用于調(diào)試 } 第6章思考題及習題參考答案 1. 什么是中斷、中斷源、中斷服務(wù)程序、中斷程序入口地址? 答: 當有中斷源申請中斷,并允許響應(yīng)時,處理暫停當前執(zhí)行的程序轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序的過程叫中斷。導致中斷產(chǎn)生的事件和原因統(tǒng)稱為中斷源。處理暫停主程
59、序后轉(zhuǎn)去執(zhí)行的,用來處理中斷事件的程序成為中斷服務(wù)子程序。中斷程序入口地址是指的中斷服務(wù)子程序的第一條指令所在的地址。 2. 中斷優(yōu)先權(quán)有什么作用,中斷嵌套是什么? 答:中斷優(yōu)先權(quán)可以用來解決多個中斷源同時申請中斷時,處理器響應(yīng)中斷的優(yōu)先順序。中斷嵌套是指處理器正在執(zhí)行中斷服務(wù)子程序時,被新的中斷打斷,轉(zhuǎn)去執(zhí)行新的中斷而出現(xiàn)的一個中斷嵌套到另一個中斷中的現(xiàn)象。 3. 保護斷點是保護什么,怎么保護的,中斷返回后的下一步到到哪里去? 答:保護斷點是保護主程序暫停時的下一條將要執(zhí)行的指令的地址。保護方法是將下一條指令的地址值入棧。中斷返回后,斷點地址從堆棧中彈出到程序計數(shù)器或指令
60、指針寄存器,繼續(xù)執(zhí)行主程序。 4.保護現(xiàn)場有什么作用,需要保護哪些內(nèi)容,怎么保護的? 5. 80C51單片機有___個中斷源,分別是_____、 _______、 _______、 ______和________。 答: 5,,,T0,T1,串口 6. 80C51單片機中斷有_____個優(yōu)先權(quán)等級,最多可以實現(xiàn)____級嵌套。 答:2,2 7. 80C51中斷嵌套的原則是什么? 答: 80C51中斷嵌套的原則是:高級中斷可以打斷低級中斷,低級中斷不能打斷高級中斷,同級中斷不可以打斷同級中斷。 8. 80C51響應(yīng)中斷的條件有哪些? 答: 80C5
61、1響應(yīng)中斷的條件有: 中斷申請的對應(yīng)中斷使能控制位有效; 全局中斷使能控制位有效; 中斷申請時沒有更高級別的中斷服務(wù)程序正在執(zhí)行; 9. 80C51的各個中斷源是如何撤銷中斷申請的? 答: 80C51各中斷源的中斷申請撤銷方法是: 定時/計數(shù)器中斷:在中斷被響應(yīng)后,由硬件自動清零中斷申請標志位; 串口中斷:由軟件清零中斷申請標志位; 邊沿觸發(fā)時的外部中斷:中斷被響應(yīng)后,由硬件自動清零中斷申請標志位; 電平觸發(fā)的外部中斷:需要設(shè)計專門的電路,通過軟件編程通知外部中斷源,由外部中斷源撤銷申請。 10. 80C51單片機中有 個
62、定時/計數(shù)器,定時/計數(shù)0有 種工作方式,定時/計數(shù)1有 種工作方式。 答: 2,4,3 11. 80C51單片機中有與定時/計數(shù)器相關(guān)的特殊功能寄存器有哪些,各自有什么作用? 答:有TMOD和TCON的高4位。 TMOD用來設(shè)置定時/計數(shù)的工作方式,選擇計數(shù)時鐘的來源。具體格式如下: 定時/計數(shù)器1 定時/計數(shù)器0 D7 D6 D5 D4 D3 D2 D1 D0 名稱 GATE C/ M1 M0 GATE C/ M1 M0 TCON的高4位用來控制定時/計數(shù)器的啟動和停止,并設(shè)置中斷標志位,向處理器申
63、請中斷。具體格式如下: 位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位名稱 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 12. 80C51單片機中的定時/計數(shù)器用作定時器和計數(shù)器時,有什么區(qū)別? 答:用作定時器時,通常選擇內(nèi)部時鐘,也可使用外部時鐘,應(yīng)用中,通常需要根據(jù)定時要求設(shè)定計數(shù)初值。并查詢等待定時時間結(jié)束,或者在定時時間結(jié)束后向處理器申請中斷; 用作計數(shù)器時,只能選擇外部時鐘,通常設(shè)置計數(shù)初值為零,而且需要讀取計數(shù)結(jié)果。 13. 80C51單片機中的定時/計數(shù)器的門控設(shè)置位GATE
64、有什么作用? 答:GATE用來設(shè)置外部中斷輸入引腳或是否影響定時/計數(shù)器的啟動和停止。當GATE有效時,只有或為高時,相應(yīng)計數(shù)器才可能啟動;當GATE無效時,或不影響計數(shù)器的啟停。 14. 80C51單片機中的定時/計數(shù)器的方式0和方式1有什么共同點和不同點? 答:方式1和方式0都是不能自動重裝的定時/計數(shù)器方式,基本結(jié)構(gòu)相同。不同的是,方式1是16位定時/計數(shù)器;而方式0是13位定時/計數(shù)器,其中計數(shù)寄存器低字節(jié)的高3位不使用。 15. 當定時/計數(shù)器T0工作在方式3時,T1可以工作在哪些方式,與T0不工作在方式3時,T1的工作方式有什么差異? 答: T0工作在方式3時
65、,T1可以工作在方式0,方式1,方式2。相對于T0不工作在方式3時,T1沒有了啟動控制位TR1,沒有了中斷申請標志位TF1,只有設(shè)置成方式3才能停止計數(shù),設(shè)置在其它方式都會不停計數(shù)。 16. 要求設(shè)置單片機的定時器1工作在中斷模式,方式1,計數(shù)器模式,軟件啟動,定時器0未使用,使用外部中斷0,下降沿觸發(fā)中斷,外部中斷1閑置,串口關(guān)閉。要求設(shè)置定時器1的中斷優(yōu)先級最高。 那么IE= 、 IP=_________、TMOD=__________、IT0=___。 答: 89H或10001001B,08H或00001000B, 50H或01010000B, 1
66、 17. 執(zhí)行以下代碼的作用是 。 ANL TMOD, #0F0H ORL TMOD, #02H 答:設(shè)置定時/計數(shù)器0工作在方式2,定時器模式,僅由軟件啟動。 18. 若某單片機系統(tǒng)的晶振為12MHz,使用定時/計數(shù)器0,進行700us定時,可以使用哪些工作方式,要求只要軟件就可以啟動,且通過查詢方式實現(xiàn)。寫各種方式下的初始化程序。 答:晶振頻率為12MHz,則計數(shù)器時鐘周期為1us,定時時間為700us,則需要計數(shù)700,方式0的最大計數(shù)為8192,方式1為65536,方式2和方式3為256。因此可以選擇方式0和方式1。 一:選擇方式0 方式0為13位計數(shù)器,計數(shù)初值為: TH0= 11101010B=0EAH ,TL0= 00100B=04H 定時/計數(shù)器0工作在方式0,定時器模式,軟件啟動,則TMOD=00000000B=00H。查詢方式下,不需要打開中斷使能控制位,復(fù)位后IE=0,所以不需要初始化IE。 初始化程序為: MOV TMOD, #00
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點美食推薦
- XX國有企業(yè)黨委書記個人述責述廉報告及2025年重點工作計劃
- 世界濕地日濕地的含義及價值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點節(jié)后常見的八大危險
- 廈門城市旅游介紹廈門景點介紹廈門美食展示
- 節(jié)后開工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓
- 深圳城市旅游介紹景點推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓勿忘安全本心人人講安全個個會應(yīng)急
- 預(yù)防性維修管理
- 常見閥門類型及特點
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案