單片機原理和應用實驗_第1頁
單片機原理和應用實驗_第2頁
單片機原理和應用實驗_第3頁
單片機原理和應用實驗_第4頁
單片機原理和應用實驗_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2第四章 單片機實驗內(nèi)容4.1 實驗一 P1口實驗(1)彩燈的控制(循環(huán)左(或右)移滾動)一、 實驗名稱: 彩燈的控制(循環(huán)左(或右)移滾動)二、 實驗目地 1. 學習實驗箱的使用和匯編程序的開發(fā)過程1 .學習P1口的使用方法。2. 學習延時子程序的編寫和使用。三、實驗設備 PC機 EL-MUT-III型單片機實驗箱、 8051CPU模塊、示波器 四、實驗內(nèi)容1 P1口做輸出口,接八只發(fā)光二極管,編寫程序,使發(fā)光二極管循環(huán)點亮。2 P1口做輸入口,接八個按紐開關(guān),以實驗箱上74LS273做輸出口,編寫程序讀取開關(guān)狀態(tài),在發(fā)光二極管上顯示出來。五、實驗原理P1口為準雙向口,P1口的每一位都能獨立

2、地定義為輸入位或輸出位。作為輸入位時,必須向鎖存器相應位寫入“1”,該位才能作為輸入。8031中所有口鎖存器在復位時均置為“1”,如果后來在口鎖存器寫過“0”,在需要時應寫入一個“1”,使它成為一個輸入??梢杂玫诙€實驗做一下實驗。先按要求編好程序并調(diào)試成功后,可將P1口鎖存器中置“0”,此時將P1做輸入口,會有什么結(jié)果。再來看一下延時程序的實現(xiàn)?,F(xiàn)常用的有兩種方法,一是用定時器中斷來實現(xiàn),一是用指令循環(huán)來實現(xiàn)。在系統(tǒng)時間允許的情況下可以采用后一種方法。假如:實驗系統(tǒng)晶振為6.144MHZ,則一個機器周期為12÷6.144us即1÷0.512us?,F(xiàn)要寫一個延時0.1s的程

3、序,可大致寫出如下: MOV R7,#X (1) DEL1:MOV R6,#200 (2) DEL2:DJNZ R6,DEL2 (3) DJNZ R7,DEL1 (4)上面MOV、DJNZ指令均需兩個機器周期,所以每執(zhí)行一條指令需要1÷0.256us,現(xiàn)求出X值:1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10指令(1) 指令(2) 指令(3) 指令(4)所需時間 所需時間 所需時間 所需時間X=(0.1×10-1÷0.256)/(1÷0.256+200

4、×1÷0.256+1÷0.256)=127D=7FH經(jīng)計算得X=127。代入上式可知實際延時時間約為0.100215s,已經(jīng)很精確了。六、實驗電路圖 圖4-1 LED顯示原理 圖4-2 平推開關(guān)工作的原理 圖4-3 P1口輸出實驗 圖4-4 P1口輸入實驗原理圖 七、實驗流程圖 圖4-5 P1口輸出彩燈循環(huán)左移實驗流程圖圖4-6 將P1口的狀態(tài)送發(fā)光二極管顯示流程圖八、實驗步驟 1 輸入程序文本-見參考程序T1_1.ASM 2 按實驗要求,將P1.0P1.7接發(fā)光二極管L1L8,連接電路。 3 編譯程序: 1)連續(xù)執(zhí)行程序1(T1_1.ASM)時,觀察發(fā)光二極管L

5、1L8的工作現(xiàn)象,記錄下來。2)單步方式程序,記錄每條指令執(zhí)行后的現(xiàn)象,記錄P1口的輸出數(shù)據(jù),注釋每條指令的功能。4 按照1、2、3步驟,再做下面的實驗。把 P1.0P1.7接平推開關(guān)K1K8;74LS273的O0O7接發(fā)光二極管L1L8;74LS273的片選端CS273接CS0(由程序所選擇的入口地址而定,與CSOCS7相應的片選地址請查看第一部分系統(tǒng)資源執(zhí)行程序2(T1_2.ASM)時: 5 用示波器觀察參考程序1中,加下劃線指令后,產(chǎn)生的0.1秒的延時。如何觀察?八、參考程序1、循環(huán)點亮發(fā)光二極管(T1_1.ASM)NAME T1_1 ;P1口輸實驗CSEG AT 0000H LJMP

6、STARTCSEG AT 4100HSTART: MOV A,#0FEHLOOP: RL A ; 左移一位,點亮下一個發(fā)光二極管 MOV P1,A LCALL DELAY;延時 0.1秒 JMP LOOP; DELAY: MOV R1,#127 ; 延時0.1秒DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2 DJNZ R1,DEL1 RET; END 2、通過發(fā)光二極管將P1口的狀態(tài)顯示(T1_2.ASM)NAME T1_2 ;P1口輸入實驗OUT_PORTEQU0CFA0H ; CSEG AT 0000H LJMP STARTCSEG AT 4100HSTART: M

7、OV P1,#0FFH ;復位P1口為輸入狀態(tài) MOV A,P1 ;讀P1口的狀態(tài)值入累加器A MOV DPTR,#OUT_PORT ;將輸出口地址賦給地址指針DPTR MOVX DPTR,A ;將累加器A的值賦給DPTR指向的地址 JMP START ;繼續(xù)循環(huán)監(jiān)測端口P1的狀態(tài) ENDXX指令處 PCACCSPP1MOV A,#0FEHRL AMOV P1,ALCALL DELAYJMP LOOP九、思考題 1. P1口復位時,P1口是輸入還是輸出方式?P1口如何設置為輸入方式? 2. 復位時,P0 ,P2, P3 ,P4口是何種工作方式? 3.各個輸入輸出端口的數(shù)據(jù)傳送采用什么尋址方式的

8、格式方式。4.2 實驗二 P1口實驗(2)-交通燈管理一、實驗目的:1 學習P1口既做輸入又做為輸出的使用方法。2 學習數(shù)據(jù)輸入、輸出程序的設計方法。3 學習分支程序的設計方法。4 學習實驗箱的使用和匯編程序的開發(fā)過程二、實驗設備:EL-MUT-III型單片機實驗箱、8051CPU模塊三、實驗原理:P1口的使用方法這里不講了。有興趣者不妨將實驗例程中的“SETB P1.0, SETB P1.1”中的“SETB”改為“CLR”看看會有什么結(jié)果。另外,例程中給出了一種N路轉(zhuǎn)移的常用設計方法,該方法利用了JMP A+DPTR的計算功能,實現(xiàn)轉(zhuǎn)移。該方法的優(yōu)點是設計簡單,轉(zhuǎn)移表短,但轉(zhuǎn)移表大小加上各個

9、程序長度必須小于256字節(jié)。四、實驗原理圖:圖 47 P1口輸入、輸出實驗五、實驗步驟:1.按下述鏈接實驗電路到P1端口:平推開關(guān)的輸出K1接P1.0;K2接P1.1;發(fā)光二極管的輸入L5接P1.2;L6接P1.3;L7接P1.4;L8接P1.5。其中定義:K1做為左轉(zhuǎn)彎開關(guān),K2做為右轉(zhuǎn)彎開關(guān)。L5、L6做為左轉(zhuǎn)彎燈,L7、L8做為右轉(zhuǎn)彎燈。2. 輸入?yún)⒖汲绦?,編譯,鏈接程序。運行實驗程序。推動K1,K2觀察 LED顯示的變化。結(jié)果顯示:1)K1接高電平K2接低電平時,左轉(zhuǎn)彎燈(L5、L6),以一定頻率閃爍,右轉(zhuǎn)彎燈(L7、L8)滅;2)K1接低電平K2接高電平時,左轉(zhuǎn)彎燈(L5、L6)滅,

10、右轉(zhuǎn)彎燈(L7、L8)以一定頻率閃爍;3)K1、K2同時接低電平時,發(fā)光二極管全滅;4)K1、K2同時接高電平時,發(fā)光二極管全亮。3. 采用設斷點,運行到光標處的調(diào)試方法,運行程序,記錄斷點處k1k2的編碼狀態(tài)。六、參考程序:T2.ASMNAME T2 ;P1口輸入輸出實驗CSEG AT 0000H LJMP STARTCSEG AT 4100HSTART: SETB P1.0 SETB P1.1 ;用于輸入時先置位口內(nèi)鎖存器 MOV A,P1 ANL A,#03H ;從P1口讀入開關(guān)狀態(tài),取低兩位 MOV DPTR,#TAB ;轉(zhuǎn)移表首地址送DPTR MOVC A,A+DPTR JMP A+

11、DPTRTAB: DB PRG0-TAB ; PRG0-TAB? DB PRG1-TAB DB PRG2-TAB DB PRG3-TABPRG0: MOV P1,#0FFH ;向P1口輸出#0FFH,發(fā)光二極管全滅 ;此時K1=0,K2=0/FC JMP STARTPRG1: MOV P1,#0F3H ;只點亮L5、L6,表示左轉(zhuǎn)彎/F1 ACALL DELAY ;此時K1=1,K2=0MOV P1,#0FFH ;再熄滅0.5秒/FD ACALL DELAY ;延時0.5秒 JMP STARTPRG2: MOV P1,#0CFH ;只點亮L7、L8,表示右轉(zhuǎn)彎 ACALL DELAY ;此時K

12、1=0,K2=1/ce MOV P1,#0FFH ;再熄滅0.5秒/fe ACALL DELAY JMP STARTPRG3: MOV P1,#00H ;發(fā)光二極管全亮,此時K1=1,K2=1JMP START;圖48 交通燈流程圖DELAY: MOV R1,#5 ;延時0.5秒DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RETEND七、程序框圖: 見 圖48 交通燈流程圖八、改變推拉開關(guān)位置,再分別單步運行程序、運行到斷點處和運行到光標設置處,記錄三種運行方式下,寄存器內(nèi)容和堆棧

13、指針的變化,填入下表。k1k2=00的編碼狀態(tài)下單步運行到XX指令處 PCACCDPTRSPP1MOV A,P1MOV DPTR,#TAB MOVC A,A+DPTRJMP A+DPTRJMP STARTk1k2=01的編碼狀態(tài)下運行到光標處XX指令處 PCACCDPTRSPP1MOV A,P1MOV DPTR,#TAB MOVC A,A+DPTRJMP A+DPTRJMP STARTk1k2=10的編碼狀態(tài)下運行到斷點處XX指令處 PCACCDPTRSPP1MOV A,P1MOV DPTR,#TAB MOVC A,A+DPTRJMP A+DPTRJMP START九 思考題:1 程序中那幾條

14、指令,用于設定鍵盤為輸入方式?ANL A,#03H的功能是什么?2. 調(diào)試程序讀取按鍵的狀態(tài),斷點應選取在程序中什么位置?(即在哪一條指令前?)3. 計算程序中的延時子程序的延時時間。4. 說明 MOV DPTR,#TAB ;轉(zhuǎn)移表首地址送DPTR MOVC A,A+DPTR JMP A+DPTRTAB: DB PRG0-TAB 四條指令的功能,尋址方式,5.將程序中 SETB P1.0 SETB P1.1 改為 MOVE P1,#03H 再運行實驗程序,結(jié)果如何?若改為MOVE P1,#03H 再運行實驗程序,結(jié)果如何?說明原因。 4.3 實驗三 簡單I/O口擴展實驗一實驗名稱:交叉路口交通

15、燈控制實驗交通燈控制實驗一、實驗目的:1. 學習在單片機系統(tǒng)中擴展簡單I/O接口的方法。2. 學習順序程序、循環(huán)程序和數(shù)據(jù)輸出程序的設計方法。3. 學習模擬交通燈控制的實現(xiàn)方法。4. 學習設置斷點進行調(diào)試程序、子程序的調(diào)試的方法二、實驗設備:EL-MUT-III型單片機實驗箱、8051CPU模塊三、實驗內(nèi)容:1.利用擴展實驗箱上的74LS273做為輸出口,控制八個發(fā)光二極管亮滅,模擬交通燈管理。2.分別在程序中標有的三處,設置三次斷點,執(zhí)行到斷點處,觀測記錄現(xiàn)象,比較三次執(zhí)行的結(jié)果,并加以解釋。四、實驗原理:要完成本實驗,首先必須了解交通路燈的亮滅規(guī)律。本實驗需要用到實驗箱上八個發(fā)光二極管中的

16、六個,即紅、黃、綠各兩個。不妨將L1(紅)、L2(綠)、L3(黃)做為東西方向的指示燈,將L5(紅)、L6(綠)、L7(黃)做為南北方向的指示燈。而交通燈的亮滅規(guī)律為:初始態(tài)是兩個路口的紅燈全亮,之后,東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車,延時一段時間后,東西路口綠燈滅,黃燈開始閃爍。閃爍若干次后,東西路口紅燈亮,而同時南北路口的綠燈亮,南北方向開始通車,延時一段時間后,南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次后,再切換到東西路口方向,重復上述過程。各發(fā)光二極管的陽極通過保護電阻接到+5V的電源上,陰極接到輸入端上,因此使其點亮應使相應輸入端為低電平。五、實驗電原理圖圖4-9 I

17、/O接口擴展電路原理圖六、實驗步驟:1. 74LS273的輸出O0O7接發(fā)光二極管L1L8,74LS273的片選CS273接片選信號CSO,此時74LS273的片選地址為CFA0HCFA7H之間任選。 圖4-10 I/O接口擴展流程圖 2 輸入實驗程序,編譯程序。運行實驗程序,觀察、記錄LED顯示情況是否與實驗內(nèi)容相符。 七、程序框圖:見圖4-10 I/O接口擴展流程圖八、參考程序:Name T3.ASMNAME T3 ;I/O口擴展實驗一PORT EQU 0CFA0H ;片選地址CS0=0CFA0HCSEG AT 0000H LJMP STARTCSEG AT 4100HSTART: MOV

18、 A,#11H ;兩個紅燈亮,黃燈、綠燈滅 ACALL DISP*;調(diào)用273顯示單元(以下雷同) ACALL DE3S* ;延時3秒LLL: MOV A,#12H ;東西路口綠燈亮;南北路口紅燈亮 ACALL DISP ACALL DE10S ;延時10秒 MOV A,#10H ;東西路口綠燈滅;南北路口紅燈亮 ACALL DISP MOV R2,#05H ;R2中的值為黃燈閃爍次數(shù)TTT: MOV A,#14H ;東西路口黃燈亮;南北路口紅燈亮 ACALL DISP ACALL DE02S ;延時0.2秒 MOV A,#10H ;東西路口黃燈滅;南北路口紅燈亮 ACALL DISP ACA

19、LL DE02S ; 延時0.2秒 DJNZ R2,TTT ; 返回TTT,使東西路口黃燈閃爍五次 MOV A,#11H ; 兩個紅燈亮,黃燈、綠燈滅 ACALL DISP ACALL DE02S ;延時0.2秒 MOV A,#21H ;東西路口紅燈亮;南北路口綠燈亮 ACALL DISP ACALL DE10S ;延時10秒 MOV A,#01H ;東西路口紅燈亮;南北路口綠燈滅 ACALL DISP MOV R2,#05H ;黃燈閃爍五次GGG: MOV A,#41H ;東西路口紅燈亮;南北路口黃燈亮 ACALL DISP ACALL DE02S ;延時0.2秒 MOV A,#01H ;東

20、西路口紅燈亮;南北路口黃燈滅 ACALL DISP ACALL DE02S ;延時0.2秒 DJNZ R2,GGG ;返回GGG,使南北路口;黃燈閃爍五次 MOV A,#03H ;兩個紅燈亮,黃燈、綠燈滅 ACALL DISP ACALL DE02S ;延時0.2秒 JMP LLL ;轉(zhuǎn)LLL循環(huán)DE10S: MOV R5,#100 ;延時10秒 JMP DE1DE3S: MOV R5,#30 ;延時3秒 JMP DE1DE02S: MOV R5,#02 ;延時0.2秒DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJ

21、NZ R5,DE1 RETDISP: MOV DPTR,#PORT ;273顯示單元CPL AMOVX DPTR,ARET END實驗記錄數(shù)據(jù):XX指令處標記 PCACCR2第一次循環(huán)設置斷點 第二次循環(huán)設置斷點第三次循環(huán)設置斷點第四次循環(huán)設置斷點第五次循環(huán)設置斷點第六次循環(huán)設置斷點九、思考題: 1. 討論程序中幾個ACALL XXX的指令指針PC的范圍, 2. 敘述設置斷點調(diào)試程序的步驟。 3. 74LS273的片選地址為CFA0HCFA7H之間任選,再進行實驗,解釋觀測記錄結(jié)果。 4. 說明程序中MOV R2,#05H指令在兩次中出現(xiàn)的作用。4.4 實驗四 彩燈的中斷系統(tǒng)管理(2學時) 有

22、急救車的交通燈控制實驗一、實驗目的:1 學習外部中斷技術(shù)的基本使用方法。2 學習中斷處理程序的編程方法。3 學習中斷處理程序的調(diào)試方法二、實驗設備:EL-MUT-III型單片機實驗箱、8051CPU模塊三、實驗內(nèi)容:在實驗三的內(nèi)容的基礎上增加允許急救車優(yōu)先通過的要求。當有急救車到達時,兩個方向上的紅燈亮,以便讓急救車通過,假定急救車通過路口的時間為10秒,急救車通過后,交通燈恢復中斷前的狀態(tài)。本實驗以單脈沖為外部中斷申請,表示有急救車通過。外部中斷源外設的寫信號四、實驗原理:本實驗中斷處理程序的應用,最主要的地方是如何保護進入中斷前的狀態(tài),使得中斷程序執(zhí)行完畢后能回到交通燈中斷前的狀態(tài)。要保護

23、的地方,除了累加器ACC、標志寄存器PSW外,還要注意:一是主程序中的延時程序和中斷處理程序中的延時程序不能混用(為什麼不能混用?),本實驗給出的程序中,主程序延時用的是R5、R6、R7,中斷延時用的是R3、R4和新的R5。第二,主程序中每執(zhí)行一步經(jīng)74LS273的端口輸出數(shù)據(jù)的操作時,應先將所輸出的數(shù)據(jù)保存到一個單元中。因為進入中斷程序后也要執(zhí)行往74LS273端口輸出數(shù)據(jù)的操作,中斷返回時如果沒有恢復中斷前74LS273端口鎖存器的數(shù)據(jù),則顯示往往出錯,回不到中斷前的狀態(tài)。還要注意一點,主程序中往端口輸出數(shù)據(jù)操作要先保存再輸出,例如有如下操作: MOV A,#0F0H (1) MOVX R

24、1,A (2) MOV SAVE,A (3)程序如果正好執(zhí)行到(2)時發(fā)生中斷,則轉(zhuǎn)入中斷程序,假設中斷程序返回主程序前需要執(zhí)行一句MOV A,SAVE指令,由于主程序中沒有執(zhí)行(3),故SAVE中的內(nèi)容實際上是前一次放入的而不是(1)語句中給出的0F0H,顯示出錯,將(2)、(3)兩句順序顛倒一下則沒有問題。發(fā)生中斷時兩方向的紅燈一起亮10秒,然后返回中斷前的狀態(tài)。五、實驗原理圖:(同實驗三)六、實驗步驟:1.按照74LS273的輸出O0O7接發(fā)光二極管L1L8,74LS273的片選CS273接片選信號CS2,此時74LS273的片選地址為CFB0HCFB7H之間任選。單脈沖輸出端P-接CP

25、U板上INT0孔。七、程序框圖: 主程序框圖 中斷程序框圖 圖4-11 外部中斷主程序(急救車)八、參考程序:NAME T5 ;中斷控制實驗OUTPORT EQU 0CFB0H ;端口地址SAVE EQU 55H ;保存從端口CFB0輸出的數(shù)據(jù)CSEG AT 0000H LJMP STARTCSEG AT 4003H LJMP INTCSEG AT 4100HSTART: SETB IT0 /*外部中斷信號編程*/ SETB EX0 /*外部中斷管理=允許*/ SETB EA /*總中斷允許*/ MOV A,#11H ;置首顯示碼 MOV SAVE,A ;保存顯示編碼 ACALL DISP ;

26、顯示輸出 ACALL DE3S ;延時3秒LLL: MOV A,#12H ;東西路口綠燈亮,南北路口紅燈亮 MOV SAVE,A ACALL DISP ACALL DE10S ;延時10秒 MOV A,#10H ;東西路口綠燈滅 MOV SAVE,A ACALL DISP MOV R2,#05H ;東西路口黃燈閃爍5次TTT: MOV A,#14H MOV SAVE,A ACALL DISP ACALL DE02S ;延時0.2秒 MOV A,#10H MOV SAVE,A ACALL DISP ACALL DE02S ;延時0.2秒 DJNZ R2,TTT MOV A,#11H ;紅燈全亮

27、MOV SAVE,A ACALL DISP ACALL DE02S ;延時0.2秒 MOV A,#21H ;東西路口紅燈亮,南北路口綠燈亮 MOV SAVE,A ACALL DISP ACALL DE10S ;延時10秒 MOV A,#01H ;南北路口綠燈滅 MOV SAVE,A ACALL DISP MOV R2,#05H ;南北路口黃燈閃爍5次GGG: MOV A,#41H MOV SAVE,A ACALL DISP ACALL DE02S MOV A,#01H MOV SAVE,A ACALL DISP ACALL DE02S DJNZ R2,GGG MOV A,#11H ;紅燈全亮

28、MOV SAVE,A ACALL DISP ACALL DE02S ;延時0.2秒 JMP LLL ;轉(zhuǎn)LLL循環(huán);延時子程序=DE10S: MOV R5,#100 ;延時10秒 JMP DE1DE3S: MOV R5,#30 ;延時3秒 JMP DE1DE02S: MOV R5,#02 ;延時0.2秒DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET;外部中斷服務處理程序=INT: CLR EAPUSH ACC ;中斷處理保護現(xiàn)場 PUSH PSW6條指令保護現(xiàn)場 MOV A,R5 PUSH

29、 ACC MOV A,R2 PUSH ACC ; MOV A,#11H ;紅燈全亮,綠、黃燈全滅 ACALL DISP DEL10S: MOV R3,#100 ;延時10秒 DEL1: MOV R2,#200DEL2: MOV R5,#126DEL3: DJNZ R5,DEL3 DJNZ R2,DEL2 DJNZ R3,DEL1 MOV A,SAVE ;取SAVE中保存數(shù)據(jù)輸出到cfa0端口 ACALL DISP POP ACC ;出棧è恢復現(xiàn)場 MOV R2,A POP ACC MOV R5,A POP PSW POP ACC SETB EA ;允許外部中斷 RETI;顯示子程序=

30、DISP: MOV DPTR,#OUTPORTCPL A MOVX DPTR,A RETEND 中斷時,記錄主程序的斷點斷點次數(shù)斷點時PC的值 SP=?PSW=?TCON=? 1 2 3 4 5九、思考題: 1.實驗中的外部中斷是電平引起的,還是邊沿引起的? 2解釋中斷服務程序clr ea setb ea 兩條指令的作用?3. SAVE的作用是什麼?程序中多次出現(xiàn)MOV SAVE,A ACALL DISP 的地方,每次出現(xiàn)的作用是什麼?4.5 實驗五 8051的定時器實驗定時器實現(xiàn)循環(huán)彩燈實驗一、實驗目的:1 學習8031內(nèi)部計數(shù)器/定時器的使用和編程方法。2 進一步掌握中斷處理程序的編寫方法

31、。3 進一步掌握中斷程序的調(diào)試方法。二、實驗設備:EL-MUT-III型單片機實驗箱、8051CPU模塊三、實驗原理:1 定時常數(shù)的確定定時器/計數(shù)器的輸入脈沖周期與機器周期一樣, 為振蕩頻率的1/12。本實驗中時鐘頻率為6.0 MHZ,現(xiàn)要采用中斷方法來實現(xiàn)0.5秒延時,要在定時器1中設置一個時間常數(shù),使其每隔0.1秒產(chǎn)生一次中斷,CPU響應中斷后將R0中計數(shù)值減一,令R0=05H,即可實現(xiàn)0.5秒延時。時間常數(shù)可按下述方法確定:機器周期=12÷晶振頻率=12/(6×10)=2us設計數(shù)初值為X,則(2+16-X)×2×10-6=0.1,可求得X=15

32、535化為十六進制則X=3CAFH,故初始值為TH1=3CH,TL1=AFH2 初始化程序包括定時器初始化和中斷系統(tǒng)初始化,主要是對IP、IE、TCON、TMOD的相應位進行正確的設置,并將時間常數(shù)送入定時器中。由于只有定時器中斷,IP便不必設置。3 設計中斷服務程序和主程序中斷服務程序除了要完成計數(shù)減一工作外,還要將時間常數(shù)重新送入定時器中,為下一次中斷做準備。主程序則用來控制發(fā)光二極管按要求順序燃滅。四、實驗題目由8031內(nèi)部定時器1按方式1工作,即作為16位定時器使用,每0.1秒鐘T1溢出中斷一次。P1口的P1.0P1.7分別接發(fā)光二極管的L1L8。要求編寫程序模擬一循環(huán)彩燈。彩燈變化花

33、樣可自行設計。例程給出的變化花樣為:L1、L2、L8依次點亮;L1、L2、L8依次熄滅;L1、L2、L8全亮、全滅。各時序間隔為0.5秒。讓發(fā)光二極管按以上規(guī)律循環(huán)顯示下去。五、實驗電路: 圖4-13 P1口輸出LED顯示六、實驗步驟:P1.0P1.7分別接發(fā)光二極管L1L8即可。七、參考程序:NAME T6 ;定時器實驗OUTPORT EQU 0CFB0HCSEG AT 0000H LJMP STARTCSEG AT 401BH LJMP INT ;定時器/計數(shù)器1中斷程序入口地址 CSEG AT 4100HSTART: MOV A,#01H ;首顯示碼 MOV R1,#03H ;03是偏移

34、量,即從基址寄存器到表首的距離 MOV R0,#5H ;05是計數(shù)值 MOV TMOD,#10H ;計數(shù)器置為方式1 MOV TL1,#0AFH ;裝入時間常數(shù) MOV TH1,#03CH ORL IE,#88H ;CPU中斷開放標志位和定時器 ;1溢出中斷允許位均置位 SETB TR1 ;開始計數(shù)LOOP1: CJNE R0,#00,DISP ; (既R0=05 表示0.5秒) MOV R0,#5H ;R0計數(shù)計完一個周期,重置初值 INC R1 ;表地址偏移量加1 CJNE R1,#31H,LOOP2 MOV R1,#03H ;如到表尾,則重置偏移量初值LOOP2: MOV A,R1 ;從

35、表中取顯示碼入累加器 MOVC A,A+PC ; JMP DISP DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH ;1=滅 DB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH ;0=亮 DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00HDISP: MOV P1,A ;將取得的顯示碼從P1口輸出顯示 JMP LOOP1 ;定時器中斷服務程序: 中斷程序一次,令R0的內(nèi)容減一INT: CLR

36、 TR1 ;停止計數(shù) DEC R0 ;計數(shù)值減一 MOV TL1,#0AFH ;重置時間常數(shù)初值 MOV TH1,#03CH SETB TR1 ;開始計數(shù) RETI ;中斷返回END八、程序框圖:T6.ASM 主程序框圖 中斷程序框圖 圖4-14 定時器中斷流程圖中斷時,記錄主程序的斷點斷點次數(shù)斷點時PC的值 SP=?PSW=?TCON=?R0 1 2 3 4 5記錄主程序的斷點(在中斷服務程序中處設置斷點調(diào)試記錄)思考題:1.將 例程給出的變化花樣為:L1、L2、L8依次點亮;L1、L2、L8依次熄滅;L1、L2、L8全亮、全滅。各時序間隔為0.5秒。讓發(fā)光二極管按以上規(guī)律循環(huán)顯示下去。改為

37、L8、L7、L1依次點亮;L8、L7、L1依次熄滅;L1、L2、L8全亮、全滅。各時序間隔為0.5秒。讓發(fā)光二極管按以上規(guī)律循環(huán)顯示下去,應修改程序中那些參數(shù)2.中斷服務程序的入口地址是多少?說明R0,R1的作用。3.定時器的定時參數(shù)(定時時間)如何計算?若改為1秒以為一次,程序用幾種修改方法?4.6 實驗六 串行口實驗 單機串行通信實驗一、實驗目的:1 掌握8031串行口方式1的工作方式及編程方法。2 掌握串行通訊中波特率的設置,了解MCS-51單片機串行口(UART)的結(jié)構(gòu);3 在給定通訊波特率的情況下,會計算定時時間常數(shù)。二、實驗設備:EL-MUT-III型單片機實驗箱、8051CPU模

38、塊,示波器。三、實驗原理MCS-51單片機串行通訊的波特率隨串行口工作方式選擇的不同而不同,它除了與系統(tǒng)的振蕩頻率f,電源控制寄存器PCON的SMOD位有關(guān)外,還與定時器T1的設置有關(guān)。1) 在工作方式0時,波特率固定不變,僅與系統(tǒng)振蕩頻率有關(guān),其大小為f/12。2) 在工作方式2時,波特率也只固定為兩種情況: 當SMOD=1時, 波特率=f/32 當SMOD=0時, 波特率=f/643) 在工作方式1和3時,波特率是可變的: 當SMOD=1時, 波特率=定時器T1的溢出率/16 當SMOD=0時, 波特率=定時器T1的溢出率/32 其中,定時器T1的溢出率=f/(12*(256-N),N為T

39、1的定時時間常數(shù)。在實際應用中,往往是給定通訊波特率,而后去確定時間常數(shù)。例如:f=6.144MHZ,波特率等于1200,SMOD=0時,則1200=6144000/(12*32*(256-N),計算得N=F2H。例程中設置串行口工作于方式1,SMOD=0,波特率為1200。循環(huán)彩燈的變化花樣與實驗六相同。也可自行設計變化花樣。四、實驗題目利用8031串行口發(fā)送和接收數(shù)據(jù),并將接收的數(shù)據(jù)通過擴展I/O口74LS273輸出到發(fā)光二極管顯示,結(jié)合延時來模擬一個循環(huán)彩燈。五、實驗連線:8031的TXD接RXD;74LS273的CS273接CS0;O0O7接發(fā)光二極管的L1L8;六、流程圖:七、程序名稱

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論