單片機原理及應用試題_第1頁
單片機原理及應用試題_第2頁
單片機原理及應用試題_第3頁
單片機原理及應用試題_第4頁
單片機原理及應用試題_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理及應用

練習題第一章根底知識第二章MCS-51結構及引腳第三章MCS-51指令系統(tǒng)第四章匯編語言程序設計第五章MCS-51片內接口第六章MCS-51系統(tǒng)擴展第七章單片及應用設計實例第一章根底知識

1.寫出-120的原碼、反碼、補碼的16進制值。答案:120=1111000B120-120原碼01111000B〔78H〕11111000〔F8H〕反碼01111000B〔78H〕10000111〔87H〕補碼01111000B〔78H〕10001000〔88H〕2.十進制數(shù)105,化成二進制數(shù)是__________,化成十六進制數(shù)是__________。

答案:01101001,693.十進制數(shù)-43,在八位計算機中的表示__________。答案:101010114.將八進制數(shù)75.615轉換成二進制數(shù)是—————。

答案:111101.110001101

6.將十進制數(shù)0.6875轉換成二進制數(shù)是————。答案:0.10115.將十六進制數(shù)BA4.5轉換為二進制數(shù)是______。答案7.與二進制01010100對應的十進制數(shù)是————。

答案:84第二章MCS-51結構及引腳

1.什么是單片機?其主要特點是什么?答案:單片機具有體積小、可靠性高、控制功能強、使用方便、性能價格比高、容易產品化等特點。2.MCS-51系列的典型產品8051、8751和8031的區(qū)別是什么?答案:8051、8751和8031均為8位單片機,其內部結構是根本相同的。其不同為:8051內部有4KBROM,8751內部有4KBEPROM,而8031內部無程序存儲器。3.單片機主要應用在什么領域?答案:單片機主要應用在:智能儀表、機電一體化、實時控制、分布式多機系統(tǒng)、家用電器等,對各個行業(yè)的技術改造和產品的更新?lián)Q代起重要的推動作用。4.單片機包括哪兩種復位方式?在單片機應用系統(tǒng)中為何需要系統(tǒng)復位?答案:單片機可通過上電自動復位和人工復位,使CPU和系統(tǒng)中的其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。答案:64K字節(jié)程序存儲器空間〔0-0FFFFH〕立即尋址和基存放器加變址存放器間接尋址256字節(jié)內部RAM空間〔0-0FFH〕、〔00-7FH〕存放器間接尋址和直接尋址,〔80-8FH〕存放器間接尋址128字節(jié)內部特殊功能存放器空間〔80-0FFH〕直接尋址,位尋址空間〔0-0FFH〕位尋址64K字節(jié)數(shù)據(jù)存儲器空間〔0-0FFFFH〕存放器間接尋址5.什么是指令周期?8051的指令周期一般由幾個機器周期構成?答案:CPU取出一條指令至該指令執(zhí)行完所需要的時間稱為指令周期。大多數(shù)8051指令執(zhí)行時間為一個機器周期或兩個機器周期。6.8051的一個機器周期包括幾個狀態(tài)、幾個時鐘周期〔振蕩器頻率〕?機器周期與時鐘周期〔振蕩器頻率〕的關系是怎樣的?答案:一個機器周期由六個狀態(tài)組成,每個狀態(tài)為二個時鐘周期,即一個機器周期由六個狀態(tài)構成,所以一個機器周期T=12/f0sc7.MCS-51的存儲器空間分為哪些局部〔五個獨立的存儲空間的劃分〕?各空間的尋址范圍、尋址方式是什么?8.片內低端128字節(jié)的數(shù)據(jù)空間能用采存放和執(zhí)行程序嗎?它們究竟有什么用途?答案:能存放,但不能執(zhí)行!片內數(shù)據(jù)'RAM用處非常大,大到離了它幾乎無法執(zhí)行指令的地步!只要定義為“數(shù)據(jù)存儲”的空間;無論位于片內還是片外,肯定不能執(zhí)行指令,因為程序空間的地址選通信號(PSEN)根本就沒接到這里來!但是,若把程序代碼當微普通數(shù)據(jù)放人數(shù)據(jù)區(qū)暫存(注意,僅僅是存放?。┮矝]什么不可以,只是別試圖運行它,除非把PSEN選通信號預先接到數(shù)據(jù)存儲器芯片的片選端上。可真要如此接線,此數(shù)據(jù)空間的性質也就演變成為程序空間了。片內低端128字節(jié)的數(shù)據(jù)RAM分為3個地址區(qū)間,各有不同用途,請參見圖1-1。但也可作為普通寄存器使用,其中:字節(jié)地址00H~1FH——分配給4組通用寄存器,每組寄存器名稱相同,都是R0~R7;4組Rn不能同時使用,當前選擇使用哪一組Rn,要由PSW的RS1和RS0兩位來決定。字節(jié)地址20H~2FH——既可作為普通的字節(jié)存放器,也可作為位尋址區(qū),每個字節(jié)均可分為8個可位尋址的存儲元〔bit,位〕,此區(qū)間128個存儲元按位另外統(tǒng)一編址〔即位地址〕,分別從00H~7FH,常用來存放實際控制中的各種狀態(tài)信息。字節(jié)地址30H~7FH——普通的字節(jié)存放器,常用來存放臨時數(shù)據(jù),又稱數(shù)據(jù)緩沖區(qū)。其中最高端的假設干字節(jié)常用于教學開發(fā)機各LED數(shù)碼管的數(shù)據(jù)緩沖區(qū),配合監(jiān)控程序中的顯示模塊使用。例如江蘇啟東廠的教學開發(fā)機就是將7EH~79H這6個存儲單元當做LED顯示緩沖區(qū),無論用戶,預制內容是BGD碼還是七段代碼,都可以在監(jiān)控程序中找到對應的顯示模塊,通過調用來完成用戶所需的數(shù)值顯示。片內高端l28字節(jié)的RAM區(qū)只有21個字節(jié)有效,這21個字節(jié)既有地址,又有各自獨特的名稱,且用途各異,因此稱為特殊功能存放器〔SFR〕空間,其中凡字節(jié)地址能被8整除的SFR均可實現(xiàn)位尋址,其也有獨立的位地址,且編號規(guī)律與低端位尋址區(qū)不同,與各自所在SFR字節(jié)地址相關。9.程序狀態(tài)字PSW中各個狀態(tài)位是從哪里得到的?其中兩個未安排的自定義位(PSW.5和PSW.2)用戶能任意使用嗎?答案:PSW又稱標志寄存器,主要用來存放指令執(zhí)行過程中產生的各種特殊信息,這些信息分別來自于:PSW.7(C標志)——來自運算器最近一次算術運算操作,表示運算結果有無進(借)位?PSW.6(AC標志)——來自運算器最近一次算術運算操作,表示運算結果的低4位與高4位之間有無進位?PSW.4和PSW.3(工作寄存器選擇)——來自用戶指令,由用戶指定當前即將選用哪組通用寄存器?PSW.2(OV標志)——來自運算器最近一次算術運算操作,表示運算結果有無溢出?PSW.0(P標志)——來自最近一次涉及對累加器A的操作指令(包括傳送操作),表示操作后A中的數(shù)據(jù)有奇數(shù)個“1”嗎?至于PSW中兩個未安排的未PSW.5(F0)和PSW.2(F1),用戶可以視其為普通存儲元(bit位)而單獨使用,例如在編程是用來存放某些二態(tài)信息。10.內部RAM低128B從功能和用途方面,可劃分為哪三個區(qū)域?答案:工作存放器區(qū)、位尋址區(qū)、堆棧和數(shù)據(jù)緩沖區(qū)11.8051內部RAM有幾組工作存放器?每組工作存放器有幾個工作存放器?存放器組的選擇由什么決定?答案:0~1FH為四組工作存放器區(qū),存放器組的選擇由PSW中的RS1、RS0兩位決定,每組有8個工作存放器R0~R7。12.什么是特殊功能存放器?分布在哪里?答案:8051內部的I/O口鎖存器以及定時器、串行口、中斷等各種控制積存器和狀態(tài)積存器都稱為特殊功能積存器。分布在80H~FFH的地址空間。13.8051的外部RAM和I/O口是如何編址的?其尋址空間在哪里?答案:是統(tǒng)一編址的,均在64KB的外部數(shù)據(jù)存儲器空間,CPU對它們具有相同的操作功能。14.MCS-51的程序存儲器的尋址空間是多少?如何區(qū)別片內程序存儲器和片外程序存儲器的?答案:為64K字節(jié)。假設接VCC,那么程序PC的值在0至0FFFFH之間時,CPU取指令時訪問內部的程序存儲器,PC的值大于0FFFH時,訪問外部的程序存儲器;假設接VSS,那么內部的程序存儲器被忽略,CPU總是從外部的程序存儲器中取指令。15.8051的位尋址區(qū)在哪里?位尋址空間是多少?答案:內部RAM的20~2FH為位尋址區(qū),這16個單元的每一位〔16*8〕都有一個位地址,它們占據(jù)位地址空間的0~7FH。16.什么是SP?什么是堆棧?答案:SP是堆棧指針,指出棧頂位置。后進先出的緩沖器稱為堆棧。17.8051的堆棧開辟在什么地方?其堆棧指針是什么?復位后堆棧指針初值是多少?一般將SP設置為多少?答案:堆棧設在30~7FH的范圍內。SP是堆棧指針。復位后是07H。一般設置為6FH。18.8051的數(shù)據(jù)緩沖區(qū)一般在什么地方?19.在計算機中,為什么要采用多級結構的存儲器系統(tǒng)?它的應用是建立在程序的什么特性之上的?答案:為了緩解主存儲器讀寫速度慢,不能滿足CPU運行速度需要的矛盾,另一方面又要解決主存儲器容量小,存不下更多規(guī)模更大的程序與更多的數(shù)據(jù)難題,當前計算機系統(tǒng)中,廣泛采用了多級結構的存儲器體系結構,建立在程序運行的局部性原理之上。答案:在內部的0~7FH,除了實際用到的工作存放器、位標志和堆棧區(qū)以外的單元,都可以作為數(shù)據(jù)緩沖器使用,存放輸入的數(shù)據(jù)或運算的結果。第三章MCS-51指令系統(tǒng)

1.什么是指令?什么是指令系統(tǒng)?什么是偽指令?答案:指令是指示計算機執(zhí)行某種操作的命令,指令是以一組二進制碼表示的,稱為機器指令。計算機只能識別和執(zhí)行機器指令。通常把一臺計算機所能執(zhí)行的全部指令的集合稱為指令系統(tǒng)。偽指令也稱為匯編命令,大多數(shù)偽指令匯編時不產生機器語言指令,僅提供匯編控制信息。2.什么是總線?總線有哪些分類?答案:總線是計算機中各個功能部件之間傳送信息的公用通道,是連接各個功能部件并為它們效勞的一組信息傳遞導線,總線可分為單向總線和雙向總線,并行總線和串行總線,假設按傳遞信息的屬性不同,可分為地址總線、數(shù)據(jù)總線和控制總線。3.立即尋址,其操作數(shù)是在存儲器中。這句話是否正確?答案:錯誤。操作數(shù)是在程序存儲器中。4.一條指令通常由哪兩局部組成?指令的操作碼一般有幾種組織方式?各自應用在什么場合?各自的缺點是什么?答案:一條指令由操作碼和操作數(shù)地址碼兩局部組成。對操作碼的組織與編碼有以下三種:5.計算機指令字中要用的操作數(shù)一般來自那些部件?如何在指令中表示這些操作數(shù)的地址?通常使用那些尋址方式?答案:〔1〕CPU內部的同用存放器:給出用到的存放器編號,存放器內容可以是運算用的數(shù)據(jù)或操作數(shù)地址。〔2〕外圍設備〔接口〕中的一個存放器:用設備編號或設備入出端口地址或設備映像地址表示〔3〕內存儲器的一個存儲單元:存儲單元地址尋址方式:立即數(shù)尋址、直接尋址、存放器尋址、存放器間接尋址、變址尋址、相對尋址、基地址尋址、間接尋址、堆棧尋址6.什么是形式地址?簡述對變址尋址、相對尋址、基地址尋址應在指令中給出些什么信息?如何得到相應的實際〔有效〕地址?各自有什么樣的主要用法?答案:表示在指令中的操作數(shù)地址稱為形式地址。〔1〕變址尋址:應在指令中給出一個數(shù)值〔稱為變址偏移量〕及一個存放器〔稱為變址存放器〕的編號。實際地址〔又稱有效地址〕=變址存放器的內容+變址偏移量主要用于處理數(shù)組型數(shù)據(jù)。〔2〕相對尋址:應在指令中給出一個數(shù)值〔稱為相對尋址偏移量〕實際地址〔又稱有效地址〕=程序計數(shù)器PC的內容+相對尋址偏移量主要用于相對轉移指令。〔3〕基地址尋址:應在指令中給出一個存放器〔稱為基址存放器〕的編號。實際地址〔又稱有效地址〕=程序中的地址+基址存放器主要用于多道程序或浮動地址程序定位存儲器空間。答案:存放器尋址:在指令字中直接給出操作數(shù)所在的通用存放器的編號存放器間接尋址:在存放器中給出的不是一個操作數(shù),而是操作數(shù)地址。7.存放器尋址和存放器間接尋址的區(qū)別?說明以下指令中源操作數(shù)采用的尋址方式。MOVR5,R7MOVA,55HMOVA,#55HJMP@A+DPTRMOV30H,CMOVA,@R0MOVXA,@R0存放器尋址方式直接尋址方式立即尋址方式變址尋址方式位尋址方式間接尋址方式間接尋址方式判斷以下各條指令是否正確〔LL1和PROC為標號〕〔1〕MOV@R0,R7〔×〕〔2〕XCHDA,30H〔×〕〔3〕MOVXA,R3〔×〕〔4〕ADDA,R7〔○〕〔5〕SUBR1,R2〔×〕〔6〕ANL36H,#99H〔○〕〔7〕MOVC,ACC.0〔○〕〔8〕ORLP1.0,C〔×〕〔9〕JBC20H.0,LL1〔○〕〔10〕LCALLPROC〔○〕

以下各條指令其源操作數(shù)的尋址方式是什么?各條指令單獨執(zhí)行后,A中的結果是什么?設〔60H〕=35H,〔A〕=19H,〔R0〕=30H,〔30H〕=0FH,〔DPTR〕=2000H,〔2000H〕=AAH,〔2021H〕=23H〔1〕MOVA,#48H〔2〕ADDA,60H〔3〕ANLA,@R0〔4〕XCHDA,@R0〔5〕MOVXA,@DPTR〔6〕MOVA,R0〔7〕MOVCA,@A+DPTR(A)=48H立即尋址〔A〕=4EH直接尋址〔A〕=09H存放器間接尋址〔A〕=1FH,〔30H〕=09H存放器間接尋址〔A〕=0AAH存放器間接尋址〔A〕=30H存放器尋址〔A〕=23H基變址尋址閱讀以下程序段,寫出每條指令執(zhí)行后的結果,并說明此程序段完成什么功能?〔1〕MOVR1,#30H;〔R1〕=MOVA,#64H;〔A〕=ADDA,#47H;〔A〕=DAA;〔A〕=MOV@R1,A;〔R1〕=〔2〕閱讀程序:假設〔A〕=80H,〔R0〕=17H,〔17H〕=34H,執(zhí)行以下程序段后,〔A〕=?ANLA,#17H〔A〕=ORL17H,A〔17H〕=XRLA,@R0〔A〕=CPLA〔A〕=30H64H0ABH11H30H,(30H〕=11H00H34H34H0CBH設(A)=0FH,(R0)=30H內部RAM(30H)=0AH,(31H)=0BH(32H)=0CH請寫出在執(zhí)行各條列指令后,所示單元的內容MOVA,@R0;(A)=

MOV@R0,32H;(30H)=

MOV32H,A;(32H)=

MOVR0,#31H;(R0)=

MOVA,@R0;(A)=第四章匯編語言程序設計

將內部RAM的40H~4FH單元置初值A0H~AFH?!灿醚h(huán)程序〕MOV

R7,#10H

MOV

A,#0A0H

MOV

R0,#40HLOOP:MOV@R0,A

INCA

INCR0

DJNZ

R7,LOOP

RET

MOV

DPTR,#2000H

MOVX

A,@DPTR

XCH

A,B

MOV

DPTR,#3000H

MOVX

A,@DPTR

XCH

A,B

MOVX

@DPTR,A

MOV

DPTR,#2000H

XCH

A,B

MOVX

@DPTR,A

RET

題目:試編程實現(xiàn)外部RAM2000H單元的內容與3000H單元內容互換。

題目:編寫程序,把外部RAM1000H~10FFH區(qū)域內的數(shù)據(jù)逐個搬到從2000H開始的區(qū)域。

MOVDPL,#00HMOVR7,#0FFHLOOP:MOVDPH,#10HMOVXA,@DPTRMOVDPH,#20HMOVX@DPTR,AINCDPL;此題中DPL可公用DJNZR7,LOOPEND題目:分析下面?zhèn)€程序段中指令的執(zhí)行結果(1)MOVSP,#50HMOVA,#0F0HMOVB,#0FHPUSHACC;(SP)=

;(51H)=

PUSHB;(SP)=

;(52H)=

POPB;(SP)=

;(B)=

POPACC;(SP)=

;(A)=

(2)MOVA,#30HMOVB,#0AFHMOVR0,#31HMOV30H,#87HXCHA,R0;(A)=

;(R0)=

SWAPA;(A)=

題目:編寫一循環(huán)程序,求出內部RAM20H單元二進制數(shù)中含"1"的個數(shù),并將結果存入21H單元。

MOV21H,#00HMOVA,20HMOVR7,#08HLOOP:RLCA;左循環(huán)一位,最高位到CJNCNEXT;C為0INC21H;C為1,21H內容+1NEXT:DJNZR7,LOOPEND

題目:編寫一循環(huán)程序,查找內部RAM30H~50H單元中出現(xiàn)FFH個數(shù),并將查找搭結果存入51H單元。MOVR0,#30H;數(shù)據(jù)區(qū)首地址MOVR7,#20H;數(shù)據(jù)個數(shù)MOV51H,#00H;先設只有0個0ffhLOOP:MOVA,@R0INCR0CJNEA,#0FFH,NEXT;比較,不等于0ffh轉NEXT;等于0ffh,繼續(xù)執(zhí)行INC51HNEXT:DJNZR7,LOOPEND

題目:查表程序設計1.用DPTR查表〔查0~9平方表〕1000C083TA:PUSHDPH1002C082PUSHDPL1004902000MOVDPTR,#TAB100793MOVCA,@A+DPTR1008D082POPDPL100AD083POPDPH100C22RETORG2000HTAB:DB00H,01H,04H,09H200000200101200204200309題目:用PC查表〔查0~9平方表〕ORG1000H1000C083TA:ADDA,#01H;#01H為偏移量100283MOVCA,@A+PC100322RET100400DB00H,01H,04H,09H100501END100604100709偏移量=表首地址-〔查表指令下一條指令地址〕=1004H-1003H=01H

題目:循環(huán)程序設計延時50ms程序DEL:MOVR7,#200DEL1:MOVR6,#125DEL2:DJNZR6,DEL2;125*2=250usDJNZR7,DEL1;0.25ms*200=50msRET使用12MHz晶振時,一個機器周期為1us,執(zhí)行DJNZ指令為2us,加其他指令的時間〔250+1+2〕*200+1=50.301ms

題目:計算幾個數(shù)據(jù)的和例題:對內部RAM50h開始的10個無符號數(shù)求和。源程序:ADD1:MOVR7,#10;循環(huán)次數(shù)n=10MOVR3,#0;存放結果的高8位MOVR4,#0;存放結果的低8位MOVR0,#50H;求和的數(shù)據(jù)存放在從內部RAM50h開始的;單元中,。注意:〔50h〕=?不知道LOOP:MOVA,R4;ADDA,@R0;〔R4)+(5?H)→AMOVR4,A;結果送回R4CLRA;ADDCA,R3;把進位位C加到高8位去MOVR3,AINCR0;為下一輪循環(huán)作準備DJNZR7,LOOPEND解釋:

高8位低8位(R3)(R4)+(50h)C(A)MOVA,R4ADDA,@R0MOVR4,ACLRAADDCA,R3MOVR3,A〔50h〕中是什么,不知道,不能用ADDA,#50H

題目:分支程序設計根本分支程序:〔1〕假設〔A〕<14H,轉NEXT,否那么繼續(xù)執(zhí)行〔2〕假設〔A〕≤14H,轉NEXT,否那么繼續(xù)執(zhí)行〔3〕假設〔A〕≥14H,轉NEXT,否那么繼續(xù)執(zhí)行〔4〕假設〔A〕>14H,轉NEXT,否那么繼續(xù)執(zhí)行

〔A〕≤14H相當于〔A〕<15HCJNEA,#15H,LOOPLOOP:JCNEXT……〔A〕>14H相當于〔A〕≥15HCJNEA,#15H,LOOPLOOP:JNCNEXT……CJNEA,#14H,LOOPLOOP:JNCNEXT……CJNEA,#14H,LOOPLOOP:JCNEXT……CJNEA,#data,rel;(A)=#data,繼續(xù)Cy←0(A)>#data,轉Cy←0(A)<#data,轉Cy←1特點:只有<時,Cy←1例1:按下面公式編寫程序,x為無符號數(shù),存在20h單元y存放在21h單元。

ORG0030H MOVA,20HCJNEA,#21H,LOOP1LOOP1:JCNEXT1CJNEA,#40H,LOOP2LOOP2:JNCNEXT2MOVB,#2MULABAJMPNEXT2NEXT1:CPLANEXT2:MOV21H,AEND最終結果存在21h中

題目:分支程序例

題目:分支程序例

從內部RAM22h單元開始存有一個無符號數(shù)數(shù)據(jù)塊,長度n存于21h中。求出數(shù)據(jù)塊中的最小數(shù),存于20h中。ORG0030HMOVR0,#22H;數(shù)據(jù)塊起始地址MOVR1,21H;數(shù)據(jù)個數(shù)nMOV20H,#0FFH;最大數(shù)LOOP:MOVA,@R0;取新數(shù)INCR0;為取下一個新數(shù)作準備CJNEA,20H,LOOP1;與原最大數(shù)比較LOOP1:JNCNEXT;大,原最小數(shù)保存MOV20H,A;小,改變最小數(shù)NEXT:DJNZR1,LOOP;循環(huán)END初始化y<x

y→x取新數(shù)yn-1=0?yyNNENDFRT:MOVA,40H ;取行李重量G放在40H MOVR3,A MOVB,#03H ;M=G×3 MULAB MOVR2,A ;暫存3×G在R2 MOVA,R3 ;取回G CJNEA,#06H,L1 ;G≤5? L1:JCWETC ;是,轉至WETC SUBBA,#05H ;否那么M=3G+2(G-5) RLC A ADDA,R2WETC:MOV41H,A ;最后結果M存41H end

題目:行李計價: 當G≤5,M=G×3;

當G>5,M=G×3+(G-5)×(5-3)

題目:散轉程序設計根據(jù)R7中的內容,轉向各個子程序。R7=0,轉入Prog0R7=1,轉入Prog1R7=2,轉入Prog2……R7=n,轉入Progn

ORG0030HJUMP1:MOVDPTR,#TAB

CLRA

MOVA,R7ADDA,R7AJMP@A+DPTRORG0100HTAB:AJMPProg0AJMPProg1AJMPProg2……*AJMP…即把PC指向子程序的起始地址;*R7x2是AJMP@A+DPTR的機器碼匹配;此處n<127;*如用LJMP@A+DPTR,那么R7x3,程序還要作相應修改。處理0處理1處理nR7=?01n

題目:數(shù)制轉換程序設計例:8位二進制轉換成BCD碼。(用十進制表達的二進制碼〕;程序名:BINBCD1;功能:0~FFH內的二進制數(shù)轉換為BCD數(shù);入口:A存要轉換的二進制數(shù);出口:R0存放BCD數(shù)百、十、個位數(shù)的地址BINBCD1:MOVB,#100DIVABMOV@R0,AINCR0MOVA,#10XCHA,B;(A)=原〔B〕,(B)=10DIVABMOV@R0,AINCR0XCHABMOV@R0,ARET

題目:設內部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,請注釋每條指令執(zhí)行后的結果

MOVR0,#30H;(R0)=

MOVA,@R0;(A)=

MOVR1,A;(R1)=

MOVB,R1;(B)=

MOV@R1,P1;(5AH)=

MOVA,P1;(A)=

MOV40H,#20H;(40H)=

MOV30H,40H;(30H)=

題目:閱讀程序,指出程序功能MOVR0,#31HMOVR3,#3MOVR1,#00HMOVR2,#00HLOOP:MOVXA,@R0;取一個加數(shù)ADDCA,R2;單字節(jié)數(shù)MOVR2,A;和低位送R2JNCLOOP1;無進位轉移INCR1;有進位高位加1LOOP1:INCR0;指向下一單元DJNZR3,LOOP;次數(shù)減1,不為0轉移功能:存儲在外部數(shù)據(jù)存儲器31H開始的3個字節(jié)數(shù)相加,結果低字節(jié)送R2,高字節(jié)送R1。第五章MCS-51片內接口

1.通用可編程接口的作用是什么?各自的功能是什么?

答案:〔1〕命令存放器:存放CPU發(fā)來的控制命令?!?〕狀態(tài)存放器:供CPU通過讀操作來了解設備的運行狀態(tài)?!?〕數(shù)據(jù)緩沖器:解決CPU與輸入輸出設備運行速度不匹配的矛盾?!?〕處理中斷請求、屏蔽和判優(yōu)等邏輯線路,外設可申請中斷,CPU可屏蔽中斷及判斷優(yōu)先級。3.計算機中有哪些常用的輸入輸出控制方式?各自的優(yōu)缺點是什么?2.開中斷,關中斷,中斷屏蔽是何含義?他們的作用是什么?答案:開中斷:中斷允許觸發(fā)器置“1〞,關中斷:中斷允許觸發(fā)器清“0〞中斷屏蔽:中斷屏蔽觸發(fā)器置1答案:〔1〕程序直接控制方式指在用戶程序中直接使用I/O指令完成輸入輸出操作,它是由CPU通過查詢設備的運行狀態(tài),來控制數(shù)據(jù)傳送過程。缺點:嚴重影響系統(tǒng)運行性能?!?〕程序中斷傳送方式由被讀寫的設備主動“報告〞CPU它是否已進入準備好狀態(tài),這樣,CPU就不必花費時間去循環(huán)測試,大大解脫了CPU在執(zhí)行輸入/輸出過程中的負擔,從而提高了系統(tǒng)的總體運行性能〔3〕直接存儲器存取方式主要用于快速設備和主存儲器成批交換數(shù)據(jù)的場合,把數(shù)據(jù)的傳輸過程交由一塊專用的接口卡〔DMA接口〕來控制,讓DMA卡代替CPU控制在快速設備與主存儲器之間直接傳輸數(shù)據(jù),每傳輸一個數(shù)據(jù)只需一個總線周期即可?!?〕I/O通道控制方式使用附屬于CPU的、專用于處理I/O操作的處理器〔通道〕協(xié)助CPU完成輸入輸出操作的運行方式。

〔5〕外圍處理機輸入/出方式主要用于大型高性能的計算機系統(tǒng)中,是使用微、小型通用計算機協(xié)助處理機完成輸入輸出操作。4.簡述一次中斷處理的完整過程?答案:〔1〕中斷請求:是由中斷源發(fā)出并送給CPU的控制信號,由中斷源設備通過置“1〞設置在接口卡上的中斷觸發(fā)器完成。中斷屏蔽觸發(fā)器置“1〞,表示要屏蔽該設備的中斷請求〔2〕中斷響應條件:當CPU接到中斷請求信號時,如果下面幾個條件都具備,就會響應中斷請求。允許中斷〔允許中斷觸發(fā)器為“1〞狀態(tài)〕。CPU結束一條指令的執(zhí)行過程。新請求的中斷優(yōu)先級更高〔3〕中斷處理包括:①關中斷:保證在此之后的一小段時間內CPU不能響應新的中斷請求。②保存斷點〔PC的內容,程序狀態(tài)字的內容〕③判別中斷源:找到中斷效勞程序的入口地址④開中斷⑤執(zhí)行中斷效勞程序⑥關中斷⑦恢復現(xiàn)場,恢復斷點⑧開中斷⑨返回斷點5.8051應用系統(tǒng)只設置一個中斷優(yōu)先級。定時器T0中斷和串行口的TI中斷同時產生,CPU響應哪一個中斷?為什么?假設CPU已經(jīng)在響應串行口TI中斷,又有T0中斷申請產生,問CPU是否會暫停對TI中斷的響應而轉去響應T0中斷?為什么?答案:響應T0中斷,原因外部中斷INT0最高定時器/計數(shù)器T0外部中斷INT1定時器/計數(shù)器T1串行口的中斷RI/TI。最低會,原因同前。6.8051應用系統(tǒng)有二個中斷優(yōu)先級,其中串行口的RI中斷設置為高優(yōu)先級,定時器T1設置為低優(yōu)先級。假設CPU正在響應RI中斷,現(xiàn)在T1產生中斷,問T1中斷是否可以打斷正在響應的RI中斷?為什么?答案:不能。原因CPU先處理RI高優(yōu)先級中斷8.假設8051的晶振頻率fosc為6MHZ,定時器/計數(shù)器T0工作在工作方式1,要求產生10ms定時,寫出定時器的方式控制字和計數(shù)初值〔分別寫出TH0與TL0值〕。7.設8031晶振頻率fosc為6MHZ,利用定時器T0方式2,產生500ms定時。使P1。0每隔500ms產生一次跳變?!布摧敵鲋芷跒?ms的方波?!尘帉懚〞r器T0的初始化程序和方波實現(xiàn)程序。答案:a=6程序:MOVTMOD,#2

MOVTH0,#6MOVTL0,#6SETBTR0MOVIE,#82HCPLP1.0RET答案:TMOD:#01H;TH0:3CH;TL0:0B0H方式0:a=213-T*fosc/12高8位低5位0000方式1:a=216-T*fosc/12高8位低8位0110方式2:a=28-T*fosc/12相同02209.SBUF的含義及作用是什么?答案:SBUF串行口緩沖存放器是可直接尋址的專用存放器。它對應兩個寄存器,一個發(fā)送存放器,一個接收存放器,CPU寫SBUF,就是修改發(fā)送存放器;讀SBUF,就是讀接收存放器。10.“MCS-51有一個全雙工的同步串行通信接口〞,這句話是否正確?錯誤:有一個全雙工的異步串行通信接口11.MCS-51的串行口有幾種工作方式?答案:串行口控制器SCON有四種工作模式:模式0下,串行口作為同步移位存放器,其波特率是固定的為fosc/12,其中fosc是振蕩器頻率。模式1下,傳輸?shù)氖?0位信息:1位起始位〔0〕,8位數(shù)據(jù)〔低位在先〕和1位停止位〔1〕,由TXD發(fā)送,由RXD接收,波特率可變,取決于定時器1或2的溢出速度。模式2和模式3下,發(fā)送和接收得都是11位數(shù)據(jù):1位起始位〔0〕,8位數(shù)據(jù)〔低位在先〕,1位可編程位〔第9數(shù)據(jù)位〕和1位停止位〔1〕。12.“由于MCS-51的串行口的數(shù)據(jù)發(fā)送和接收緩沖器都是SBUF,所以其串行口不能同時發(fā)送和接收數(shù)據(jù),即不是全雙工的串行口。〞這句話是否正確?如果不正確,錯在哪里?錯誤:串行口可以同時發(fā)送和接收數(shù)據(jù),是全雙工的串行口13.“8051串行口的波特率可以由定時器T0的溢出率決定。〞這句話是否正確?錯誤:由T1的溢出率決定

14.波特率加倍位SMOD的作用是什么?

答案:串行口中模式0下的波特率是固定的為fosc/12,模式2的波特率是fosc/32或fosc/64,取決于POCN存放器的SMOD位的值,假設SMOD=0波特率為fosc/64,假設SMOD=1波特率為fosc/32。15.MCS-51定時器/計數(shù)器的四種工作方式?1.定時工作方式0方式0是13位計數(shù)結構的工作方式,其計數(shù)器由TH0全部8位和TL0的低5位構成。當TL0的低5位計數(shù)溢出時,向TH0進位,而全部13位計數(shù)溢出時,那么向計數(shù)溢出標志位TF0進位。在方式0下,當為計數(shù)工作方式時,計數(shù)值的范圍是1~8192〔213〕當為定時工作方式時,定時時間的計算公式為:〔213-計數(shù)初值〕×晶振周期×12或〔213-計數(shù)初值〕×機器周期其時間單位與晶振周期或機器周期相同〔ms〕。例題:當某單片機系統(tǒng)的外接晶振頻率為6MHz,該系統(tǒng)的最小定時時間為:[213-〔213-1〕]×[1/〔6×106〕]×12=2×10-6=2〔ms〕最大定時時間為:(213-0〕×[1/〔6×106〕]×12=16384×10-6=16384〔ms〕或:最小定時單位×213=16384〔ms〕第六章MCS-51系統(tǒng)擴展1.DMA傳輸方式的優(yōu)點是什么?DMA接口中通常應包括那些邏輯部件?各自的功能是什么?答案:優(yōu)點:速度快,不須CPU參與,滿足高速I/O設備的要求,有利于CPU發(fā)揮效率DMA接口包括:〔1〕主存地址計數(shù)器:存放讀寫主存用到的主存地址?!?〕數(shù)據(jù)數(shù)量計數(shù)器:存放傳送數(shù)據(jù)的數(shù)量。〔3〕DMA的控制/狀態(tài)邏輯,用于修改主存地址計數(shù)器和數(shù)據(jù)數(shù)量計數(shù)器,指定傳送功能,協(xié)調CPU和DMA信號的配合與同步?!?〕DMA請求觸發(fā)器:接收并記憶設備送來的請求傳送的信號。〔5〕數(shù)據(jù)緩沖存放器:用于存放高速設備與主存之間交換的數(shù)據(jù)?!?〕中斷機構:與通用接口中的中斷邏輯電路的組成完全相同。2.DMA控制傳送一批數(shù)據(jù),從使用總線的角度區(qū)分,有那兩種主要運行方式?各自的優(yōu)缺點是什么?答案:〔1〕獨占總線方式:從傳送第一個字節(jié)開始直到這批數(shù)據(jù)傳輸完成的整個過程,DMA都把住總線不放,使總線只為本DMA使用。缺點:CPU和其它DMA等busmasters都要停止運行,影響系統(tǒng)運行效率?!?〕周期挪用方式優(yōu)點:即實現(xiàn)了I/O傳送,又較好的發(fā)揮了內存和CPU的效率3.解釋以下術語總線周期:通常指的是通過總線完成一次內存讀寫操作或完成一次輸入輸出設備的讀寫操作所必需的時間。同步傳輸控制:〔同步通信:〕在總線上傳送數(shù)據(jù)時,通信雙方使用同一個時鐘信號進行同步。

MOVA,#01HLOOP:MOVP1,AACALLDELYRLASJMPLOOPRETDELY:MOVR1,#50LOOP2:MOVR2,#25;T=2us*2*25*50=5msLOOP1:DJNZR2,LOOP1;6MHZ:2us12MHZ:1usDJNZR1,LOOP2RET

4.在8031的P1口接8個共陰極LED顯示器,請編程實現(xiàn)每隔5ms點亮一個LED顯示器,循環(huán)點亮8個LED,從P1.0所接LED開始點亮,同一時刻只有一個LED亮。設fosc=6MHZ.,要求:延時用軟件實現(xiàn),延時程序DELAY為子程序,并畫出接線圖。5.用三片6264構成單片機的數(shù)據(jù)存儲區(qū),地址譯碼采用全地址譯碼法。6.使用定時/計數(shù)器0以工作方式2實現(xiàn)定時,在P1.0輸出周期為200μs的連續(xù)方波。晶振頻率fosc=6MH。求計數(shù)初值,方式控制字,編制相應程序.(查詢方式)計數(shù)初值X=256-50=206=0CEHTMOD=02HMOVIE,#00HMOVTMOD#02HMOVTH0,#0CEHMOVTL0,#0CEHSETTR0LOOP:JBCTF0,LOOP1AJMPLOOPLOOP1:CPLP1.0AJMPLOOP7.數(shù)據(jù)通信的傳輸方式?答案:常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。單工方式:數(shù)據(jù)僅按一個固定方向傳送。因而這種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡單系統(tǒng)間的數(shù)據(jù)采集。半雙工方式:數(shù)據(jù)可實現(xiàn)雙向傳送,但不能同時進行,實際的應用采用某種協(xié)議實現(xiàn)收/發(fā)開關轉換。全雙工方式:允許雙方同時進行數(shù)據(jù)雙向傳送,但一般全雙工傳輸方式的線路和設備較復雜。多工方式:以上三種傳輸方式都是用同一線路傳輸一種頻率信號,為了充分地利用線路資源,可通過使用多路復用器或多路集線器,采用頻分、時分或碼分復用技術,即可實現(xiàn)在同一線路上資源共享功能,我們盛之為多工傳輸方式。8.串行數(shù)據(jù)通信的傳輸速率?答案:串行數(shù)據(jù)傳輸速率有兩個概念,即每秒轉送的位數(shù)bps〔Bitpersecond〕和每秒符號數(shù)—波特率〔Bandrate〕,在具有調制解調器的通信中,波特率與調制速率有關。MCS-51的串行口和控制存放器串行數(shù)據(jù)通信兩種形式異步通信:在這種通信方式中,接收器和發(fā)送器有各自的時鐘,它們的工作是非同步的,異步通信用一幀來表示一個字符,其內容如下:一個起始位,僅接著是假設干個數(shù)據(jù)位,圖2是傳輸45H的數(shù)據(jù)格式。同步通信:同步通信格式中,發(fā)送器和接收器由同一個時鐘源控制,為了克服在異步通信中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時間,在要求傳送數(shù)據(jù)量較大的場合,速度就慢得多。同步傳輸方式去掉了這些起始位和停止位,只在傳輸數(shù)據(jù)塊時先送出一個同步頭〔字符〕標志即可。同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢。但同步傳輸方式也有其缺點,即它必須要用一個時鐘來協(xié)調收發(fā)器的工作,所以它的設備也較復雜。第七章單片機及應用設計實例1.設某單片機系統(tǒng)的外接晶振頻率為6MHz,使用定時器1以方式0產生周期為500ms的等寬正方波連續(xù)脈沖,并由P1.0輸出。以查詢方式完成。解題:計算計數(shù)初值欲產生500ms的等寬正方波脈沖,只需在P1.0端以250ms為周期交替輸出上下電平即可實現(xiàn),為此定時時間應為250ms。使用6MHz晶振,根據(jù)上例的計算,可知一個機器周期為2ms。方式0為13位計數(shù)結構。設待求的計數(shù)初值為X,那么:〔213-X〕×2×10-6=250×10-6求解得:X=213-〔250÷2〕=8067。十六進制表示,高8位為FCH,放入TH1,即TH1=FCH;低5位為03H。放入TL1,即TL1=03H。由定時器控制存放器TCON中的TR1位控制定時的啟動和停止TR1=1啟動,TR1=0停止。程序設計:MOVTMOD,#00H;設置T1為工作方式0MOVTH1,#OFCH;設置計數(shù)初值MOVTL1,#03HMOVIE,#00H;禁止中斷LOOP:SETBTR1;啟動定時JBCTF1,LOOP1;查詢計數(shù)溢出AJMPLOOPLOOP1:MOVTH1,#FCH;重新設置計數(shù)初值MOVTL1,#03HCLRTF1;計數(shù)溢出標志位清0CPLP1.0;輸出取反AJMPLOOP;重復循環(huán)2.定時器/計數(shù)器與中斷綜合應用舉例題(1):時鐘計時程序設計。MCS-51單片機實現(xiàn)時鐘計時顯示的根本方法①首先要計算計數(shù)初值時鐘計時的關鍵問題是秒的產生,因為秒是最小時鐘單位,但使用MMCS-51的定時器/計數(shù)器進行定時,即使按工作方式1,其最大定時時間也只能到達131毫秒,離1秒還差好遠。為此,我們把秒計時用硬件定時和軟件計數(shù)相結合的方法實現(xiàn),即:把定時器的定時時間定為125毫秒,這樣當計數(shù)溢出8次就可得到1秒,而8次計數(shù)可用軟件方法實現(xiàn)。為得到125ms定時,我們可使用定時器/計數(shù)器0,以工作方式1進行,當設定單片機為6MHz晶振,設計數(shù)初值為X,那么有如下等式:〔216-X〕×2us=125000us計算得計數(shù)初值X=3036,二進制表示為,十六進制表示為0BCDH。②定時器定時采用中斷方式完成,以便于通過中斷效勞程序進行溢出次數(shù)〔每次125毫秒〕的累計,計滿8次即得到秒計時。③通過在程序中的數(shù)值累加和數(shù)值比較來實現(xiàn)從秒到分和從分到時的計時④設置時鐘顯示及顯示緩沖區(qū)假定時鐘時間在六位LED數(shù)碼管〔LED5~LED0〕上進行顯示〔時、分、秒各占兩位〕。為此,要在內部RAM中設置顯示緩沖區(qū),共6個單元〔79H~7EH〕,與數(shù)碼管的對應關系為:LED5→7EH、LED4→7DH、LED3→7CH、LED2→7BH、LED1→7AH、LED0→79H。即顯示緩沖區(qū)從左向右依次存放時、分、秒的數(shù)值。⑤假定已有LED顯示程序為SMXS可供調用

ORG8000HSTART:AJMPMAINORG800BHAJMPPITOORG8100HMAIN:MOVSP,#60H;確立堆棧區(qū)MOVR0,#79H;顯示緩沖區(qū)首地址MOVR7,#06H;顯示位數(shù)ML1:MOV@R0,#00H;顯示緩沖單元清0INCR0DJNZR7,ML1MOVTMOD,#01H;定時器0,工作方式1MOVTL0,#0CDH;裝計數(shù)器初值MOVTH0,#0BH

SETB8CH;TR0置1,定時開始SETBAFH;EA置1,中斷總允許SETBA9H;ET0置1,定時器0中斷允許MOV30H,#08H;要求的計數(shù)溢出次數(shù),即循環(huán)次數(shù)ML0:LCALLSMXS;調用顯示子程序SJMPML0PITO:PUSHPSW;中斷效勞程序,現(xiàn)場保護PUSHACCSETBPSW.3;RS1RS0=01,選1組通用存放器MOVTL0,#0CDH;計數(shù)器重新加載MOVTH0,#0BH

溫馨提示

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

評論

0/150

提交評論