单片机综合实验 - 02 | 中断与定时/计数器实验
一、實(shí)驗?zāi)康暮腿蝿?wù)
1、掌握80C51單片機(jī)外部中斷的初始化及中斷服務(wù)子程序設(shè)計方法。
2、掌握80C51單片機(jī)定時器/計數(shù)器的程序控制方法。
二、實(shí)驗原理簡介
中斷是指在突發(fā)事件到來時先中止當(dāng)前正在進(jìn)行的工作,轉(zhuǎn)而去處理突發(fā)事件。待處理完成后,再返回到原先被中止的工作處,繼續(xù)進(jìn)行隨后的工作。引起突發(fā)事件的來源稱為中斷源,中斷源要求服務(wù)的請求稱為中斷請求,對中斷請求提供的服務(wù)稱為中斷服務(wù),中斷管理系統(tǒng)處理事件的過程稱為中斷響應(yīng)過程。80C51單片機(jī)至少包括5個中斷源:
INT0:外部中斷0,由P3.2端口線引入,低電平或下跳沿引起。(本實(shí)驗用)
INT1:外部中斷1,由P3.3端口線引入,低電平或下跳沿引起。
T0:定時器/計數(shù)器0中斷,由T0計滿回零引起。(本實(shí)驗用)
T1:定時器/計數(shù)器l中斷,由T1計滿回零引起。
TI/RI:串口中斷,串口完成一幀字符發(fā)送/接收后引起。
本實(shí)驗對應(yīng)的硬件電路與實(shí)驗三相同(見圖3.6.1)。P0口用于控制發(fā)光管L101~L108,口線輸出0(低電平)時,對應(yīng)的發(fā)光管點(diǎn)亮,口線輸出1(高電平)時,對應(yīng)的發(fā)光管熄滅。P3口的4根口線連接獨(dú)立按鍵KX0~KX3,其中KX0對應(yīng)外部中斷0,進(jìn)行KX0按鍵動作的時候可以觸發(fā)外部中斷。
注意:在做本實(shí)驗時,須將撥碼開關(guān)JUMP2置為接通狀態(tài)(向左)。
三、實(shí)驗內(nèi)容和步驟
1、編寫一段程序,用P0口作為控制端口,使實(shí)驗箱上的LED輪流點(diǎn)亮(走馬燈)。用外部中斷0/KX0控制走馬燈的暫停/繼續(xù)。
???
ORG 0000HLJMP MAINORG 0003HLJMP ZEX0ORG 0100H MAIN: MOV SP,#60HSETB IT0SETB EX0SETB EAMOV A,#0FEHMOV R5,#00H NEXT: CJNE R5,#00H,NEXTMOV P0,AACALL DELAYRL ASJMP NEXT ;延時子程序 DELAY: MOV R2,#3 DELAY2: MOV R3,#200 DELAY3: MOV R4,#200 DJNZ R4,$DJNZ R3,DELAY3DJNZ R2,DELAY2RET ;外部中斷0服務(wù)子程序 ZEX0: PUSH ACCSETB RS0MOV R2,#2ACALL DELAY2CLR RS0JB P3.2,EXITMOV A,R5XRL A,#0FFHMOV R5,A EXIT: POP ACCCLR IE0RETI- 觀察實(shí)驗結(jié)果,解釋如何實(shí)現(xiàn)走馬燈的暫停和繼續(xù)。
- 比較電平觸發(fā)和邊沿觸發(fā)時走馬燈控制的難易程度。
答: ?走馬燈的暫停和繼續(xù)是通過外部按下按鍵而使單片機(jī)觸發(fā)外部中斷0,此時會進(jìn)入外部中斷0服務(wù)子程序,然后通過異或操作指令來修改工作寄存器R5的值為FFH,使其在跳出外部中斷0服務(wù)子程序之后在NEXT: CJNE? R5,#00H,NEXT這條程序中進(jìn)入死循環(huán),而無法執(zhí)行程序下面的位左移操作。在控制走馬燈時經(jīng)過驗證電平觸發(fā)相比邊沿觸發(fā)要困難。
2、編寫一段程序,用P0口作為控制端口,使實(shí)驗箱的LED輪流點(diǎn)亮(走馬燈)。用定時/計數(shù)器0控制走馬燈切換速度。
??
ORG 0000HLJMP MAINORG 000BHLJMP ZIT0ORG 0100H MAIN: MOV SP,#60HMOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HMOV R6,#1MOV R7,#0FEHSETB ET0SETB EASETB TR0SJMP $ ;定時中斷0服務(wù)子程序 ZIT0: DJNZ R6,ZRETMOV A,R7MOV P0,ARL AMOV R7,AMOV R6,#1 ZRET: MOV TH0,#3CHMOV TL0,#0B0HRETIEND- 修改R6=0或1時,觀察走馬燈的速度快慢。
- ZRET處沒有重置初值時的走馬燈的速度與 ZRET處有重置初值時的走馬燈的速度的比較。
- R6=50時,改變T0的初值,設(shè)為最大、最小時,比較走馬燈的速度。
- 去掉R6的軟件輔助延時,是否可以?速度怎樣?
答:經(jīng)過驗證,R6=0時走馬燈的速度慢,R6=1時走馬燈的速度快,原因是在DJNZ? R6,ZRET這條程序中,R6=0時DJNZ的減一操作進(jìn)行了255次,也就是裝載了255次TH0和HL0的值,而R6=1時只執(zhí)行了1次。ZRET處沒有重置初值時的走馬燈的速度相比有重置初值時要慢,原因是沒有重置初值,那么初值為0。當(dāng)R6=50時,T0的初值設(shè)為最大時走馬燈的速度要比T0的初值設(shè)為最小時要快。不可以去掉R6的軟件輔助延時,此時走馬燈的速度快到人眼無法識別。
總結(jié)
以上是生活随笔為你收集整理的单片机综合实验 - 02 | 中断与定时/计数器实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codeforces738C
- 下一篇: 华南理工大学计算机专业博导老师,华南理工