版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)原理及應(yīng)用
練習(xí)題第一章根底知識(shí)第二章MCS-51結(jié)構(gòu)及引腳第三章MCS-51指令系統(tǒng)第四章匯編語言程序設(shè)計(jì)第五章MCS-51片內(nèi)接口第六章MCS-51系統(tǒng)擴(kuò)展第七章單片及應(yīng)用設(shè)計(jì)實(shí)例第一章根底知識(shí)
1.寫出-120的原碼、反碼、補(bǔ)碼的16進(jìn)制值。答案:120=1111000B120-120原碼01111000B〔78H〕11111000〔F8H〕反碼01111000B〔78H〕10000111〔87H〕補(bǔ)碼01111000B〔78H〕10001000〔88H〕2.十進(jìn)制數(shù)105,化成二進(jìn)制數(shù)是__________,化成十六進(jìn)制數(shù)是__________。
答案:01101001,693.十進(jìn)制數(shù)-43,在八位計(jì)算機(jī)中的表示__________。答案:101010114.將八進(jìn)制數(shù)75.615轉(zhuǎn)換成二進(jìn)制數(shù)是—————。
答案:111101.110001101
6.將十進(jìn)制數(shù)0.6875轉(zhuǎn)換成二進(jìn)制數(shù)是————。答案:0.10115.將十六進(jìn)制數(shù)BA4.5轉(zhuǎn)換為二進(jìn)制數(shù)是______。答案7.與二進(jìn)制01010100對(duì)應(yīng)的十進(jìn)制數(shù)是————。
答案:84第二章MCS-51結(jié)構(gòu)及引腳
1.什么是單片機(jī)?其主要特點(diǎn)是什么?答案:?jiǎn)纹瑱C(jī)具有體積小、可靠性高、控制功能強(qiáng)、使用方便、性能價(jià)格比高、容易產(chǎn)品化等特點(diǎn)。2.MCS-51系列的典型產(chǎn)品8051、8751和8031的區(qū)別是什么?答案:8051、8751和8031均為8位單片機(jī),其內(nèi)部結(jié)構(gòu)是根本相同的。其不同為:8051內(nèi)部有4KBROM,8751內(nèi)部有4KBEPROM,而8031內(nèi)部無程序存儲(chǔ)器。3.單片機(jī)主要應(yīng)用在什么領(lǐng)域?答案:單片機(jī)主要應(yīng)用在:智能儀表、機(jī)電一體化、實(shí)時(shí)控制、分布式多機(jī)系統(tǒng)、家用電器等,對(duì)各個(gè)行業(yè)的技術(shù)改造和產(chǎn)品的更新?lián)Q代起重要的推動(dòng)作用。4.單片機(jī)包括哪兩種復(fù)位方式?在單片機(jī)應(yīng)用系統(tǒng)中為何需要系統(tǒng)復(fù)位?答案:單片機(jī)可通過上電自動(dòng)復(fù)位和人工復(fù)位,使CPU和系統(tǒng)中的其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。答案:64K字節(jié)程序存儲(chǔ)器空間〔0-0FFFFH〕立即尋址和基存放器加變址存放器間接尋址256字節(jié)內(nèi)部RAM空間〔0-0FFH〕、〔00-7FH〕存放器間接尋址和直接尋址,〔80-8FH〕存放器間接尋址128字節(jié)內(nèi)部特殊功能存放器空間〔80-0FFH〕直接尋址,位尋址空間〔0-0FFH〕位尋址64K字節(jié)數(shù)據(jù)存儲(chǔ)器空間〔0-0FFFFH〕存放器間接尋址5.什么是指令周期?8051的指令周期一般由幾個(gè)機(jī)器周期構(gòu)成?答案:CPU取出一條指令至該指令執(zhí)行完所需要的時(shí)間稱為指令周期。大多數(shù)8051指令執(zhí)行時(shí)間為一個(gè)機(jī)器周期或兩個(gè)機(jī)器周期。6.8051的一個(gè)機(jī)器周期包括幾個(gè)狀態(tài)、幾個(gè)時(shí)鐘周期〔振蕩器頻率〕?機(jī)器周期與時(shí)鐘周期〔振蕩器頻率〕的關(guān)系是怎樣的?答案:一個(gè)機(jī)器周期由六個(gè)狀態(tài)組成,每個(gè)狀態(tài)為二個(gè)時(shí)鐘周期,即一個(gè)機(jī)器周期由六個(gè)狀態(tài)構(gòu)成,所以一個(gè)機(jī)器周期T=12/f0sc7.MCS-51的存儲(chǔ)器空間分為哪些局部〔五個(gè)獨(dú)立的存儲(chǔ)空間的劃分〕?各空間的尋址范圍、尋址方式是什么?8.片內(nèi)低端128字節(jié)的數(shù)據(jù)空間能用采存放和執(zhí)行程序嗎?它們究竟有什么用途?答案:能存放,但不能執(zhí)行!片內(nèi)數(shù)據(jù)'RAM用處非常大,大到離了它幾乎無法執(zhí)行指令的地步!只要定義為“數(shù)據(jù)存儲(chǔ)”的空間;無論位于片內(nèi)還是片外,肯定不能執(zhí)行指令,因?yàn)槌绦蚩臻g的地址選通信號(hào)(PSEN)根本就沒接到這里來!但是,若把程序代碼當(dāng)微普通數(shù)據(jù)放人數(shù)據(jù)區(qū)暫存(注意,僅僅是存放?。┮矝]什么不可以,只是別試圖運(yùn)行它,除非把PSEN選通信號(hào)預(yù)先接到數(shù)據(jù)存儲(chǔ)器芯片的片選端上。可真要如此接線,此數(shù)據(jù)空間的性質(zhì)也就演變成為程序空間了。片內(nèi)低端128字節(jié)的數(shù)據(jù)RAM分為3個(gè)地址區(qū)間,各有不同用途,請(qǐng)參見圖1-1。但也可作為普通寄存器使用,其中:字節(jié)地址00H~1FH——分配給4組通用寄存器,每組寄存器名稱相同,都是R0~R7;4組Rn不能同時(shí)使用,當(dāng)前選擇使用哪一組Rn,要由PSW的RS1和RS0兩位來決定。字節(jié)地址20H~2FH——既可作為普通的字節(jié)存放器,也可作為位尋址區(qū),每個(gè)字節(jié)均可分為8個(gè)可位尋址的存儲(chǔ)元〔bit,位〕,此區(qū)間128個(gè)存儲(chǔ)元按位另外統(tǒng)一編址〔即位地址〕,分別從00H~7FH,常用來存放實(shí)際控制中的各種狀態(tài)信息。字節(jié)地址30H~7FH——普通的字節(jié)存放器,常用來存放臨時(shí)數(shù)據(jù),又稱數(shù)據(jù)緩沖區(qū)。其中最高端的假設(shè)干字節(jié)常用于教學(xué)開發(fā)機(jī)各LED數(shù)碼管的數(shù)據(jù)緩沖區(qū),配合監(jiān)控程序中的顯示模塊使用。例如江蘇啟東廠的教學(xué)開發(fā)機(jī)就是將7EH~79H這6個(gè)存儲(chǔ)單元當(dāng)做LED顯示緩沖區(qū),無論用戶,預(yù)制內(nèi)容是BGD碼還是七段代碼,都可以在監(jiān)控程序中找到對(duì)應(yīng)的顯示模塊,通過調(diào)用來完成用戶所需的數(shù)值顯示。片內(nèi)高端l28字節(jié)的RAM區(qū)只有21個(gè)字節(jié)有效,這21個(gè)字節(jié)既有地址,又有各自獨(dú)特的名稱,且用途各異,因此稱為特殊功能存放器〔SFR〕空間,其中凡字節(jié)地址能被8整除的SFR均可實(shí)現(xiàn)位尋址,其也有獨(dú)立的位地址,且編號(hào)規(guī)律與低端位尋址區(qū)不同,與各自所在SFR字節(jié)地址相關(guān)。9.程序狀態(tài)字PSW中各個(gè)狀態(tài)位是從哪里得到的?其中兩個(gè)未安排的自定義位(PSW.5和PSW.2)用戶能任意使用嗎?答案:PSW又稱標(biāo)志寄存器,主要用來存放指令執(zhí)行過程中產(chǎn)生的各種特殊信息,這些信息分別來自于:PSW.7(C標(biāo)志)——來自運(yùn)算器最近一次算術(shù)運(yùn)算操作,表示運(yùn)算結(jié)果有無進(jìn)(借)位?PSW.6(AC標(biāo)志)——來自運(yùn)算器最近一次算術(shù)運(yùn)算操作,表示運(yùn)算結(jié)果的低4位與高4位之間有無進(jìn)位?PSW.4和PSW.3(工作寄存器選擇)——來自用戶指令,由用戶指定當(dāng)前即將選用哪組通用寄存器?PSW.2(OV標(biāo)志)——來自運(yùn)算器最近一次算術(shù)運(yùn)算操作,表示運(yùn)算結(jié)果有無溢出?PSW.0(P標(biāo)志)——來自最近一次涉及對(duì)累加器A的操作指令(包括傳送操作),表示操作后A中的數(shù)據(jù)有奇數(shù)個(gè)“1”嗎?至于PSW中兩個(gè)未安排的未PSW.5(F0)和PSW.2(F1),用戶可以視其為普通存儲(chǔ)元(bit位)而單獨(dú)使用,例如在編程是用來存放某些二態(tài)信息。10.內(nèi)部RAM低128B從功能和用途方面,可劃分為哪三個(gè)區(qū)域?答案:工作存放器區(qū)、位尋址區(qū)、堆棧和數(shù)據(jù)緩沖區(qū)11.8051內(nèi)部RAM有幾組工作存放器?每組工作存放器有幾個(gè)工作存放器?存放器組的選擇由什么決定?答案:0~1FH為四組工作存放器區(qū),存放器組的選擇由PSW中的RS1、RS0兩位決定,每組有8個(gè)工作存放器R0~R7。12.什么是特殊功能存放器?分布在哪里?答案:8051內(nèi)部的I/O口鎖存器以及定時(shí)器、串行口、中斷等各種控制積存器和狀態(tài)積存器都稱為特殊功能積存器。分布在80H~FFH的地址空間。13.8051的外部RAM和I/O口是如何編址的?其尋址空間在哪里?答案:是統(tǒng)一編址的,均在64KB的外部數(shù)據(jù)存儲(chǔ)器空間,CPU對(duì)它們具有相同的操作功能。14.MCS-51的程序存儲(chǔ)器的尋址空間是多少?如何區(qū)別片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器的?答案:為64K字節(jié)。假設(shè)接VCC,那么程序PC的值在0至0FFFFH之間時(shí),CPU取指令時(shí)訪問內(nèi)部的程序存儲(chǔ)器,PC的值大于0FFFH時(shí),訪問外部的程序存儲(chǔ)器;假設(shè)接VSS,那么內(nèi)部的程序存儲(chǔ)器被忽略,CPU總是從外部的程序存儲(chǔ)器中取指令。15.8051的位尋址區(qū)在哪里?位尋址空間是多少?答案:內(nèi)部RAM的20~2FH為位尋址區(qū),這16個(gè)單元的每一位〔16*8〕都有一個(gè)位地址,它們占據(jù)位地址空間的0~7FH。16.什么是SP?什么是堆棧?答案:SP是堆棧指針,指出棧頂位置。后進(jìn)先出的緩沖器稱為堆棧。17.8051的堆棧開辟在什么地方?其堆棧指針是什么?復(fù)位后堆棧指針初值是多少?一般將SP設(shè)置為多少?答案:堆棧設(shè)在30~7FH的范圍內(nèi)。SP是堆棧指針。復(fù)位后是07H。一般設(shè)置為6FH。18.8051的數(shù)據(jù)緩沖區(qū)一般在什么地方?19.在計(jì)算機(jī)中,為什么要采用多級(jí)結(jié)構(gòu)的存儲(chǔ)器系統(tǒng)?它的應(yīng)用是建立在程序的什么特性之上的?答案:為了緩解主存儲(chǔ)器讀寫速度慢,不能滿足CPU運(yùn)行速度需要的矛盾,另一方面又要解決主存儲(chǔ)器容量小,存不下更多規(guī)模更大的程序與更多的數(shù)據(jù)難題,當(dāng)前計(jì)算機(jī)系統(tǒng)中,廣泛采用了多級(jí)結(jié)構(gòu)的存儲(chǔ)器體系結(jié)構(gòu),建立在程序運(yùn)行的局部性原理之上。答案:在內(nèi)部的0~7FH,除了實(shí)際用到的工作存放器、位標(biāo)志和堆棧區(qū)以外的單元,都可以作為數(shù)據(jù)緩沖器使用,存放輸入的數(shù)據(jù)或運(yùn)算的結(jié)果。第三章MCS-51指令系統(tǒng)
1.什么是指令?什么是指令系統(tǒng)?什么是偽指令?答案:指令是指示計(jì)算機(jī)執(zhí)行某種操作的命令,指令是以一組二進(jìn)制碼表示的,稱為機(jī)器指令。計(jì)算機(jī)只能識(shí)別和執(zhí)行機(jī)器指令。通常把一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部指令的集合稱為指令系統(tǒng)。偽指令也稱為匯編命令,大多數(shù)偽指令匯編時(shí)不產(chǎn)生機(jī)器語言指令,僅提供匯編控制信息。2.什么是總線?總線有哪些分類?答案:總線是計(jì)算機(jī)中各個(gè)功能部件之間傳送信息的公用通道,是連接各個(gè)功能部件并為它們效勞的一組信息傳遞導(dǎo)線,總線可分為單向總線和雙向總線,并行總線和串行總線,假設(shè)按傳遞信息的屬性不同,可分為地址總線、數(shù)據(jù)總線和控制總線。3.立即尋址,其操作數(shù)是在存儲(chǔ)器中。這句話是否正確?答案:錯(cuò)誤。操作數(shù)是在程序存儲(chǔ)器中。4.一條指令通常由哪兩局部組成?指令的操作碼一般有幾種組織方式?各自應(yīng)用在什么場(chǎng)合?各自的缺點(diǎn)是什么?答案:一條指令由操作碼和操作數(shù)地址碼兩局部組成。對(duì)操作碼的組織與編碼有以下三種:5.計(jì)算機(jī)指令字中要用的操作數(shù)一般來自那些部件?如何在指令中表示這些操作數(shù)的地址?通常使用那些尋址方式?答案:〔1〕CPU內(nèi)部的同用存放器:給出用到的存放器編號(hào),存放器內(nèi)容可以是運(yùn)算用的數(shù)據(jù)或操作數(shù)地址?!?〕外圍設(shè)備〔接口〕中的一個(gè)存放器:用設(shè)備編號(hào)或設(shè)備入出端口地址或設(shè)備映像地址表示〔3〕內(nèi)存儲(chǔ)器的一個(gè)存儲(chǔ)單元:存儲(chǔ)單元地址尋址方式:立即數(shù)尋址、直接尋址、存放器尋址、存放器間接尋址、變址尋址、相對(duì)尋址、基地址尋址、間接尋址、堆棧尋址6.什么是形式地址?簡(jiǎn)述對(duì)變址尋址、相對(duì)尋址、基地址尋址應(yīng)在指令中給出些什么信息?如何得到相應(yīng)的實(shí)際〔有效〕地址?各自有什么樣的主要用法?答案:表示在指令中的操作數(shù)地址稱為形式地址?!?〕變址尋址:應(yīng)在指令中給出一個(gè)數(shù)值〔稱為變址偏移量〕及一個(gè)存放器〔稱為變址存放器〕的編號(hào)。實(shí)際地址〔又稱有效地址〕=變址存放器的內(nèi)容+變址偏移量主要用于處理數(shù)組型數(shù)據(jù)。〔2〕相對(duì)尋址:應(yīng)在指令中給出一個(gè)數(shù)值〔稱為相對(duì)尋址偏移量〕實(shí)際地址〔又稱有效地址〕=程序計(jì)數(shù)器PC的內(nèi)容+相對(duì)尋址偏移量主要用于相對(duì)轉(zhuǎn)移指令?!?〕基地址尋址:應(yīng)在指令中給出一個(gè)存放器〔稱為基址存放器〕的編號(hào)。實(shí)際地址〔又稱有效地址〕=程序中的地址+基址存放器主要用于多道程序或浮動(dòng)地址程序定位存儲(chǔ)器空間。答案:存放器尋址:在指令字中直接給出操作數(shù)所在的通用存放器的編號(hào)存放器間接尋址:在存放器中給出的不是一個(gè)操作數(shù),而是操作數(shù)地址。7.存放器尋址和存放器間接尋址的區(qū)別?說明以下指令中源操作數(shù)采用的尋址方式。MOVR5,R7MOVA,55HMOVA,#55HJMP@A+DPTRMOV30H,CMOVA,@R0MOVXA,@R0存放器尋址方式直接尋址方式立即尋址方式變址尋址方式位尋址方式間接尋址方式間接尋址方式判斷以下各條指令是否正確〔LL1和PROC為標(biāo)號(hào)〕〔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ù)的尋址方式是什么?各條指令單獨(dú)執(zhí)行后,A中的結(jié)果是什么?設(shè)〔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í)行后的結(jié)果,并說明此程序段完成什么功能?〔1〕MOVR1,#30H;〔R1〕=MOVA,#64H;〔A〕=ADDA,#47H;〔A〕=DAA;〔A〕=MOV@R1,A;〔R1〕=〔2〕閱讀程序:假設(shè)〔A〕=80H,〔R0〕=17H,〔17H〕=34H,執(zhí)行以下程序段后,〔A〕=?ANLA,#17H〔A〕=ORL17H,A〔17H〕=XRLA,@R0〔A〕=CPLA〔A〕=30H64H0ABH11H30H,(30H〕=11H00H34H34H0CBH設(shè)(A)=0FH,(R0)=30H內(nèi)部RAM(30H)=0AH,(31H)=0BH(32H)=0CH請(qǐng)寫出在執(zhí)行各條列指令后,所示單元的內(nèi)容MOVA,@R0;(A)=
MOV@R0,32H;(30H)=
MOV32H,A;(32H)=
MOVR0,#31H;(R0)=
MOVA,@R0;(A)=第四章匯編語言程序設(shè)計(jì)
將內(nèi)部RAM的40H~4FH單元置初值A(chǔ)0H~AFH。〔用循環(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
題目:試編程實(shí)現(xiàn)外部RAM2000H單元的內(nèi)容與3000H單元內(nèi)容互換。
題目:編寫程序,把外部RAM1000H~10FFH區(qū)域內(nèi)的數(shù)據(jù)逐個(gè)搬到從2000H開始的區(qū)域。
MOVDPL,#00HMOVR7,#0FFHLOOP:MOVDPH,#10HMOVXA,@DPTRMOVDPH,#20HMOVX@DPTR,AINCDPL;此題中DPL可公用DJNZR7,LOOPEND題目:分析下面?zhèn)€程序段中指令的執(zhí)行結(jié)果(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)程序,求出內(nèi)部RAM20H單元二進(jìn)制數(shù)中含"1"的個(gè)數(shù),并將結(jié)果存入21H單元。
MOV21H,#00HMOVA,20HMOVR7,#08HLOOP:RLCA;左循環(huán)一位,最高位到CJNCNEXT;C為0INC21H;C為1,21H內(nèi)容+1NEXT:DJNZR7,LOOPEND
題目:編寫一循環(huán)程序,查找內(nèi)部RAM30H~50H單元中出現(xiàn)FFH個(gè)數(shù),并將查找搭結(jié)果存入51H單元。MOVR0,#30H;數(shù)據(jù)區(qū)首地址MOVR7,#20H;數(shù)據(jù)個(gè)數(shù)MOV51H,#00H;先設(shè)只有0個(gè)0ffhLOOP:MOVA,@R0INCR0CJNEA,#0FFH,NEXT;比較,不等于0ffh轉(zhuǎn)NEXT;等于0ffh,繼續(xù)執(zhí)行INC51HNEXT:DJNZR7,LOOPEND
題目:查表程序設(shè)計(jì)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)程序設(shè)計(jì)延時(shí)50ms程序DEL:MOVR7,#200DEL1:MOVR6,#125DEL2:DJNZR6,DEL2;125*2=250usDJNZR7,DEL1;0.25ms*200=50msRET使用12MHz晶振時(shí),一個(gè)機(jī)器周期為1us,執(zhí)行DJNZ指令為2us,加其他指令的時(shí)間〔250+1+2〕*200+1=50.301ms
題目:計(jì)算幾個(gè)數(shù)據(jù)的和例題:對(duì)內(nèi)部RAM50h開始的10個(gè)無符號(hào)數(shù)求和。源程序:ADD1:MOVR7,#10;循環(huán)次數(shù)n=10MOVR3,#0;存放結(jié)果的高8位MOVR4,#0;存放結(jié)果的低8位MOVR0,#50H;求和的數(shù)據(jù)存放在從內(nèi)部RAM50h開始的;單元中,。注意:〔50h〕=?不知道LOOP:MOVA,R4;ADDA,@R0;〔R4)+(5?H)→AMOVR4,A;結(jié)果送回R4CLRA;ADDCA,R3;把進(jìn)位位C加到高8位去MOVR3,AINCR0;為下一輪循環(huán)作準(zhǔn)備DJNZR7,LOOPEND解釋:
高8位低8位(R3)(R4)+(50h)C(A)MOVA,R4ADDA,@R0MOVR4,ACLRAADDCA,R3MOVR3,A〔50h〕中是什么,不知道,不能用ADDA,#50H
題目:分支程序設(shè)計(jì)根本分支程序:〔1〕假設(shè)〔A〕<14H,轉(zhuǎn)NEXT,否那么繼續(xù)執(zhí)行〔2〕假設(shè)〔A〕≤14H,轉(zhuǎn)NEXT,否那么繼續(xù)執(zhí)行〔3〕假設(shè)〔A〕≥14H,轉(zhuǎn)NEXT,否那么繼續(xù)執(zhí)行〔4〕假設(shè)〔A〕>14H,轉(zhuǎn)NEXT,否那么繼續(xù)執(zhí)行
〔A〕≤14H相當(dāng)于〔A〕<15HCJNEA,#15H,LOOPLOOP:JCNEXT……〔A〕>14H相當(dāng)于〔A〕≥15HCJNEA,#15H,LOOPLOOP:JNCNEXT……CJNEA,#14H,LOOPLOOP:JNCNEXT……CJNEA,#14H,LOOPLOOP:JCNEXT……CJNEA,#data,rel;(A)=#data,繼續(xù)Cy←0(A)>#data,轉(zhuǎn)Cy←0(A)<#data,轉(zhuǎn)Cy←1特點(diǎn):只有<時(shí),Cy←1例1:按下面公式編寫程序,x為無符號(hào)數(shù),存在20h單元y存放在21h單元。
ORG0030H MOVA,20HCJNEA,#21H,LOOP1LOOP1:JCNEXT1CJNEA,#40H,LOOP2LOOP2:JNCNEXT2MOVB,#2MULABAJMPNEXT2NEXT1:CPLANEXT2:MOV21H,AEND最終結(jié)果存在21h中
題目:分支程序例
題目:分支程序例
從內(nèi)部RAM22h單元開始存有一個(gè)無符號(hào)數(shù)數(shù)據(jù)塊,長(zhǎng)度n存于21h中。求出數(shù)據(jù)塊中的最小數(shù),存于20h中。ORG0030HMOVR0,#22H;數(shù)據(jù)塊起始地址MOVR1,21H;數(shù)據(jù)個(gè)數(shù)nMOV20H,#0FFH;最大數(shù)LOOP:MOVA,@R0;取新數(shù)INCR0;為取下一個(gè)新數(shù)作準(zhǔn)備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 ;是,轉(zhuǎn)至WETC SUBBA,#05H ;否那么M=3G+2(G-5) RLC A ADDA,R2WETC:MOV41H,A ;最后結(jié)果M存41H end
題目:行李計(jì)價(jià): 當(dāng)G≤5,M=G×3;
當(dāng)G>5,M=G×3+(G-5)×(5-3)
題目:散轉(zhuǎn)程序設(shè)計(jì)根據(jù)R7中的內(nèi)容,轉(zhuǎn)向各個(gè)子程序。R7=0,轉(zhuǎn)入Prog0R7=1,轉(zhuǎn)入Prog1R7=2,轉(zhuǎn)入Prog2……R7=n,轉(zhuǎn)入Progn
ORG0030HJUMP1:MOVDPTR,#TAB
CLRA
MOVA,R7ADDA,R7AJMP@A+DPTRORG0100HTAB:AJMPProg0AJMPProg1AJMPProg2……*AJMP…即把PC指向子程序的起始地址;*R7x2是AJMP@A+DPTR的機(jī)器碼匹配;此處n<127;*如用LJMP@A+DPTR,那么R7x3,程序還要作相應(yīng)修改。處理0處理1處理nR7=?01n
題目:數(shù)制轉(zhuǎn)換程序設(shè)計(jì)例:8位二進(jìn)制轉(zhuǎn)換成BCD碼。(用十進(jìn)制表達(dá)的二進(jìn)制碼〕;程序名:BINBCD1;功能:0~FFH內(nèi)的二進(jìn)制數(shù)轉(zhuǎn)換為BCD數(shù);入口:A存要轉(zhuǎn)換的二進(jìn)制數(shù);出口:R0存放BCD數(shù)百、十、個(gè)位數(shù)的地址BINBCD1:MOVB,#100DIVABMOV@R0,AINCR0MOVA,#10XCHA,B;(A)=原〔B〕,(B)=10DIVABMOV@R0,AINCR0XCHABMOV@R0,ARET
題目:設(shè)內(nèi)部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,請(qǐng)注釋每條指令執(zhí)行后的結(jié)果
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;取一個(gè)加數(shù)ADDCA,R2;單字節(jié)數(shù)MOVR2,A;和低位送R2JNCLOOP1;無進(jìn)位轉(zhuǎn)移INCR1;有進(jìn)位高位加1LOOP1:INCR0;指向下一單元DJNZR3,LOOP;次數(shù)減1,不為0轉(zhuǎn)移功能:存儲(chǔ)在外部數(shù)據(jù)存儲(chǔ)器31H開始的3個(gè)字節(jié)數(shù)相加,結(jié)果低字節(jié)送R2,高字節(jié)送R1。第五章MCS-51片內(nèi)接口
1.通用可編程接口的作用是什么?各自的功能是什么?
答案:〔1〕命令存放器:存放CPU發(fā)來的控制命令。〔2〕狀態(tài)存放器:供CPU通過讀操作來了解設(shè)備的運(yùn)行狀態(tài)?!?〕數(shù)據(jù)緩沖器:解決CPU與輸入輸出設(shè)備運(yùn)行速度不匹配的矛盾?!?〕處理中斷請(qǐng)求、屏蔽和判優(yōu)等邏輯線路,外設(shè)可申請(qǐng)中斷,CPU可屏蔽中斷及判斷優(yōu)先級(jí)。3.計(jì)算機(jī)中有哪些常用的輸入輸出控制方式?各自的優(yōu)缺點(diǎn)是什么?2.開中斷,關(guān)中斷,中斷屏蔽是何含義?他們的作用是什么?答案:開中斷:中斷允許觸發(fā)器置“1〞,關(guān)中斷:中斷允許觸發(fā)器清“0〞中斷屏蔽:中斷屏蔽觸發(fā)器置1答案:〔1〕程序直接控制方式指在用戶程序中直接使用I/O指令完成輸入輸出操作,它是由CPU通過查詢?cè)O(shè)備的運(yùn)行狀態(tài),來控制數(shù)據(jù)傳送過程。缺點(diǎn):嚴(yán)重影響系統(tǒng)運(yùn)行性能。〔2〕程序中斷傳送方式由被讀寫的設(shè)備主動(dòng)“報(bào)告〞CPU它是否已進(jìn)入準(zhǔn)備好狀態(tài),這樣,CPU就不必花費(fèi)時(shí)間去循環(huán)測(cè)試,大大解脫了CPU在執(zhí)行輸入/輸出過程中的負(fù)擔(dān),從而提高了系統(tǒng)的總體運(yùn)行性能〔3〕直接存儲(chǔ)器存取方式主要用于快速設(shè)備和主存儲(chǔ)器成批交換數(shù)據(jù)的場(chǎng)合,把數(shù)據(jù)的傳輸過程交由一塊專用的接口卡〔DMA接口〕來控制,讓DMA卡代替CPU控制在快速設(shè)備與主存儲(chǔ)器之間直接傳輸數(shù)據(jù),每傳輸一個(gè)數(shù)據(jù)只需一個(gè)總線周期即可?!?〕I/O通道控制方式使用附屬于CPU的、專用于處理I/O操作的處理器〔通道〕協(xié)助CPU完成輸入輸出操作的運(yùn)行方式。
〔5〕外圍處理機(jī)輸入/出方式主要用于大型高性能的計(jì)算機(jī)系統(tǒng)中,是使用微、小型通用計(jì)算機(jī)協(xié)助處理機(jī)完成輸入輸出操作。4.簡(jiǎn)述一次中斷處理的完整過程?答案:〔1〕中斷請(qǐng)求:是由中斷源發(fā)出并送給CPU的控制信號(hào),由中斷源設(shè)備通過置“1〞設(shè)置在接口卡上的中斷觸發(fā)器完成。中斷屏蔽觸發(fā)器置“1〞,表示要屏蔽該設(shè)備的中斷請(qǐng)求〔2〕中斷響應(yīng)條件:當(dāng)CPU接到中斷請(qǐng)求信號(hào)時(shí),如果下面幾個(gè)條件都具備,就會(huì)響應(yīng)中斷請(qǐng)求。允許中斷〔允許中斷觸發(fā)器為“1〞狀態(tài)〕。CPU結(jié)束一條指令的執(zhí)行過程。新請(qǐng)求的中斷優(yōu)先級(jí)更高〔3〕中斷處理包括:①關(guān)中斷:保證在此之后的一小段時(shí)間內(nèi)CPU不能響應(yīng)新的中斷請(qǐng)求。②保存斷點(diǎn)〔PC的內(nèi)容,程序狀態(tài)字的內(nèi)容〕③判別中斷源:找到中斷效勞程序的入口地址④開中斷⑤執(zhí)行中斷效勞程序⑥關(guān)中斷⑦恢復(fù)現(xiàn)場(chǎng),恢復(fù)斷點(diǎn)⑧開中斷⑨返回?cái)帱c(diǎn)5.8051應(yīng)用系統(tǒng)只設(shè)置一個(gè)中斷優(yōu)先級(jí)。定時(shí)器T0中斷和串行口的TI中斷同時(shí)產(chǎn)生,CPU響應(yīng)哪一個(gè)中斷?為什么?假設(shè)CPU已經(jīng)在響應(yīng)串行口TI中斷,又有T0中斷申請(qǐng)產(chǎn)生,問CPU是否會(huì)暫停對(duì)TI中斷的響應(yīng)而轉(zhuǎn)去響應(yīng)T0中斷?為什么?答案:響應(yīng)T0中斷,原因外部中斷INT0最高定時(shí)器/計(jì)數(shù)器T0外部中斷INT1定時(shí)器/計(jì)數(shù)器T1串行口的中斷RI/TI。最低會(huì),原因同前。6.8051應(yīng)用系統(tǒng)有二個(gè)中斷優(yōu)先級(jí),其中串行口的RI中斷設(shè)置為高優(yōu)先級(jí),定時(shí)器T1設(shè)置為低優(yōu)先級(jí)。假設(shè)CPU正在響應(yīng)RI中斷,現(xiàn)在T1產(chǎn)生中斷,問T1中斷是否可以打斷正在響應(yīng)的RI中斷?為什么?答案:不能。原因CPU先處理RI高優(yōu)先級(jí)中斷8.假設(shè)8051的晶振頻率fosc為6MHZ,定時(shí)器/計(jì)數(shù)器T0工作在工作方式1,要求產(chǎn)生10ms定時(shí),寫出定時(shí)器的方式控制字和計(jì)數(shù)初值〔分別寫出TH0與TL0值〕。7.設(shè)8031晶振頻率fosc為6MHZ,利用定時(shí)器T0方式2,產(chǎn)生500ms定時(shí)。使P1。0每隔500ms產(chǎn)生一次跳變?!布摧敵鲋芷跒?ms的方波?!尘帉懚〞r(shí)器T0的初始化程序和方波實(shí)現(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串行口緩沖存放器是可直接尋址的專用存放器。它對(duì)應(yīng)兩個(gè)寄存器,一個(gè)發(fā)送存放器,一個(gè)接收存放器,CPU寫SBUF,就是修改發(fā)送存放器;讀SBUF,就是讀接收存放器。10.“MCS-51有一個(gè)全雙工的同步串行通信接口〞,這句話是否正確?錯(cuò)誤:有一個(gè)全雙工的異步串行通信接口11.MCS-51的串行口有幾種工作方式?答案:串行口控制器SCON有四種工作模式:模式0下,串行口作為同步移位存放器,其波特率是固定的為fosc/12,其中fosc是振蕩器頻率。模式1下,傳輸?shù)氖?0位信息:1位起始位〔0〕,8位數(shù)據(jù)〔低位在先〕和1位停止位〔1〕,由TXD發(fā)送,由RXD接收,波特率可變,取決于定時(shí)器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,所以其串行口不能同時(shí)發(fā)送和接收數(shù)據(jù),即不是全雙工的串行口。〞這句話是否正確?如果不正確,錯(cuò)在哪里?錯(cuò)誤:串行口可以同時(shí)發(fā)送和接收數(shù)據(jù),是全雙工的串行口13.“8051串行口的波特率可以由定時(shí)器T0的溢出率決定。〞這句話是否正確?錯(cuò)誤:由T1的溢出率決定
14.波特率加倍位SMOD的作用是什么?
答案:串行口中模式0下的波特率是固定的為fosc/12,模式2的波特率是fosc/32或fosc/64,取決于POCN存放器的SMOD位的值,假設(shè)SMOD=0波特率為fosc/64,假設(shè)SMOD=1波特率為fosc/32。15.MCS-51定時(shí)器/計(jì)數(shù)器的四種工作方式?1.定時(shí)工作方式0方式0是13位計(jì)數(shù)結(jié)構(gòu)的工作方式,其計(jì)數(shù)器由TH0全部8位和TL0的低5位構(gòu)成。當(dāng)TL0的低5位計(jì)數(shù)溢出時(shí),向TH0進(jìn)位,而全部13位計(jì)數(shù)溢出時(shí),那么向計(jì)數(shù)溢出標(biāo)志位TF0進(jìn)位。在方式0下,當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是1~8192〔213〕當(dāng)為定時(shí)工作方式時(shí),定時(shí)時(shí)間的計(jì)算公式為:〔213-計(jì)數(shù)初值〕×晶振周期×12或〔213-計(jì)數(shù)初值〕×機(jī)器周期其時(shí)間單位與晶振周期或機(jī)器周期相同〔ms〕。例題:當(dāng)某單片機(jī)系統(tǒng)的外接晶振頻率為6MHz,該系統(tǒng)的最小定時(shí)時(shí)間為:[213-〔213-1〕]×[1/〔6×106〕]×12=2×10-6=2〔ms〕最大定時(shí)時(shí)間為:(213-0〕×[1/〔6×106〕]×12=16384×10-6=16384〔ms〕或:最小定時(shí)單位×213=16384〔ms〕第六章MCS-51系統(tǒng)擴(kuò)展1.DMA傳輸方式的優(yōu)點(diǎn)是什么?DMA接口中通常應(yīng)包括那些邏輯部件?各自的功能是什么?答案:優(yōu)點(diǎn):速度快,不須CPU參與,滿足高速I/O設(shè)備的要求,有利于CPU發(fā)揮效率DMA接口包括:〔1〕主存地址計(jì)數(shù)器:存放讀寫主存用到的主存地址?!?〕數(shù)據(jù)數(shù)量計(jì)數(shù)器:存放傳送數(shù)據(jù)的數(shù)量?!?〕DMA的控制/狀態(tài)邏輯,用于修改主存地址計(jì)數(shù)器和數(shù)據(jù)數(shù)量計(jì)數(shù)器,指定傳送功能,協(xié)調(diào)CPU和DMA信號(hào)的配合與同步。〔4〕DMA請(qǐng)求觸發(fā)器:接收并記憶設(shè)備送來的請(qǐng)求傳送的信號(hào)?!?〕數(shù)據(jù)緩沖存放器:用于存放高速設(shè)備與主存之間交換的數(shù)據(jù)?!?〕中斷機(jī)構(gòu):與通用接口中的中斷邏輯電路的組成完全相同。2.DMA控制傳送一批數(shù)據(jù),從使用總線的角度區(qū)分,有那兩種主要運(yùn)行方式?各自的優(yōu)缺點(diǎn)是什么?答案:〔1〕獨(dú)占總線方式:從傳送第一個(gè)字節(jié)開始直到這批數(shù)據(jù)傳輸完成的整個(gè)過程,DMA都把住總線不放,使總線只為本DMA使用。缺點(diǎn):CPU和其它DMA等busmasters都要停止運(yùn)行,影響系統(tǒng)運(yùn)行效率?!?〕周期挪用方式優(yōu)點(diǎn):即實(shí)現(xiàn)了I/O傳送,又較好的發(fā)揮了內(nèi)存和CPU的效率3.解釋以下術(shù)語總線周期:通常指的是通過總線完成一次內(nèi)存讀寫操作或完成一次輸入輸出設(shè)備的讀寫操作所必需的時(shí)間。同步傳輸控制:〔同步通信:〕在總線上傳送數(shù)據(jù)時(shí),通信雙方使用同一個(gè)時(shí)鐘信號(hào)進(jìn)行同步。
MOVA,#01HLOOP:MOVP1,AACALLDELYRLASJMPLOOPRETDELY:MOVR1,#50LOOP2:MOVR2,#25;T=2us*2*25*50=5msLOOP1:DJNZR2,LOOP1;6MHZ:2us12MHZ:1usDJNZR1,LOOP2RET
4.在8031的P1口接8個(gè)共陰極LED顯示器,請(qǐng)編程實(shí)現(xiàn)每隔5ms點(diǎn)亮一個(gè)LED顯示器,循環(huán)點(diǎn)亮8個(gè)LED,從P1.0所接LED開始點(diǎn)亮,同一時(shí)刻只有一個(gè)LED亮。設(shè)fosc=6MHZ.,要求:延時(shí)用軟件實(shí)現(xiàn),延時(shí)程序DELAY為子程序,并畫出接線圖。5.用三片6264構(gòu)成單片機(jī)的數(shù)據(jù)存儲(chǔ)區(qū),地址譯碼采用全地址譯碼法。6.使用定時(shí)/計(jì)數(shù)器0以工作方式2實(shí)現(xiàn)定時(shí),在P1.0輸出周期為200μs的連續(xù)方波。晶振頻率fosc=6MH。求計(jì)數(shù)初值,方式控制字,編制相應(yīng)程序.(查詢方式)計(jì)數(shù)初值X=256-50=206=0CEHTMOD=02HMOVIE,#00HMOVTMOD#02HMOVTH0,#0CEHMOVTL0,#0CEHSETTR0LOOP:JBCTF0,LOOP1AJMPLOOPLOOP1:CPLP1.0AJMPLOOP7.數(shù)據(jù)通信的傳輸方式?答案:常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。單工方式:數(shù)據(jù)僅按一個(gè)固定方向傳送。因而這種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡(jiǎn)單系統(tǒng)間的數(shù)據(jù)采集。半雙工方式:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際的應(yīng)用采用某種協(xié)議實(shí)現(xiàn)收/發(fā)開關(guān)轉(zhuǎn)換。全雙工方式:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送,但一般全雙工傳輸方式的線路和設(shè)備較復(fù)雜。多工方式:以上三種傳輸方式都是用同一線路傳輸一種頻率信號(hào),為了充分地利用線路資源,可通過使用多路復(fù)用器或多路集線器,采用頻分、時(shí)分或碼分復(fù)用技術(shù),即可實(shí)現(xiàn)在同一線路上資源共享功能,我們盛之為多工傳輸方式。8.串行數(shù)據(jù)通信的傳輸速率?答案:串行數(shù)據(jù)傳輸速率有兩個(gè)概念,即每秒轉(zhuǎn)送的位數(shù)bps〔Bitpersecond〕和每秒符號(hào)數(shù)—波特率〔Bandrate〕,在具有調(diào)制解調(diào)器的通信中,波特率與調(diào)制速率有關(guān)。MCS-51的串行口和控制存放器串行數(shù)據(jù)通信兩種形式異步通信:在這種通信方式中,接收器和發(fā)送器有各自的時(shí)鐘,它們的工作是非同步的,異步通信用一幀來表示一個(gè)字符,其內(nèi)容如下:一個(gè)起始位,僅接著是假設(shè)干個(gè)數(shù)據(jù)位,圖2是傳輸45H的數(shù)據(jù)格式。同步通信:同步通信格式中,發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制,為了克服在異步通信中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時(shí)間,在要求傳送數(shù)據(jù)量較大的場(chǎng)合,速度就慢得多。同步傳輸方式去掉了這些起始位和停止位,只在傳輸數(shù)據(jù)塊時(shí)先送出一個(gè)同步頭〔字符〕標(biāo)志即可。同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢(shì)。但同步傳輸方式也有其缺點(diǎn),即它必須要用一個(gè)時(shí)鐘來協(xié)調(diào)收發(fā)器的工作,所以它的設(shè)備也較復(fù)雜。第七章單片機(jī)及應(yīng)用設(shè)計(jì)實(shí)例1.設(shè)某單片機(jī)系統(tǒng)的外接晶振頻率為6MHz,使用定時(shí)器1以方式0產(chǎn)生周期為500ms的等寬正方波連續(xù)脈沖,并由P1.0輸出。以查詢方式完成。解題:計(jì)算計(jì)數(shù)初值欲產(chǎn)生500ms的等寬正方波脈沖,只需在P1.0端以250ms為周期交替輸出上下電平即可實(shí)現(xiàn),為此定時(shí)時(shí)間應(yīng)為250ms。使用6MHz晶振,根據(jù)上例的計(jì)算,可知一個(gè)機(jī)器周期為2ms。方式0為13位計(jì)數(shù)結(jié)構(gòu)。設(shè)待求的計(jì)數(shù)初值為X,那么:〔213-X〕×2×10-6=250×10-6求解得:X=213-〔250÷2〕=8067。十六進(jìn)制表示,高8位為FCH,放入TH1,即TH1=FCH;低5位為03H。放入TL1,即TL1=03H。由定時(shí)器控制存放器TCON中的TR1位控制定時(shí)的啟動(dòng)和停止TR1=1啟動(dòng),TR1=0停止。程序設(shè)計(jì):MOVTMOD,#00H;設(shè)置T1為工作方式0MOVTH1,#OFCH;設(shè)置計(jì)數(shù)初值MOVTL1,#03HMOVIE,#00H;禁止中斷LOOP:SETBTR1;啟動(dòng)定時(shí)JBCTF1,LOOP1;查詢計(jì)數(shù)溢出AJMPLOOPLOOP1:MOVTH1,#FCH;重新設(shè)置計(jì)數(shù)初值MOVTL1,#03HCLRTF1;計(jì)數(shù)溢出標(biāo)志位清0CPLP1.0;輸出取反AJMPLOOP;重復(fù)循環(huán)2.定時(shí)器/計(jì)數(shù)器與中斷綜合應(yīng)用舉例題(1):時(shí)鐘計(jì)時(shí)程序設(shè)計(jì)。MCS-51單片機(jī)實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)顯示的根本方法①首先要計(jì)算計(jì)數(shù)初值時(shí)鐘計(jì)時(shí)的關(guān)鍵問題是秒的產(chǎn)生,因?yàn)槊胧亲钚r(shí)鐘單位,但使用MMCS-51的定時(shí)器/計(jì)數(shù)器進(jìn)行定時(shí),即使按工作方式1,其最大定時(shí)時(shí)間也只能到達(dá)131毫秒,離1秒還差好遠(yuǎn)。為此,我們把秒計(jì)時(shí)用硬件定時(shí)和軟件計(jì)數(shù)相結(jié)合的方法實(shí)現(xiàn),即:把定時(shí)器的定時(shí)時(shí)間定為125毫秒,這樣當(dāng)計(jì)數(shù)溢出8次就可得到1秒,而8次計(jì)數(shù)可用軟件方法實(shí)現(xiàn)。為得到125ms定時(shí),我們可使用定時(shí)器/計(jì)數(shù)器0,以工作方式1進(jìn)行,當(dāng)設(shè)定單片機(jī)為6MHz晶振,設(shè)計(jì)數(shù)初值為X,那么有如下等式:〔216-X〕×2us=125000us計(jì)算得計(jì)數(shù)初值X=3036,二進(jìn)制表示為,十六進(jìn)制表示為0BCDH。②定時(shí)器定時(shí)采用中斷方式完成,以便于通過中斷效勞程序進(jìn)行溢出次數(shù)〔每次125毫秒〕的累計(jì),計(jì)滿8次即得到秒計(jì)時(shí)。③通過在程序中的數(shù)值累加和數(shù)值比較來實(shí)現(xiàn)從秒到分和從分到時(shí)的計(jì)時(shí)④設(shè)置時(shí)鐘顯示及顯示緩沖區(qū)假定時(shí)鐘時(shí)間在六位LED數(shù)碼管〔LED5~LED0〕上進(jìn)行顯示〔時(shí)、分、秒各占兩位〕。為此,要在內(nèi)部RAM中設(shè)置顯示緩沖區(qū),共6個(gè)單元〔79H~7EH〕,與數(shù)碼管的對(duì)應(yīng)關(guān)系為:LED5→7EH、LED4→7DH、LED3→7CH、LED2→7BH、LED1→7AH、LED0→79H。即顯示緩沖區(qū)從左向右依次存放時(shí)、分、秒的數(shù)值。⑤假定已有LED顯示程序?yàn)镾MXS可供調(diào)用
ORG8000HSTART:AJMPMAINORG800BHAJMPPITOORG8100HMAIN:MOVSP,#60H;確立堆棧區(qū)MOVR0,#79H;顯示緩沖區(qū)首地址MOVR7,#06H;顯示位數(shù)ML1:MOV@R0,#00H;顯示緩沖單元清0INCR0DJNZR7,ML1MOVTMOD,#01H;定時(shí)器0,工作方式1MOVTL0,#0CDH;裝計(jì)數(shù)器初值MOVTH0,#0BH
SETB8CH;TR0置1,定時(shí)開始SETBAFH;EA置1,中斷總允許SETBA9H;ET0置1,定時(shí)器0中斷允許MOV30H,#08H;要求的計(jì)數(shù)溢出次數(shù),即循環(huán)次數(shù)ML0:LCALLSMXS;調(diào)用顯示子程序SJMPML0PITO:PUSHPSW;中斷效勞程序,現(xiàn)場(chǎng)保護(hù)PUSHACCSETBPSW.3;RS1RS0=01,選1組通用存放器MOVTL0,#0CDH;計(jì)數(shù)器重新加載MOVTH0,#0BH
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國(guó)際貿(mào)易合同-買賣合同樣本
- 2024股份制企業(yè)入股合同范本
- 四川省七年級(jí)上學(xué)期語文期中試卷6套【附答案】
- 企業(yè)保密協(xié)議書編寫技巧
- 物業(yè)租賃代理費(fèi)用基金合同
- 股權(quán)代持入股合作協(xié)議書
- 2024購銷合同協(xié)議精要
- 二手電動(dòng)自行車轉(zhuǎn)讓合同
- 2024版企業(yè)技術(shù)成果保護(hù)協(xié)議
- 影視作品制片權(quán)許可合同
- 幼兒園:我中獎(jiǎng)了(實(shí)驗(yàn)版)
- 趙學(xué)慧-老年社會(huì)工作理論與實(shí)務(wù)-教案
- 《世界主要海峽》
- 住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)
- “三新”背景下的數(shù)學(xué)課堂教學(xué) 論文
- 中央企業(yè)商業(yè)秘密安全保護(hù)技術(shù)指引2015版
- 螺旋果蔬榨汁機(jī)的設(shè)計(jì)
- 《脊柱整脊方法》
- 會(huì)計(jì)與財(cái)務(wù)管理專業(yè)英語智慧樹知到答案章節(jié)測(cè)試2023年哈爾濱商業(yè)大學(xué)
- 廣東省2020年中考英語試題【含答案】
- 0417 教學(xué)能力大賽 公共基礎(chǔ)《英語 》教學(xué)實(shí)施報(bào)告 電子商務(wù)專業(yè)
評(píng)論
0/150
提交評(píng)論