51微控制器的定時器怎麼做延時51微控制器的定時器怎麼做延時彙編

2021-03-08 19:43:15 字數 1561 閱讀 4340

1樓:無畏無知者

1)你的主程式必須在1秒內完成一個過程,然後等待下一秒的到來;2)主程式放在一個迴圈內,並回設定答一個標記,以判斷是否觸發執行主程式,還是繼續空迴圈;

3)這個標記就由延時中斷例程來賦值;

其實,如果你的主程式能夠在1秒內完成,由沒有其他任務的話,完全可以放在中斷例程裡執行的;

2樓:黑影小生

貌似想到的方法和複雜,就是每個語句前都用cjne r1,#00h,$ // 執行語句 // ,mov r1,#00h

然後在定時器內使r1置1或其他值,這樣做很麻煩,不知你要這樣幹什麼???

3樓:匿名使用者

定時器中斷裡1s時,作個標誌,主程式裡判斷這標誌。

給你一個流水燈內

的例子參考。

*** 容00h

ajmp main

*** 0bh

ajmp t0int

*** 30h

main:

mov tmod,#01h

mov th0,#3ch

mov tl0,#0b0h

mov r0,#20

setb ea

setb et0

setb tr0

main0:

mov a,#01h

main1:

mov p1,a

jnb f0,main1

clr f0

rl a

inc a

ajmp main1

t0int:

mov tmod,#01

mov th0,#3ch

mov tl0,#0b0h

djnz r0,rti

mov r0,#20

setb f0

rti:

retiend

c程式設計時,51微控制器怎麼用定時器寫一個延時1ms的子函式

4樓:cindere鞡

51微控制器的定時器工作方式有4中,其中3種需要在中斷函式中重灌初值,而且c51明確規定中斷版函式不能傳入參權數也不能返回引數,那麼這樣一來就只能用不用重灌初值的工作方式2了,我給出了工作方式2的初始化函式:

void init(unsigned int x)這樣將x作為定時器的初值傳入,當tl0計數完成時,th0會自動將值賦給tl0,th0不變,當然你自己來定義鍵盤函式或者什麼函式來決定x的值。

希望我的回答能幫助到你。

5樓:

假如復使用12mhz晶振

定時器初

制始化:

void init(void )

主程式;

main(void)

}void inter_t0(void) //1ms中斷一次

6樓:南柯一夢之小

好辦用c51,方式一

void delay(unsigned int t) //t的單位取微秒

7樓:雨

void main()

為什麼51微控制器的定時器計時不準確

中斷函式裡面儘量少放語句,如果產生脈衝波形就只放一個 實在要放語句的話,可以增大計數的th0和tl0,頻率低一點輸出的波形會更接近你想設定的值 比如改成 除了在中斷裡執行語句外,最主要的是晶振誤差 中斷裡執行語句了吧,進入 退出中斷服務函式會有額外的系統開銷,這個過程中的時間如果不計算進去的話肯定引...

用AT89C51微控制器的定時器0以工作方式2計數,每計數100次,中斷方式將COUNT單元加

include define uchar unsigned charuchar count void t0isr interrupt 1main count equ 30h org 0000h sjmp start org 000bh inc count reti start mov tmod,06...

請問微控制器的定時中斷怎麼理解,51微控制器中的定時器中斷是怎麼用的 ?

樓上說得太專業了,就擔心樓豬看不懂哦 想想都知道 他這樣的問題都問出來,所以肯定不知道什麼是 累加器 要比喻估計好些 th0 tl0就好比兩隻水桶 0x3c,0xb0就好比放進水桶裡的水,就像遠古時期的沙漏 微控制器會自動把水一滴一滴的放幹,當水桶裡的水被放乾枯時候,說明定時時間到 0x3c,0xb...