微控制器定時器和中斷初始化流程是什麼樣的啊?還有就是TMOD和SCON的初值是怎麼計算出來的

時間 2021-09-06 09:15:33

1樓:

至於那些書上都有的理論知識我就不說了,就簡單的說一下吧,樓主可以想簡單點

定時器工作的流程可以按照這個順序(以51為例用定時器0方式一產生50毫秒的定時)

1、確定使用哪個定時器,使用哪種方式,這一步通過tmod設定,tmod的低四位是設定定時器0的,高四位是用來設定定時器1的,其中的m0,m1是用來設定定時器工作在哪種方式,gate一般用不要設定,c/t是選擇計數模式還是定時模式的,如:tmod = 0x01,就說明定時器0工作在方式1。

2、接下來就要設定定時的時間,用定時器定時50毫秒,可以用這種方式th0 = (65535 - 50000) / 256,tl0 = (65535 - 50000) % 256;可以這樣理解:因為這是定時器的初值,也就是說計數脈衝就是在這個數的基礎上向上遞增,到達65535後就溢位產生中斷,至於為什麼是對256取整,和取餘的話樓主自己先琢磨吧, 不懂再hi我;

3、第三步就要開啟中斷了,使用ie暫存器,我一般是對各個位進行單獨設定,這樣看起來感覺更好,首先開啟總中斷ea = 1,這一步是所有中斷所必須的,然後開啟定時器0中斷,et0 =1;

4、這時準備工作都準備好了就要開始啟動定時器了,使用tcon暫存器,tr0 = 1,到現在為止就實現了一個50毫秒的定時了;

總結一下:tmod = 0x01; th0 = (65535 - 5000) / 256; tl0 = (65535 - 50000) % 256; ea = 1; et0 = 1; tr0 = 1,至於那個中斷函式我就不寫了,要注意的是方式0 ,1, 3是不能自動重灌的,所以得在中斷函式中重新對th0 ,tl0賦初值,樓主說的那個scon暫存器就是用於串列埠的,定時器會用了的話,串列埠也就會了的,希望能夠幫助樓主了

2樓:a_代

只有th1、tl1,th0、tl0,需要設定初值,tmod和scon是暫存器,c/t為0時定時,為1時計數,開始中斷的話要設定ie暫存器。

建議看書吧,書上有詳細介紹的比如 郭天祥的書,有些書上介紹的含糊不清,找一本好的書看可以事半功倍。你學組合語言的話建議你看範紅剛的書。郭天祥的是c語言。這是我目前比較喜歡的書

c51微控制器串列埠初始化為何是這樣:scon=0x52;tmod=0x20;th1=0xf3;tr1=1;

微控制器定時器0設定為工作方式1為tmod=0x01;定時器1設定工作方式1時tmod=0x10;還是和定時器0一樣為0x01

3樓:

答:微控制器定時器0設定為工作方式1為tmod=0x01;定時器1設定工作方式1時tmod=0x10.閣下看tmod裡的各個位啥意思就知道了。

#include

void main()

}這個程式不對。

錯誤有:

1.主程式沒設定波特率、串列埠工作方式、定時器初值,也沒說中斷還是查詢方式來工作,咋個通訊啊!

2.假設已經設定好了,接下來的也不行。

while(!ti);

後面要加ti=0;清楚傳送中斷標誌。

3.ren要放在最外頭,除非你傳送時不允許接收,才在裡頭寫。

4. if(ri==1)ri=0;

要寫成:while(!ri);ri=0;

一直等到接收完畢才將ri清零。接收時要停在哪兒等著,呵呵。所以是while不能是if.

#include

void main()}

4樓:匿名使用者

1.定時器0,1共用一個模式暫存器

低4位用於設定定時器0,高4位用於設定定時器1所以要設定定時器1為工作方式1應該為:tmod =0x10;

2.使用串列埠要先設定序列口工作方式

還有,你程式是要接收還是傳送?看不懂

微控制器定時器中斷功能和定時器定時功能有什麼區別,什麼情況需要中斷,什麼時候不需要呢,講好必採納

小灰狼 定時器的定時,就像你設定的鬧鐘,中斷,就像你設定的鬧鐘到點自動發出聲音。如果只是定時,不產生中斷,就需要你編寫的主程式經常去檢視定時的時間到了沒,而且就算檢視到定時時間到了,你也不知道是什麼時候到的,如果有中斷,則會自動跳到中斷函式執行你安排好的 鬧鐘發出聲音就是安排好的,也可以是震動 硬體...

51微控制器定時器中斷程式

m愛人 再次重新啟動。用c語言實現的,先要定義好定時器的初值,不管你使用多大的晶振,使用51微控制器,一般都是12分頻出來,也就可以得出一個機器週期,機器週期 12 n n指晶振頻率 假設你要定時的時間為m,那麼定時的初值為 m 機器週期 初值 th0 65536 初值 256 tl0 65536 ...

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 開定時...