新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 實驗三、單片機的內(nèi)中斷處理

實驗三、單片機的內(nèi)中斷處理

作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
1、用定時器中斷控制信號燈。

ORG 0000H

本文引用地址:http://m.butianyuan.cn/article/201611/320489.htm

LJMP MAIN

ORG 000BH ;內(nèi)中斷T0入口地址

LJMP T0INT

ORG 02400H

MAIN: MOV SP,#30H

MOV A,#00H

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB EA

SETB ET0

SETB TR0

LOOP: LJMP LOOP

ORG 0340H

T0INT: MOV TH0,#3CH

MOV TL0,#0B0H

MOV P1,A

CPL A ;亮點閃爍

RETI

END

分析:在本程序中,使用定時器0的中斷方式產(chǎn)生100ms的延時,實現(xiàn)8個LED的亮點閃爍。當(dāng)給SP、A賦值后,程序員給TMOD、TH0、TL0,將TR0置1,然后執(zhí)行“LOOP: SJMP LOOP”指令,這樣不斷的循環(huán)。

2、 用定時器中斷和外中斷控制信號燈。

ORG 0000H

LJMP MAIN

ORG 0003H ;外中斷入口地址

LJMP INT

ORG 000BH ;內(nèi)中斷入口地址

LJMP T0INT

ORG 0100H

MAIN: MOV SP,#30H

MOV A,#0FEH

MOV TMOD,#01H

SETB EA

SETB EX0

SETB IT0

SETB ET0

SETB PX0 ;設(shè)置外部中斷0為高優(yōu)先級

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0

LOOP0: LJMP LOOP0

ORG 0200H ;內(nèi)中斷程序塊

T0INT: MOV TH0,#3CH

MOV TL0,#0B0H

MOV R3,#08H

MOV P1,A

LCALL DELAY

RL A ;亮點流動

RETI

ORG 0300H ; 外中斷程序塊

INT: PUSH ACC

MOV A,#00H

MOV R3,#08H

LOOP1: MOV P1,A

LCALL DELAY

CPL A ;亮點閃爍

DJNZ R3,LOOP1

POP ACC

RETI

ORG 0400H ;延遲程序塊

DELAY: MOV R0,#0FFH

D1: MOV R1,#0FFH

D2: MOV R2,#0FFH

D3: DJNZ R2,D3

DJNZ R1,D2

DJNZ R0,D1

RET

END

分析:程序開始時,使用定時器0的中斷方式產(chǎn)生100ms的延時,實現(xiàn)8個LED的亮點流動。在亮點流動的過程中,如果按下單脈沖鍵,由于將外部中斷0的優(yōu)先級設(shè)置為高優(yōu)先級,所以8個LED的發(fā)光狀態(tài)將改為同時閃爍,閃爍8次恢復(fù)亮點流動(閃爍時間間隔由延時程序完成)。

3、實驗心得

計數(shù)器/定時器本質(zhì)上都是是對一個脈沖源進行加1計數(shù)。它的計數(shù)的脈沖源是什么取決了它是計數(shù)器還是定時器;加1計數(shù)器的脈沖源是來自于晶體振蕩器時,為定時狀態(tài);脈沖源是來自于單片機外部,由于外部的的脈沖間隔不一定相等,計數(shù)和時間就沒有明確的關(guān)系密切,所以這時只能是對外部的脈沖進行“計數(shù)”。在實驗中,由于沒有給單片機輸入外部信號,這說明定時/計數(shù)器的計數(shù)脈沖來自于單片機的晶體振蕩,即定時/計數(shù)器工作在定時狀態(tài)下。

由振蕩頻率來計數(shù),因為一個機器周期包括12個振蕩周期,計數(shù)器加1實際上累加的是機器周期,每一個機器周期,計數(shù)器就加1。根據(jù)振蕩頻率,可以得出計數(shù)脈沖的間隔時間,即計數(shù)器加1的時間間隔。當(dāng)已知計數(shù)/定時器的差值時,就可得達到定時效果。



關(guān)鍵詞: 單片機內(nèi)中斷處

評論


技術(shù)專區(qū)

關(guān)閉