實驗三、單片機的內(nèi)中斷處理
MAIN:
LOOP:
T0INT:
分析:在本程序中,使用定時器0的中斷方式產(chǎn)生100ms的延時,實現(xiàn)8個LED的亮點閃爍。當(dāng)給SP、A賦值后,程序員給TMOD、TH0、TL0,將TR0置1,然后執(zhí)行“LOOP: SJMP LOOP”指令,這樣不斷的循環(huán)。
2、
MAIN:
LOOP0:
T0INT:
INT:
LOOP1:
DELAY:
D1:
D2:
D3:
分析:程序開始時,使用定時器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ù)/定時器的差值時,就可得達到定時效果。
評論