標準的 51 微控制器內部有 t0 和 t1 這兩個定時器,t 就是 timer 的縮寫。
t0和t1的控制由兩個8位特殊功能暫存器完成:乙個為定時器的方式選擇暫存器tmod用於確定定時器還是計數器工作模式;另乙個叫做定時器控制暫存器tcon,可以決定定時器或計數器的啟動、停止及進行中斷控制。
第一步:設定特殊功能暫存器 tmod,配置好工作模式。
第二步:設定計數暫存器 th0 和 tl0 的初值。
第三步:設定 tcon,通過 tr0 置 1 來讓定時器開始計數。
第四步:判斷 tcon 暫存器的 tf0 位,監測定時器溢位情況。
寫程式之前,我們要先來學會計算如何用定時器定時時間。我們的晶振是 11.0592m,時鐘週期就是 1/11059200,機器週期是 12/11059200,假如要定時 20ms,就是 0.02 秒,要經過x 個機器週期得到 0.02 秒,我們來算一下 x*12/11059200=0.02,得到 x= 18432。16 位定時器的溢位值是 65536(因 65535 再加 1 才是溢位),於是我們就可以這樣操作,先給 th0 和 tl0乙個初始值,讓它們經過 18432 個機器週期後剛好達到 65536,也就是溢位,溢位後可以通過檢測 tf0 的值得知,就剛好是 0.02 秒。那麼初值y = 65536 - 18432 = 47104,轉成 16 進製就是 0xb800,也就是 th0 = 0xb8,tl0 = 0x00。這樣 0.02 秒的定時我們就做出來了,細心的同學會發現,如果初值直接給乙個 0x0000,一直到 65536 溢位,定時器定時值最大也就是 71ms 左右,那麼我們想定時更長時間怎麼辦呢?
#include
sbit led = p0^0;
sbit addr0 = p1^0;
sbit addr1 = p1^1;
sbit addr2 = p1^2;
sbit addr3 = p1^3;
sbit enled = p1^4;
void
main()
}}}
金沙灘51微控制器數碼管
數碼管共有 a b c d e f g dp 這麼 8 個段,而實際上,這 8 個段每一段都是乙個 led 小燈,所以乙個數碼管就是由 8個 led 小燈組成的。數碼管分為共陽和共陰兩種,共陰數碼管就是 8 只 led 小燈的陰極是連線在一起的,陰極是公共端,由陽極來控制單個小燈的亮滅。同理,共陽數...
金沙灘51微控制器點亮乙個LED燈
我用的開發板型號是金沙灘51微控制器 ide是keil4,普通的c語言環境。include 包含特殊功能暫存器定義的標頭檔案 sbit led p0 0 sbit addr0 p1 0 sbit addr1 p1 1 sbit addr2 p1 2 sbit addr3 p1 3 sbit enle...
金沙灘51微控制器74HC138 三八解碼器的應用
在我們設計微控制器電路的時候,微控制器的 io 口數量是有限的,有時並滿足不了我們的設計需求,比如我們的 stc89c52 一共有 32 個 io 口,但是我們為了控制更多的器件,就要使用一些外圍的數字晶元,這種數字晶元由簡單的輸入邏輯來控制輸出邏輯,比如 74hc138這個三八解碼器,圖 3 15...