1樓:匿名使用者
做一個時鐘,24小時一個迴圈週期,每個分度的時間長短根據實際情況定。時鐘工作在定時器中斷子程式裡,主程式不斷和時鐘對時,如果符合設定值就開通電機。 下面的程式你參考下,裡面具體的值我沒算過,你自己算下改了吧。
如果分頻暫存器不夠按我的演算法加。別說不會哦。。
org 00h
ljmp start
org 0bh
ljmp timer
org 32h
start:
setb p1.0 ;p1.0用於控制電機,高電平關,低電平開mov ie,#10000010b
mov tmod,#00000010b
mov th0,#55
mov tl0,#55
mov sp,#6fh
clr rs0
clr rs1
mov r0,#00h
mov r1,#00h
setb tr0
ljmp loop
timer:
inc r0 ;這些是分頻暫存器,自己根據需要設定好了,我不給你算了。如果不夠自己加。
cjne r0,#2,end_timer
mov r0,#00h
inc r1
cjne r1,#130,end_timermov r1,#00h
end_timer:
reti
loop:
mov a,r1
mov b,#100 ;設r1值在100~110之間時開通電機div ab ;通過除法比較大小,如果商等於零,說明r1中的值小於100
jz off
mov a,r1
mov b,#110 ;如果r1值大於100,在比較是否小於110div ab
jz on
ljmp off
on:clr p1.0
ljmp loop
off:
setb p1.0
ljmp loopend
2樓:浴血前鋒
[原創心得]菜鳥請教問題謹記5條忠告:
1,別問小白問題,自己多看兩眼書或去網上搜尋下就知道答案的問題別拿出來問,沒人會理你。
2,別問泛泛的問題,誰也沒時間給你係統的上一堂課,你的老師都不見得會這麼做。
3,實在弄不明白了,再把問題歸納到一個瓶頸,組織好語言再拿出來虛心請教。
4,耐心等待有時間的大蝦指教,別吭哧c吭哧v的滿世界都問到,很招人煩的。
5,如果問問題還口出不遜,那就是自取其辱,不信你試試
微控制器時間中斷,51微控制器中的定時器中斷是怎麼用的 ?
while 1 在那 會使微控制器停在那 相當於是等待當中斷來臨時 執行中斷 下面那個就是當到50ms的時候 執行計時器1中斷如果沒有那個while 1 則主程式就執行完了 中斷會沒有作用中斷和程式主程式各個執行是同步的 因為你把那個et0開了 則就有時鐘中斷了 當到了50ms 中斷就會自動作用 停...
51微控制器中的定時器中斷是怎麼用的
如下 實現led燈一秒亮滅閃爍 void main tmod 0x01 設定定時器0為工作方式1 m1 m0為01 th0 65536 45872 256 裝初值11.0582晶振定時50ms數為45872 tl0 65536 45872 256 ea 1 開總中斷 et0 1 開定時器0中斷 tr...
51微控制器T0定時器4種方式的定時時長分別是多少
模式0 8192 模式1 65536 模式2 256 自動重灌載模式,波特率發生器必須是這個模式 模式3 256 該模式用處不大,將定時器分成兩個8位定時器 這個取決於系統時鐘和定時器位數。例如傳統89c51微控制器 在不考回慮新型微控制器有分頻設定的情答況下 12mhz系統時鐘,採用8位定時器,最...