定時器
我們學單片機是首先學的就是led閃爍,那是用延時程序做的,現在回想起來,這樣做不很恰當,為什么呢?我們的主程序做了燈的閃爍,就不能再干其它的事了,難道單片機只能這樣工作嗎?當然不是,我們能用定時器來實現燈的閃爍的功能。
例1:查詢方式
ORG 0000H
AJMP STARTORG 30H
START:
MOV P1,#0FFH ;關所 燈
MOV TMOD,#00000001B ;定時/計數器0工作于方式1
MOV TH0,#15H
MOV TL0,#0A0H ;即數5536
SETB TR0 ;定時/計數器0開始運行
LOOP:JBC TF0,NEXT ;如果TF0等于1,則清TF0并轉NEXT處
AJMP LOOP ;不然跳轉到LOOP處運行
NEXT:CPL P1.0
MOV TH0,#15H
MOV TL0,#9FH;重置定時/計數器的初值
AJMP LOOP
END AJMP LOOP
END
全文內容電子電路網:從零開始學51單片機定時器
你這樣達不到你所需要的效果,單片機仍然騰不出空來做其他事情,只能不停地查詢TF0的狀態。比如說:怎么查詢某一I/O端口電平的變化?
你可以試一試使用T0中斷的方式來達到你預期目的。不要使用查詢TF0的方式。中斷到來之前,單片機可以做其他事情;中斷發生了,單片機放下手中的活,去處理中斷請求,處理完了中斷,接著做剛才停下來的事情。。
不錯,挺一下。
| 歡迎光臨 (http://www.denmoz.com/bbs/) | Powered by Discuz! X3.1 |