tmod如何確定等於多少
① 單片機定時器和中斷初始化流程是什麼樣的啊還有就是TMOD和SCON的初值是怎麼計算出來的
至於那些書上都有的理論知識我就不說了,就簡單的說一下吧,樓主可以想簡單點
定時器工作的流程可以按照這個順序(以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寄存器就是用於串口的,定時器會用了的話,串口也就會了的,希望能夠幫助樓主了