




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章1.單片機內部至少包含哪些部件?答:中央處理器CPU、I/O口、隨機存儲器RAM、只讀存儲器ROM。2. 根據程序存儲器的差別,單片機可以分為哪幾種類型?答:MCS-51系列單片機按片內不同程序存儲器的配置來分,可以分為以下3種類型:1、片內帶Mask ROM(掩膜ROM)型:例如8051、80C51、8052、80C52。此類芯片是由半導體廠家在芯片生產過程中,將用戶的應用程序代碼通過掩膜工藝制作到ROM中。其應用程序只能委托半導體廠家“寫入”,一旦寫入后不能修改。此類單片機適合大批量使用。2、片內帶EPROM型:例如8751、87C51、8752。此類芯片帶有透明窗口,可通過紫外線擦
2、除存儲器中的程序代碼,應用程序可通過專門的編程器寫入到單片機中,需要更改時可擦除重新寫入。此類單片機價格較貴,不宜于大批量使用。3、片內帶EEPROM(電可擦可編程只讀存儲器)型:例如8951、89C51、8952。此類芯片可以在電腦上或專用設備上擦除已有信息,重新編程。此類單片機目前應用很廣。4、片內無ROM(ROMLess)型:例如8031、80C31、8032。此類芯片的片內沒有程序存儲器,使用時必須在外部并行擴展程序存儲器存儲芯片。此類單片機由于必須在外部并行擴展程序存儲器存儲芯片,造成系統電路復雜,目前較少使用。3.單片機的主要特點是什么?它適宜構成通用微機系統還是專用微機系統?為什
3、么?答:單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統。其主要特點如下:1、價格便宜。2、功能不大。只能專用在適用的領域,但在適用的領域中,性價比卻是最佳。3、可靠性高,抗干擾能力強。4、功耗比較低。對電源要求低,適用面廣。5、外圍擴展能力強。可以應用到不同的控制系統中。根據其特點可知,單片機功能不大,不適宜構成通用微機系統,只適宜構成專用微機系統。4
4、. 研制微機應用系統時,應如何選擇單片機的型號?答:在單片機應用研究系統開發中,單片機是整個設計的核心。在進行正式的單片機應用研究系統開發之前,需要根據不同單片機的特性,從中作出合理的選擇。1.仔細調查市場,盡量選用主流的、貨源充足的單片機型號,這些器件使用比較廣泛,有許多設計資料供學習或參考。2.盡量選擇所需硬件集成在單片機內部的型號,例如ADC、DAC、I2C、SPI和USB等。這樣便于整個控制系統的軟件管理,減少外部硬件的投入,縮小整體電路板的面積,從而減少總體投資等。3.對于手持設備,移動設備或者其他需要低功耗的設備,盡量選擇低電壓、低功耗的單片機型號,這樣可以減少能量的消耗,延長設備
5、的使用壽命。4.在資金等條件允許的情況下,盡量選擇功能豐富,擴展能力強的單片機,這樣便于以后的功能升級和擴展。5.對于體積有限制的產品,盡量選擇貼片封裝的單片機型號,這樣可以減少電路板面積,從而降低硬件成本,同時也有助于電磁兼容設計。第二章1.分別寫出一個MCS-51中ROM、EPROM、無ROM型單片機的型號和內部資源。其中哪個產品內部具有固化的軟件?該軟件能否被所有用戶所使用?怎樣使用該種產品?答:1、8051、80C51、8052、80C52。此類芯片帶有4K字節的掩膜ROM,由半導體廠家在芯片生產過程中,將用戶的應用程序代碼通過掩膜工藝制作到ROM中。其應用程序只能委托半導體廠家“寫入
6、”,一旦寫入后不能修改。2、8751、87C51、8752。此類芯片帶有4K字節的EPROM,帶有透明窗口,可通過紫外線擦除存儲器中的程序代碼,應用程序可通過專門的編程器寫入到單片機中,需要更改時可擦除重新寫入。3、8031、80C31、8032。此類芯片片內無ROM,使用時必須在外部并行擴展程序存儲器芯片。其中8051、80C51、8052、80C52等產品具有固化軟件,該軟件不能被所有用戶所使用,應用程序只能委托半導體廠家“寫入”。2.MCS-51中無ROM型單片機在應用中P2口和P0口能否直接作為輸入/輸出口連接開關、指示燈之類的外圍設備?為什么?答:不能。因為無ROM型單片機在應用中必
7、須擴展程序存儲器,P0口必須作為地址總線的低8位及數據總線復用, P2口必須作為高8位地址總線送出高8位地址,因此P2口和P0口的輸出信號都是不穩定的,不能直接作為輸入/輸出口連接開關、指示燈之類的外圍設備。3. 什么是堆棧?8032的堆棧區可以設在什么地方?一般應設在什么區域?如何實現?試舉例說明。答:堆棧是在片內RAM中專門開辟出來的一個區域,數據的存取是以"后進先出"的結構方式處理的。實質上,堆棧就是一個按照"后進先出"原則組織的一段內存區域。堆棧操作指令PUSH direct、POP direct只能采用直接尋址方式,8032的片內RAM中只有低
8、128字節可以采用直接尋址方式訪問,因此,盡管8032片內RAM的地址范圍是00H-0FFH,但堆棧區只可以設在內部RAM中的00H-7FH的區域內,一般應設在30H-7FH的范圍內。可以通過賦值的方式設置堆棧區,如:MOV SP,#60H。4. 8031的內部RAM中,哪些可以作為數據緩沖區?答:8031內部RAM的128字節均可以作為數據緩沖區,但00H1FH通常作為工作寄存器區使用,20H2FH通常作為位尋址區使用。5.對于8052單片機,地址為90H的物理單元有哪些?答:一個是P1口,P1口的物理地址就是90H,使用直接尋址方式訪問;還有一個是RAM單元,必須使用寄存器間接尋址方式訪問
9、。6. MCS-51單片機構成系統時,程序存儲器的容量最大是多少?答:MCS-51單片機構成系統時,程序存儲器的容量最大是64KB。7. 當單片機系統的程序存儲器的容量為8KB時,程序存儲器的開始地址為多少?答: 因為單片機復位時,PC=0000H,程序都是從0000H開始執行,所以無論何種情況,程序存儲器的開始地址都必須是0000H。8.MCS-51單片機構成系統時,外部數據存儲器的容量最大是多少?答:MCS-51單片機構成系統時,外部存儲器的容量最大是64KB。9. 當單片機系統外部數據存儲器的容量為8KB時,數據存儲器的開始地址一定要是0000H嗎?答:不一定。10.什么是單片機的的節電
10、方式?答:MCS-51系列運行時耗電小,還提供兩種節電工作方式空閑方式和掉電方式。在單片機空閑時程序停止運行,進入待機狀態,在接收到一個中斷時退出空閑方式,處理完后繼續進入空閑方式,就這樣斷斷續續的工作以達到節電目的。11.CHMOS型單片機,進入掉電方式時,單片機的振蕩器是否工作?采用什么辦法能使單片機退出掉電方式?答:不工作。在掉電方式中,振蕩器停止工作,單片機內部所以功能部件停止工作。在掉電方式期間,內部RAM和寄存器的內容維持不變。退出掉電方式的唯一方法是硬件復位。12. CHMOS型單片機,進入空閑方式時,單片機的振蕩器是否工作?采用什么辦法能使單片機退出空閑方式?答:工作。進入空閑
11、方式中,中斷、串行口和定時器繼續工作。CPU現場、內部RAM和其他特殊功能寄存器內容維持不變。有兩種方法退出空閑方式,一是采用被允許的中斷源請求中斷;二是硬件復位,因為空閑方式中,振蕩器在工作,所以僅需兩個機器周期便完成復位。第三章1. 指出下列指令中劃線操作數的尋址方式和指令的操作功能。答:MOV A, #78H; 立即尋址,將立即數送入累加器A MOV A, 78H; 直接尋址,將內部RAM 78H單元內容送累加器A MOV A, R6; 寄存器尋址,將R6內容送累加器A INC R0; 寄存器間接尋址,將指針R0指向的內部RAM單元內容加1 PUSH ACC; 直接尋址,將累加器A的內容
12、入棧 RL A; 寄存器尋址,將累加器A的內容左移1位 CPL 30H; 位尋址,將位變量30H的內容取反 SJMP $; 相對尋址,原地等待MOVC A, A+PC;基寄存器加變址寄存器間接尋址,程序存儲器PC和累加器A中內容相加形成ROM地址,取數送到累加器A。2.指出下列指令中哪些是非法的? INC R1DEC DPTR MOV A, R2 MOV R1, R0 MOV P1.1, 30H MOV #30H, A MOV 20H,21H MOV OV, 30H MOV A, A+DPTR RRC 30H RL B ANL 20H,#30H XRL C, 30H 答:DEC DPTR DE
13、C DPLMOV A, R2 MOV A, R1MOV R1, R0 MOV A, R0 MOV P1.1, 30H MOV C, 30H和MOV P1.1, C MOV #30H, A MOV A, #30H MOV OV, 30H MOV C, 30H和MOV OV,CMOV A, A+DPTR MOVC A, A+DPTRRRC 30H RRC A 因為所有的移位指令均是對累積器A進行的RL B RL AXRL C, 30H 錯,因為位操作指令中,沒有位的異或運算3.如何將1個立即數30H送入內部RAM 90H單元?如何將立即數送特殊功能寄存器P1?答:(1) MOV R0, #90H
14、MOV R0, #30H(2)MOV P1, #30H4.執行下列一段程序后,試分析有關單元內容。答:MOV PSW, #0; (PSW)=00HMOV R0, #30H; (R0)=30HMOV 30H, #40H (30H)=40HMOV 40H, #50 (40H)=32HMOV A, R0 (A)=40HADDC A, #0CEH (A)=40H+0CEH+0=0EH PSW=10000001B=81HINC R0 (R0)=31H最后的執行結果:(R0)=31H, (30H)=40H, (40H)=32H, (A)=0EH, (PSW)=81H5.試編寫一段程序,將內部RAM 40H
15、、41H單元內容傳送到外部RAM 2000H、2001H單元中去。答:MOV DPTR, #2000H MOV R0,#40H MOV A, R0 MOVX DPTR, A INC R0 INC DPTR MOV A, R0 MOVX DPTR, A6.試編寫一段程序,根據累加器A的內容,到程序存儲器1000H起始的表格中取一雙字節數,送內部RAM 50H、51H單元。答:MOV DPTR, #1000H PUSH ACC MOVC A, A+DPTR MOV 50H, A POP ACC INC DPTR MOVC A, A+DPTR MOV 51H, A7.試編寫一段程序,進行兩個16位數
16、的相減運算:6483H-56E2H。結果高8位存內部RAM 40H,低8位存41H。答:CLR C MOV A, #83H SUBB A, #0E2H MOV 41H, A MOV A, #64H SUBB A, #56H MOV 40H, A8.試編寫一段程序,將30H、31H單元中存放的BCD數,壓縮成一個字節(原30H單元內容為高位),并放入30H單元。答:MOV A, 30H SWAP A ORL A, 31HMOV 30H, A9.試編寫一段程序,將30H32H單元中的壓縮BCD拆成6個單字節BCD數,并放入33H到38H單元。答:MOV A, 30H MOV R0, #33H AC
17、ALL LPMOV A, 31H ACALL LP MOV A, 32H ACALL LP SJMP $ LP: MOV B, A ANL A, #0FH MOV R0, A INC R0 MOV A, B SWAP A ANL A, #0FH MOV R0, A INC R0 RET10.設晶振頻率為6MHz,試編寫一個延時1ms的子程序,并利用該子程序,編寫一段主程序,在P1.0引腳上輸出高電平寬2ms、低電平寬1ms的方波信號。答:機器周期T=2s, 延時1ms的子程序應運行500T, 子程序為:DELAY: MOV R0, #248; 1T DJNZ R0, $; 2T NOP; 1T
18、 RET 2T子程序運行機器周期數為:1T+248*2T+1T+2T=500T,500T=1ms主程序為:MOV PSW, #00H LOOP: SETB P1.0 ACALL DELAY ACALL DELAY CLR P1.0 ACALL DELAY SJMP LOOP 第四章1.試根據P1口和P3口的結構特性,指出它們作為輸入口或第二功能輸入/輸出的條件。答:P1口作為輸入口時,相應的口鎖存器必須先置“1”,使輸出場效應管T截止,CPU讀P1時才能準確讀取外部電路的輸入信息。同理,P3口作為第二功能I/O口時,相應的口鎖存器也必須先置“1”。2.MCS-51中無ROM型單片機,在應用中P
19、0口和P2口能否直接作為輸入/輸出口連接開關、指示燈之類的外圍設備?為什么?答:不能。因為無ROM型單片機在應用中必須擴展程序存儲器,P0口必須作為地址總線的低8位及數據總線復用, P2口必須作為高8位地址總線送出高8位地址,因此P2口和P0口的輸出信號都是不穩定的,不能直接作為輸入/輸出口連接開關、指示燈之類的外圍設備。3.什么是堆棧?堆棧的作用有哪些?答:堆棧是在片內RAM中專門開辟出來的一個區域,數據的存取是以"后進先出"的結構方式處理的。實質上,堆棧就是一個按照"后進先出"原則組織的一段內存區域。作用:(1)子程序調用和中斷服務時CPU自動將當前
20、PC值壓棧保存,返回時自動將PC值彈出堆棧。(2)保護現場/恢復現場(3)數據傳輸4.MCS-51的T0、T1的定時器和計數器的方式差別是什么?試舉例說明這兩種方式的用途。答:MCS-51的T0、T1的定時器和計數器本質上都是計數器, 定時器方式是對單片機內部的機器周期數進行計數, 計數器方式是對T0、T1引腳上輸入的外部脈沖(方波)信號進行計數。定時器方式用來產生定時信號,可用于串行通信,也可以通過口輸出脈沖和方波信號;計數器方式可以用來檢測外部信號的頻率和脈寬。5. 晶振為12MHz,用T0產生1ms的定時,可以選擇哪幾種方式?分別寫出定時器的方式字和計數初值。如需要1s的定時,應如何實現
21、?答:由于定時器工作在方式2和方式3下時的最大定時時間只有0.256ms,因此要想獲得1ms的定時時間,定時器必須工作在方式0或方式1。機器周期T =12×1/12×10-6s=1s,計數值T計數=1ms/1m=1000。1、采用方式0,定時器的方式字TMOD=00H,定時器的計數初值為TC= MT/ T計數= 213 1*103/1=7192=1C18H,TH0應裝1CH;TL0應裝#18H。2、采用方式1,定時器的方式字TMOD=01H,定時器的計數初值為TC= MT/ T計數= 216 1*103/1=64536=FC18H,TH0應裝0FCH;TL0應裝#18H。如
22、需要1s的定時,可以采用查詢相應溢出標志位,結合軟件計數100循環,即可實現1s的定時。6.晶振為12MHz,如何用T0來測試20Hz1000Hz之間的方波信號(設高低電平寬度相同)的周期?又如何測試頻率為0.5MHz左右的脈沖頻率?答: 1、使用定時器方式,利用方波的邊沿觸發定時器的開始與結束,比如使用上升沿來啟動定時器計數,機器周期T為1s,下降沿停止計數。依據計數值N計算周期,周期=2N*T。2、T0工作在計數器方式,待測試的脈沖信號引入T0引腳計數,同時T1工作在定時器方式,定時1ms,1ms定時結束時取T0計數值,脈沖頻率=1000* T0計數值。7.若晶振為11.0592MHz,串
23、行口工作于方式1、波特率為4800bit/s,分別寫出用T1、T2作為波特率發生器的方式字和計數初值。答:T1作為波特率發生器。由:波特率=2SMOD*振蕩器頻率/32*12*(256-X)設SMOD=0,可得,4800=20*11059200/32/12/(256-X),可得的計數初值X=250=0FAH,將X值裝入TH1中,TMOD=20H。MOV TMOD,#20H; T1方式2MOV TH1,#0FAHT2作為波特率發生器,需對T2CON(置“1”TCLK、RCLK)、TH2、TL2、RCAP2H、RCAP2L初始化編程,再置“1”TR2,具體略。8.串行口方式0能否外接多個74LS1
24、64?若不可以,說明原因;若可以,畫出邏輯框圖并說明數據輸出方法。答:串口工作方式0時,可以外接多個74LS164。此時TXD用于發送同步脈沖接74LS164的CLK端,RXD用于發送數據接第一片74LS164的數據輸入端DSA和DSB,74LS164的/CR和Vcc端接+5V,Vss端接地,后一片74LS164的數據輸入端DSA和DSB接前一片74LS164的Q7。只要將數據載入SUBF之后,時鐘脈沖和數據就會自動出現在單片機的I/O端口,程序不需要對I/O口再進行干預。出現在74LS164的數據低位在右,高位在左。將數據多次載入SUBF,就可以在多個74LS164的輸出端得到穩定的數據。邏
25、輯框圖略,可參考教材的例4-8.9.MCS-51的中斷處理程序能否存儲在64KB程序存儲器的任意區域?若可以,如何實現?答:可以。因為每個中斷源的中斷入口地址處均預留了8個單元的空間,8個單元足夠存放一條跳轉指令,使程序轉向64KB程序存儲區的任意區域。在相應的中斷入口使用JMP指令進行跳轉就可以實現。10.在一個8031系統中,晶振為12MHz,一個外部中斷請求信號是一個寬度為500ms的負脈沖,則應該采用哪種中斷觸發方式,如何實現?答:應該采用邊沿觸發方式,采用SETB IT0或 SETB IT1即可。若采用電平觸發方式,由于外部中斷請求信號長期存在,可能會引起重復中斷。11.若外部中斷請
26、求信號是一個低電平有效的信號,是否一定要選擇電平觸發方式?為什么?答:不一定。因為采用邊沿觸發,能自動鎖存中斷信號,是一種可靠的中斷管理方式。第五章1. 若晶振為6MHz,試編寫一個2ms延時子程序。答:晶振為6MHz,機器周期T為2s,應計滿1000個T。DELAY: MOV R7, #10DLY0: MOV R6, #49DLY1: DJNZ R6, DLY1;2T DJNZ R7, DLY0;2TRET 2.試編制一個子程序,對串行口初始化,使串行口以方式1,波特率1200bit/s(晶振為11.059MHz)發送字符串“MCS-51”。答:ORG 0000HAJMP MAINORG 0
27、100HMAIN: MOV TMOD,#20HMOV TL1,#0E8HMOV TH1,#0E8HSETB TR1MOV SCON,#42HMOV R4,#0MOV DPTR,#TABFS1: MOV A,R4 MOVC A,A+DPTR CJNE R4,#6,FS2 SJMP FSJSFS2: JBC TI,FS3 SJMP FS2FS3: MOV SBUF,A INC R4 SJMP FS1FSJS: SJMP $TAB: M,C,S,-,5,1 END3.晶振為11.059MHz,串行口工作與方式3,波特率為2400bit/s,第9位數據為奇校驗位。編制一個程序,對串行口初始化,并用查詢
28、方式接受串行口上輸入的10個字符存入內部RAM中30H開始的區域。答:RECS: MOV SCON,#0D0H ;串行口方式3允許接收MOV TMOD,#20H ;T1方式2定時MOV TL1, #0F4H ;寫入T1時間常數MOV TH1, #0F4HSETB TR1 ;啟動T1MOV R0, #30H ;設數據指針 MOV R7, #10 ;接收數據長度WAIT: JBC RI,NEXT ;等待串行口接收 SJMP WAITNEXT:MOV A,SBUF ;取一個接收字符JNB P,COMP ;奇偶校驗JNB RB8,ERR ;PRB8,數據出錯SJMP RIGHT ;P=RB8,數據正確
29、COMP: JB RB8,ERRRIGHT: MOV R0,A ;保存一個字符INC R0 ;修改指針DJNZ R7,WAIT ;全部字符接收完?CLR F0 ;F0 =0,接收數據全部正確 ERR: SETB F0 ;F0 =1,接收數據出錯RET4.寫一個子程序,其功能是將(R0)指出的兩個RAM單元中的數轉化為ASCII字符,并用查詢方式從串行口上發送出去。答:設串行口以方式1工作,波特率為1200bit/s,晶振為11.059MHz。 ORG 0000HAJMP MAINORG 0100HMAIN: MOV TMOD,#20HMOV TL1,#0E8HMOV TH1,#0E8HSETB
30、 TR1MOV SCON,#42HMOV R4,#2FS1: MOV A,R0ANL A,#0FHMOV DPTR,#TABMOVC A,A+DPTRFS2: JBC TI,FS3 SJMP FS2FS3: MOV SBUF,A INC R0 DJNZ R4,FS1FSJS: SJMP $TAB: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,41H,43H,44H,45H,46H END5.試編寫一個子程序將字符串“MCS-51 Microcomputer”裝入外部RAM 8000H開始的顯示緩沖區。答:ORG 0000HAJMP 0030HM
31、IAN: MOV DPTR,#8000HMOV R1,#0MOV R0,#20LOOP: MOV A,R1ADD A,#6MOVC A,A+PCMOVX DPTR,AINC DPTRINC R1DJNZ R0,LOOPSJMP $TAB:DBMCS-51 MicrocomputerEND6. 試設計一個n字節的無符號十進制數加法子程序,其功能為將(R0)和(R1)指出的內部RAM中兩個n字節壓縮BCD碼無符號十進制數相加,結果存放于被加數單元中。子程序入口時,R0,R1分別指向被加數和加數的低位字節,字節數n存于R2,出口時R0指向和的最高位字節,CY為進位位。答: LEN EQU n ORG
32、 0000H AJMP MAIN ORG 0030H MAIN: MOV SP. #60H MOV R2, #LEN ACALL ADD_NBYTE SJMP $ ADD_NBYTE: CLR C LOOP: MOV A, R0 ADDC A, R1 DA A MOV R0, A INC R0 INC R1 DJNZ R2, LOOP RET END7.試設計一個n字節的無符號十進制數減法子程序,其功能是將R0指出的內部RAM中n字節無符號壓縮BCD碼減去(R1)指出的內部RAM中n字節無符號壓縮BCD碼,結果存放在被減數單元中。子程序入口時,R0,R1分別指向被減數和減數的低位字節,字節數n
33、存于R2,出口R0指向差的高位字節,CY=1為正,CY=0為負,結果為補碼。答:以n=2為例。1. 將2字節無符號壓縮BCD碼被減數轉換4位BCD碼,存入60H63H,再轉換為二進制數,存R3R4。MOV A,R0 ANL A,#0FHMOV 63H,AMOV A,R0SWAP A ANL A,#0FHMOV 62H,AINC R0MOV A,R0 ANL A,#0FHMOV 63H,AMOV A,R0SWAP A ANL A,#0FHMOV 62H,ADTB:MOV R0,#60HMOV R3,#3MOV R3,#0MOV A,R0MOV R4,ALOOP:MOV A,R4MOV B,#10
34、MUL ABMOV R4,AMOV A,BXCH A,R3MOV B,#10MUL ABADD A,R3MOV R3,AINC R0MOV A,R4ADD A,R0MOV R4,AMOV A,R3ADDC A,#0MOV R3,ADJNZ R2,LOOP2. 用相同程序可將2字節無符號壓縮BCD碼減數轉換4位BCD碼,存入60H63H,再轉換為二進制數,存R5R6。3. 雙字節無符號數減法程序,差存入R7R1NSUB1:MOV A,R4 CLR C SUBB A,R6 MOV R1,A MOV A,R3 SUBB A,R5 MOV R7,A JBC POUTCMPT:MOV A,R1;負數求補
35、 CPL A ADD A,#1 MOV R1,A MOV A,R7 CPL A ADDC A,#0 MOV R0,A DEC R0 MOV R0,R1 INC R0 RET8.試設計一個子程序,其功能為判斷R2R3R4R5中的壓縮BCD碼十進制數最高位是否為0,若最高位為0,且該十進制數不為0,則通過左移使最高位不為0。略9.試設計一個雙字節無符號整數乘法子程序,其功能將R3R2和R5R4相乘,積存于30H-33H單元。答:MULTB: CLR A MOV 30H, AMOV 31H, AMOV 32H, AMOV 33H, AMOV R0,#30HMOV A,R2MOV B,R4MUL AB
36、ACALL RADDMOV A,R2MOV B,R5MUL ABDEC R0ACALL RADDMOV A,R4MOV B,R3MUL ABDEC R0DEC R0ACALL RADDMOV A,R5MOV B,R3MUL ABDEC R0ACALL RADDSJMP $RADD: ADD A,R0MOV R0,AMOV A,BINC R0ADDC A,R0MOV R0,AINC R0MOV A,R0ADDC A,#00HMOV R0,ARET10.試設計一個子程序,其功能將無符號二進制整數R2R3R4R5除以R6R7,其商存放于30H,31H單元,余數存于R2R3。略11.試設計一個子程序,
37、其功能為將R0指出的內部RAM中6個單字節正整數按從小到大的次序重新排列。答:ORG 0200HMOV 30H,#6SUM1 EQU 30HSUM2 EQU 31HLOOP1: MOV A,R0 INC A MOV R1,A MOV SUM2,SUM1 DJNZ SUM1,LOOP2 SJMP DONELOOP2: DJNZ SUM2,LOOP3SJMP LOOP1LOOP3: MOV A,R0 CLR C SUBB A,R1 JC NEXT XCH A,R1 MOV R0,ANEXT: INC R0 INC R1 SJMP LOOP2DONE: END12.試設計一個子程序,其功能為應用查表
38、指令:MOVC A,A+PC,求累加器A的平方值,結果送入A,入口時A<15。答:MEMO:INC AMOVC A,A+PCRETTAB: DB 0,1,4,9,16,25,36,49DB 64,81,100,121,144,169,196,22513.試設計一個子程序,其功能將R0指出的內部RAM中雙字節壓縮BCD碼轉化為二進制數存放于R1指出的內部RAM中,并將結果再轉化為BCD碼存放于30H開始的單元中。答:先將壓縮BCD碼轉化為BCD碼存放于30H開始的單元中MOV R2,R0MOV A,R0PUSH ACCANL A,#0FHMOV 30H,APOP ACCSWAP AANL
39、A,#0FHMOV 31H,AINC R0MOV A,R0PUSH ACCANL A,#0FHMOV 32H,APOP ACCSWAP AANL A,#0FHMOV 33H,AMOV A,31H; ( R1)=(31H)*10+(30H)MOV B,#10MUL ABADD A,30HMOV R1,AMOV A,32H; (R1)+1)( R1)=(32H)*100+( R1)MOV B,#100MUL ABADD A,R1MOV R1,AINC R1MOV A,BADDC A,R1MOV R1,AMOV A,33H; (R1)+1)( R1)= (33H)*1000+(R1)+1)( R1)
40、MOV B,#232MUL ABDEC R1ADD A,R1PUSH PSWMOV R1,AINC R1MOV R1,BMOV A,33HMOV B,#3MUL ABPOP PSWADDC A,R1MOV R1,A14.若晶振為6MHz,用T0產生500us的定時中斷,試編寫有關的初始化程序和對時鐘進行計數的T0中斷服務程序。時鐘計數單元為:30H,31H,32H,分別存放壓縮BCD碼的時分秒參數。答:晶振為6MHz,機器周期T為2s,500us=250T,T0可以工作在方式2。有關的初始化程序和對時鐘進行計數的T0中斷服務程序如下: ORG 0000H SJMP MAIN ORG 000BH
41、 SJMP PT0 ORG 0030HMAIN: MOV TMOD,#02H MOV TH0,#6 MOV IE,82H SETB TR0 CLR A MOV 30H,A MOV 31H,A MOV 32H,A MOV 33H,A MOV 34H,A MOV 35H,A MOV R7,#40 MOV R6,#50 SJMP $PT0: DJNZ R7,A1 MOV R7,#40 DJNZ R6,A1 MOV R6,#50 INC 33H CJNE 33H,#60,A2 MOV 33H,#0 MOV 30H,#0 INC 34H CJNE 34H,#60,A3 MOV 34H,#0 MOV 31H,#0 INC 35H CJNE 35H,#24,A4 MOV 35H,#0 MOV 32H,#0A1: RETIA2: MOV A,33H MOV B,#10 DIV AB SWAP A MOV 30H,B MOV R0,#30H XCHD A,R0 MOV 30H,A SJMP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年Z世代消費趨勢下新消費品牌競爭策略報告
- 中藥材質控體系建設
- 急性腹痛的常見病因分析2025
- DEEPSEEK在生產制造場景中的智能排產APS落地方案
- 《前赤壁賦》教案教學設計
- 細胞模擬生物試題及答案
- 2025年西藏自治區日喀則市昂仁縣中考一模歷史試題 (含答案)
- 2025農業生產設備租賃合同格式
- 提升家電產品的用戶體驗與客戶粘性
- 福建省季延中學08-09學年高二下學期期中考試(數學理)
- 2024屆四川省瀘州市龍馬潭區六年級語文小升初摸底考試含答案
- 40篇英語短文搞定3500個單詞 正文
- 三年級語文下冊 期末綜合模擬測試卷(人教浙江版)
- 尿培養的健康宣教
- 構建自媒體內容生產與運營流程
- 煤礦井下安全避險六大系統 課件 項目五供水施救系統建設
- 上海研學旅游計劃書
- 局灶性大腦挫傷伴出血查房
- 食品產業園區規劃設計方案案例
- 大一職業素養計劃書的總結
- 上海開放大學《集裝箱班輪運輸業務與法律》終結性考試復習題庫(附答案)
評論
0/150
提交評論