Ⅰ 單片機執行順序問題
SETB TRO,作用是啟動定時器T0,
你的程序不對,應該先裝入初值,後啟動定時器。
===================================
MOV TMOD,#01H ;定時器T1模式0,定時,定時器T0模式1,定時
SETB TRO ;啟動定時器T0
LOOP MOV TH0,#0B1H ;定時器T0裝入初值
MOV TL0,#0E0H
LOOP1 JNB TF0,LOOP1 ;等待定時器T0溢出。不溢出就在這句等待 一旦溢出了就執行JNB的下一句。
==========================================================
我給你改了一下
MOV TMOD,#01H ;定時器T1模式0,定時,定時器T0模式1,定時
CLR TF0 ;★清除溢出標志
LOOP MOV TH0,#0B1H ;定時器T0裝入初值
MOV TL0,#0E0H
SETB TRO ;★啟動定時器T0
LOOP1 JNB TF0,LOOP1 ;等待定時器T0溢出。不溢出就在這句等待 一旦溢出了就執行JNB的下一句。
Ⅱ 單片機上電復位的工作原理
其工作原理是:通電時,電容兩端相當於是短路,於是RST引腳上為高電平,然後電源通過電阻對電容充電,RST端電壓慢慢下降,降到一定程度,即為低電平,單片機開始正常工作。
首先RST保持兩個機器周期以上的高電平時自動復位
1、上電復位:上電瞬間,電容充電電流最大,電容相當於短路,RST端為高電平,自動復位;電容兩端的電壓達到電源電壓時,電容充電電流為零,電容相當於開路,RST端為低電平,程序正常運行。
2、手動復位:首先經過上電復位,當按下按鍵時,RST直接與VCC相連,為高電平形成復位,同時電解電容被短路放電;按鍵松開時,VCC對電容充電,充電電流在電阻上,RST依然為高電平,仍然是復位,充電完成後,電容相當於開路,RST為低電平,正常工作。
Ⅲ 單片機應用程序的開發步驟
具體步驟如下:
1、首先,開啟我們的keil軟體,具體的安裝步驟就不做太多的介紹了;
開啟後,點擊菜單欄上的Project選項,創建我們的工程,如圖所示;
編譯完成後,在我們的文件夾下找到.hex的文件,將其燒寫到我們的晶元中即可。
Ⅳ 單片機定時器和中斷初始化流程是什麼樣的啊還有就是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寄存器就是用於串口的,定時器會用了的話,串口也就會了的,希望能夠幫助樓主了