單片機P1口輸入輸出與中斷實驗_第1頁
單片機P1口輸入輸出與中斷實驗_第2頁
單片機P1口輸入輸出與中斷實驗_第3頁
單片機P1口輸入輸出與中斷實驗_第4頁
單片機P1口輸入輸出與中斷實驗_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機P1口輸入輸出及外部中斷實驗實驗?zāi)康?、學習P1口的使用方法。2、學習延時子程序的編寫和使用。3、熟練在匯編軟件環(huán)境下編寫、修改、調(diào)試、和運行硬件程序4、熟悉匯編語言5、學習外部中斷技術(shù)的基本使用方法。6、學習中斷處理程序的編程方法。實驗說明1、P1口做輸出口,接八只發(fā)光二極管,編寫程序,使發(fā)光二極管循環(huán)點亮。2、P1.0,P1.1作輸入口接兩個撥動開關(guān),P1.2,P1.3作輸出口,接兩個發(fā)光二極管,編寫程序讀取開關(guān)狀態(tài),將此狀態(tài),在發(fā)光二極管上顯示出來。編程時應(yīng)注意P1.0,P1.1作為輸入口時應(yīng)先置1,才能正確讀入值。3、用單次脈沖申請中斷,在中斷處理程序中使P1.0的輸出狀態(tài)發(fā)生反轉(zhuǎn),并通過發(fā)光二極管觀察P1.0的電平。實驗儀器計算機偉福軟件(lab2000P)實驗內(nèi)容 1、P1口是準雙向口。它作為輸出口時與一般的雙向口使用方法相同。由準雙向口結(jié)構(gòu)可知當P1口用為輸入口時,必須先對它置“1”。若不先對它置“1”,讀入的數(shù)據(jù)是不正確的。 2、8051延時子程序的延時計算問題,計算和估算延時子程序的時間。3、保護進入中斷時的狀態(tài),并在退出中斷之前恢復(fù)進入時的狀態(tài)。4、必須在中斷程序中設(shè)定是否允許中斷重入,即設(shè)置EXO位。5、本例中使用了INTO中斷,一般中斷程序進入時應(yīng)保護PSW,ACC以及中斷程序使用但非其專用的寄存器。本例的中斷程序保護了PSW,ACC等三個寄存器并且在退出前恢復(fù)了這三個寄存器。另外中斷程序中涉及到關(guān)鍵數(shù)據(jù)的設(shè)置時應(yīng)關(guān)中斷,即設(shè)置時不允許重入。思考題 1、改變延時時間,變快或者變慢,觀察效果; 2、第2個實驗在每個端口增加軟件延時,延時時間變快或者變慢,觀察撥動開關(guān)響應(yīng)效果; 3、改變流水燈的運行方向; 4、改變流水燈的運行模式,雙燈對跑,雙燈一起跑。 5、如果LED燈為低電平點亮,如何改動。 6、把實驗改為int1中斷,需要改動幾處,如何改動。 7、把實驗改為同時int0和int1中斷驅(qū)動2個燈,需要改動幾處,如何改動。源程序修改原理及其仿真結(jié)果流水燈實驗1:Loop: mova,#01h movr2,#8Output: movP1,a rla callDelay djnzr2,Output LjmpLoopDelay: movr6,#0 movr7,#0DelayLoop: djnzr6,DelayLoop djnzr7,DelayLoop ret end思考題一:修改延時子程序查指令表可知MOV和DJNZ指令均需用兩個機器周期,在6MHz晶振時,一個機器周期時間長度為12/6MHZ,所以上面延時子程序該的執(zhí)行時間為:(256×255+2)×2×12÷6≈261ms=0.261s用軟件仿真將晶振頻率設(shè)為6MHz時仿真結(jié)果為與計算結(jié)果基本一致。在ms級別上人眼是無法區(qū)別快慢的,所以設(shè)計增加延時到s級別以區(qū)別于ms,即此延時級別上增加十倍,修改程序如下Delay:movr6,#0movr7,#0movr5,#0Ah ;若效果不明顯可以增大倍數(shù)DelayLoop:djnzr6,DelayLoopdjnzr7,DelayLoopdjnzr5,DelayLoopretend修改后的仿真結(jié)果為實現(xiàn)了秒級別的延時。思考題三:改變流水燈的運行方向修改程序如下:Loop: mova,#01h movr2,#8Output: movP1,a rra ;rl表示左移,rr表示右移,可實現(xiàn)流水燈方向的變換 callDelay djnzr2,Output LjmpLoop思考題四:改變流水燈的運行模式,雙燈對跑,雙燈一起跑修改為雙燈對跑:Loop:movr0,#01hmovr1,#80hmovr2,#4 ;若改為8可以實現(xiàn)相對點亮然后相反點亮的循環(huán)Output:mova,r0adda,r1movP1,a ;由于只有a可以實現(xiàn)移位功能,故用r0和r1將數(shù)據(jù)暫存,然 后分別實現(xiàn)移位后相加移入a再賦值,以實現(xiàn)雙燈對跑mova,r0rlamovr0,amova,r1rramovr1,acallDelaydjnzr2,OutputljmpLoopDelay:movr6,#0movr7,#0DelayLoop:djnzr6,DelayLoopdjnzr7,DelayLoopretend軟件仿真結(jié)果及實驗現(xiàn)象描述:;復(fù)位后P1口均為高電平;第一次實現(xiàn)r0和r1數(shù)據(jù)相加賦值 給P1,點亮邊沿的兩盞燈;實現(xiàn)r0和r1數(shù)據(jù)的移位以后再次相 加賦值給p1口,實現(xiàn)左右的四盞燈對跑;循環(huán)次數(shù)為4次,完成后回到點亮邊 沿的兩盞燈修改為雙燈一起跑:Loop: mova,#11h movr2,#8Output: movP1,a rla callDelay djnzr2,Output LjmpLoop軟件仿真結(jié)果及實驗現(xiàn)象描述:復(fù)位后P1口都為高電平賦入a的初值,此時0和4燈亮a值左移位再次賦值,此時1和5燈亮, 一下同理流水燈實驗2:思考題二:每個端口增加軟件延時,延時時間變快或者變慢,觀察撥動開關(guān)響應(yīng)效果KeyLeftequP1.0KeyRightequP1.1LedLeftequP1.2LedRightequP1.3SETBKeyLeftSETBKeyRightLoop:MOVC,KeyLeftCall Delay;在讀入數(shù)據(jù)與傳送數(shù)據(jù)間增加延時,觀察控制效果MOVLedLeft,CMOVC,KeyRightCall DelayMOVLedright,CLJMPLoopDelay:movr6,#0movr7,#0movr5,#0Ah ;若效果不明顯可以增大倍數(shù)或者減小倍數(shù)DelayLoop:djnzr6,DelayLoopdjnzr7,DelayLoopdjnzr5,DelayLoopretend思考題五:如果LED燈為低電平點亮應(yīng)如何改動若LED燈為低電平點亮則只需將賦值中的0和1對換,如源程序中的a賦值為01h,然后對它進行移位再賦值,此時就應(yīng)該改為賦值feh,然后移位時候相當于移的是0信號,讓各個口循環(huán)出現(xiàn)低電平,以實現(xiàn)點亮LED燈。其他點亮方式同理。思考題六:把實驗改為int1中斷,需要改動幾處,如何改動LEDequP1.0LEDBufequ0ljmpStartorg13h ;13h為中斷1的入口地址Interrupt1: ;改為中斷1的中斷子程序pushPSW;保護現(xiàn)場cplLEDBuf;取反LEDmovc,LEDBufmovLED,cpopPSW;恢復(fù)現(xiàn)場retiorg100HStart:clrLEDBufclrLEDmovTCON,#00000100 ;外部中斷1下降沿觸發(fā)movIE,#10000100 ;打開外部中斷允許位(EX1)及總中斷允許位 (EA)ljmp$end ;硬件接口要改變,單脈沖要接P3.3思考題七:把實驗改為同時int0和int1中斷驅(qū)動2個燈,需要改動幾處,如何改動LEDequP1.0LED2equP1.1 LEDBufequ0LEDBuf2equ0 ;增加P1.1燈對應(yīng)的參數(shù)ljmpStartorg3Interrupt0:pushPSW ;保護現(xiàn)場cplLEDBuf ;取反LEDmovc,LEDBufmovLED,cpopPSW ;恢復(fù)現(xiàn)場retiorg 13hInterrupt1:pushPSW cplLEDBuf2 movc,LEDBuf2movLED2,cpopPSW reti ;增加INT1中斷子程序,使兩個中斷互不干擾org100HStart:clrLEDBufclrLEDclrLEDBuf2clrLED2movTCON,#00000101 ;外部中斷1和中斷0下降沿觸發(fā)movIE,#

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論