基于AT89C51的定時(shí)器實(shí)驗(yàn),匯編語言,分享出來是希望各位能共同學(xué)習(xí)。附上注釋希望能認(rèn)真研究,若有錯(cuò)誤請指出,謝謝。
一、實(shí)驗(yàn)?zāi)康?/strong>
- 掌握單片機(jī)定時(shí)器的使用方法。
- 掌握中斷的使用方法。
二、實(shí)驗(yàn)內(nèi)容
采用中斷方式控制定時(shí)器。使得單片機(jī)P1.0引腳產(chǎn)生周期為1S的方波,控制發(fā)光二極管D1以1S為周期閃爍(即亮、滅的時(shí)間各為0.5S)。單片機(jī)P1.1引腳產(chǎn)生周期為20S的方波,控制發(fā)光二極管D2以20S為周期閃爍(即亮、滅的時(shí)間各為10S)。
三、 實(shí)驗(yàn)說明
?????? 中斷定時(shí)時(shí)間可設(shè)置為50ms,計(jì)時(shí)50ms時(shí)間到即進(jìn)入中斷子程序。同時(shí),程序設(shè)置兩個(gè)計(jì)數(shù)器,進(jìn)入中斷子程序則計(jì)數(shù)器10減1,計(jì)數(shù)器10減為0則定時(shí)時(shí)間為0.5s,此時(shí)可將P1.0口的值取反,產(chǎn)生周期為1s的方波;而當(dāng)0.5s時(shí)間到,計(jì)數(shù)器20可減1,當(dāng)減為0則定時(shí)時(shí)間為10s,此時(shí)可將P1.1口的值取反,產(chǎn)生周期為20s的方波。
四、實(shí)驗(yàn)代碼
代碼以及注釋
ORG 0000H ;程序入口地址
AJMP START ;跳轉(zhuǎn)到START程序
ORG 000BH ;中斷服務(wù)程序入口
AJMP TIME ;中斷服務(wù)程序TIME
ORG 0030H ;START程序起始地址
START:
MOV SP,#60H ;設(shè)置堆棧指針
MOV TMOD,#01H ;設(shè)置T0方式1定時(shí)模式
MOV TL0,#0B0H ;TL0賦初值
MOV TH0,#3CH ;TH0賦初值,總定時(shí)50ms
SETB ET0 ;允許T0中斷
SETB TR0 ;啟動T0計(jì)數(shù)
SETB EA ;允許總中斷
MOV R7,#20 ;計(jì)數(shù)器2 ,只有R1循環(huán)十次,R0才循環(huán)一次
MOV R2,#10 ;計(jì)數(shù)器1
LOOP:
AJMP LOOP ;等待循環(huán)
TIME:
MOV TL0,#0B0H ;恢復(fù)定時(shí)器初值
MOV TH0,#3CH
DJNZ R2,SS ;當(dāng)R1不為0時(shí),跳出中斷,又開始計(jì)時(shí),為0時(shí),將R1的循環(huán)次數(shù)恢復(fù),為下一次循環(huán)做準(zhǔn)備
MOV R2,#10
CPL P0.0 ;計(jì)時(shí)到0.5s,P0.0取反
DJNZ R7,SS ;當(dāng)R0不等于0時(shí),跳出中斷,計(jì)時(shí),為0時(shí),恢復(fù)循環(huán)次數(shù),
MOV R7,#20
CPL P0.1
SS:
RETI
END
電路圖如下
?
五、實(shí)驗(yàn)結(jié)果
1.定時(shí)器D1 0.5S閃爍一次
2.定時(shí)器D2 10S閃爍一次
六、實(shí)驗(yàn)小結(jié)文章來源:http://www.zghlxwxcb.cn/news/detail-507366.html
要注意到原本電阻很大,LED沒辦法亮起來,將電阻改為100歐姆以后,LED正常使用(通過測試,低于500歐姆能發(fā)光,不過電阻在500歐姆時(shí)候只會微亮,不明顯)文章來源地址http://www.zghlxwxcb.cn/news/detail-507366.html
到了這里,關(guān)于51單片機(jī)定時(shí)器實(shí)驗(yàn)(匯編)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!