单片机综合实验 - 02 | 中断与定时/计数器实验
一、實驗目的和任務
1、掌握80C51單片機外部中斷的初始化及中斷服務子程序設計方法。
2、掌握80C51單片機定時器/計數器的程序控制方法。
二、實驗原理簡介
中斷是指在突發事件到來時先中止當前正在進行的工作,轉而去處理突發事件。待處理完成后,再返回到原先被中止的工作處,繼續進行隨后的工作。引起突發事件的來源稱為中斷源,中斷源要求服務的請求稱為中斷請求,對中斷請求提供的服務稱為中斷服務,中斷管理系統處理事件的過程稱為中斷響應過程。80C51單片機至少包括5個中斷源:
INT0:外部中斷0,由P3.2端口線引入,低電平或下跳沿引起。(本實驗用)
INT1:外部中斷1,由P3.3端口線引入,低電平或下跳沿引起。
T0:定時器/計數器0中斷,由T0計滿回零引起。(本實驗用)
T1:定時器/計數器l中斷,由T1計滿回零引起。
TI/RI:串口中斷,串口完成一幀字符發送/接收后引起。
本實驗對應的硬件電路與實驗三相同(見圖3.6.1)。P0口用于控制發光管L101~L108,口線輸出0(低電平)時,對應的發光管點亮,口線輸出1(高電平)時,對應的發光管熄滅。P3口的4根口線連接獨立按鍵KX0~KX3,其中KX0對應外部中斷0,進行KX0按鍵動作的時候可以觸發外部中斷。
注意:在做本實驗時,須將撥碼開關JUMP2置為接通狀態(向左)。
三、實驗內容和步驟
1、編寫一段程序,用P0口作為控制端口,使實驗箱上的LED輪流點亮(走馬燈)。用外部中斷0/KX0控制走馬燈的暫停/繼續。
???
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服務子程序 ZEX0: PUSH ACCSETB RS0MOV R2,#2ACALL DELAY2CLR RS0JB P3.2,EXITMOV A,R5XRL A,#0FFHMOV R5,A EXIT: POP ACCCLR IE0RETI- 觀察實驗結果,解釋如何實現走馬燈的暫停和繼續。
- 比較電平觸發和邊沿觸發時走馬燈控制的難易程度。
答: ?走馬燈的暫停和繼續是通過外部按下按鍵而使單片機觸發外部中斷0,此時會進入外部中斷0服務子程序,然后通過異或操作指令來修改工作寄存器R5的值為FFH,使其在跳出外部中斷0服務子程序之后在NEXT: CJNE? R5,#00H,NEXT這條程序中進入死循環,而無法執行程序下面的位左移操作。在控制走馬燈時經過驗證電平觸發相比邊沿觸發要困難。
2、編寫一段程序,用P0口作為控制端口,使實驗箱的LED輪流點亮(走馬燈)。用定時/計數器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服務子程序 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的初值,設為最大、最小時,比較走馬燈的速度。
- 去掉R6的軟件輔助延時,是否可以?速度怎樣?
答:經過驗證,R6=0時走馬燈的速度慢,R6=1時走馬燈的速度快,原因是在DJNZ? R6,ZRET這條程序中,R6=0時DJNZ的減一操作進行了255次,也就是裝載了255次TH0和HL0的值,而R6=1時只執行了1次。ZRET處沒有重置初值時的走馬燈的速度相比有重置初值時要慢,原因是沒有重置初值,那么初值為0。當R6=50時,T0的初值設為最大時走馬燈的速度要比T0的初值設為最小時要快。不可以去掉R6的軟件輔助延時,此時走馬燈的速度快到人眼無法識別。
總結
以上是生活随笔為你收集整理的单片机综合实验 - 02 | 中断与定时/计数器实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codeforces738C
- 下一篇: 华南理工大学计算机专业博导老师,华南理工