實(shí)驗(yàn)三、單片機(jī)的內(nèi)中斷處理
MAIN:
LOOP:
T0INT:
分析:在本程序中,使用定時(shí)器0的中斷方式產(chǎn)生100ms的延時(shí),實(shí)現(xiàn)8個(gè)LED的亮點(diǎn)閃爍。當(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:
分析:程序開(kāi)始時(shí),使用定時(shí)器0的中斷方式產(chǎn)生100ms的延時(shí),實(shí)現(xiàn)8個(gè)LED的亮點(diǎn)流動(dòng)。在亮點(diǎn)流動(dòng)的過(guò)程中,如果按下單脈沖鍵,由于將外部中斷0的優(yōu)先級(jí)設(shè)置為高優(yōu)先級(jí),所以8個(gè)LED的發(fā)光狀態(tài)將改為同時(shí)閃爍,閃爍8次恢復(fù)亮點(diǎn)流動(dòng)(閃爍時(shí)間間隔由延時(shí)程序完成)。
3、實(shí)驗(yàn)心得
計(jì)數(shù)器/定時(shí)器本質(zhì)上都是是對(duì)一個(gè)脈沖源進(jìn)行加1計(jì)數(shù)。它的計(jì)數(shù)的脈沖源是什么取決了它是計(jì)數(shù)器還是定時(shí)器;加1計(jì)數(shù)器的脈沖源是來(lái)自于晶體振蕩器時(shí),為定時(shí)狀態(tài);脈沖源是來(lái)自于單片機(jī)外部,由于外部的的脈沖間隔不一定相等,計(jì)數(shù)和時(shí)間就沒(méi)有明確的關(guān)系密切,所以這時(shí)只能是對(duì)外部的脈沖進(jìn)行“計(jì)數(shù)”。在實(shí)驗(yàn)中,由于沒(méi)有給單片機(jī)輸入外部信號(hào),這說(shuō)明定時(shí)/計(jì)數(shù)器的計(jì)數(shù)脈沖來(lái)自于單片機(jī)的晶體振蕩,即定時(shí)/計(jì)數(shù)器工作在定時(shí)狀態(tài)下。
由振蕩頻率來(lái)計(jì)數(shù),因?yàn)橐粋€(gè)機(jī)器周期包括12個(gè)振蕩周期,計(jì)數(shù)器加1實(shí)際上累加的是機(jī)器周期,每一個(gè)機(jī)器周期,計(jì)數(shù)器就加1。根據(jù)振蕩頻率,可以得出計(jì)數(shù)脈沖的間隔時(shí)間,即計(jì)數(shù)器加1的時(shí)間間隔。當(dāng)已知計(jì)數(shù)/定時(shí)器的差值時(shí),就可得達(dá)到定時(shí)效果。
評(píng)論