定時/計數器學習筆記
一、基本概念
1、 89c51有兩個計數器t0和t1,89c52還有乙個t2。每個計數器都是由兩個8位的ram 單元組成的,即每個計數器都是16 位的計數器,最大的計數容量是2
16=65536,記住是從0-65535。
2、 提供給定時器的計數源又是從**來的呢?就是由微控制器的晶振經過12 分頻後獲得的乙個脈衝源。乙個12m 的晶振,它提供給計數器的脈衝時間間隔是就是1us。
3、 預置數計數法。如果每個脈衝是1微秒,則計滿65536個脈衝需時65.536毫秒。但是如果只需要10毫秒就可以了,怎麼辦?只要在計數器裡預先放進55536,這樣只需要計數65536-55536=10000次,也就是10毫秒了。
二、控制字
1、特殊功能暫存器
tmod(
89h)
用於
t1
用於
t0
gate
c/t
m1
m0
gate
c/t
m1
m0
gate:0用於內部脈衝;1用於外部脈衝。
c/t:0用於定時器;1用於計數器。
m1m0:工作方式
範圍
特性
工作方式0
13位,8192次
為了和51 的前輩48系列相容
工作方式1
16位,65536
16位,其他特性與工作方式0相同,比較常用
工作方式2
8位,256次
自動再裝入預置數,預置數放在t0(或t1)的高8位中,只有低8 位參與計數,通常用於波特率發生器
工作方式3
8位,256次
th0只能作為定時器用,tl0可作定時器或計數器。溢位標記:tl0 還是用原來的t0的標記,而th0則借用t1的標記,因此只有在t1 以工作方式2 執行時,才讓t0 工作於方式3。
2、特殊功能暫存器
tcon(
88h)
用於定時
/計數器
用於中斷
tf1
tr1
tf0
tr0
ie1
it1
ie0
it0
tr0/tr1:定時器的開關。
tf0/tf1:計數溢位後由0變為1。
3、t2定時器。
89c52支援
t2定時
/計數器。
t2操作模式
rclk+tclk
cp/rl2
mode
0
0
16-bit auto-reload,tl2增量溢位
0
1
16-bit capture
1
x
baud rate generator
中斷學習筆記
一、基本概念
1、 89c51微控制器中共有5 個中斷源:兩個外部中斷,兩個定時/計數器中斷(溢位),乙個序列口中斷。
2、 微控制器中斷系統中有兩種不同型別的中斷:一種稱為非遮蔽中斷,使用者不能用軟體方法加以禁止;另一種稱為遮蔽中斷,本文描述的都是這種型別。
3、
二、控制字
1、 外部中斷。微控制器的12、13(p3.2、p3.3)腳引入,名稱為int0、int1。以上的tcon暫存器用於控制外部中斷。
it0:int0的觸發方式。0表示低電平觸發;1表示負跳變觸發。
ie0:有外部中斷進入時,該位置1。cpu響應後自動清0。
2、 內部中斷。tcon暫存器,定時器中已描述。
3、 序列口中斷。
4、 中斷允許暫存器
中斷允許暫存器
ea
x
et2
es
et1
ex1
et0
ex0
ea:總開關
et2:定時/計數器2控制位,89c52支援。
其他:定時/計數器0、1和外部中斷0、1控制位。
5、 中斷入口位址
² 外中斷0(int0):0003h
² 定時器0(t0) :000bh
² 外中斷1(int1):0013h
² 定時器1(t1) :001bh
² 串列埠中斷 :0023h
6、 中斷函式。比如t0的中斷函式示例如下:
void t0() interrupt 1 using 0{};
定時器中斷
系統初始化的時候在預設的系統初始化函式 systeminit 函式裡面已經初始化 apb1 的時鐘為 2 分頻,所以 apb1 的時鐘為 36m。當 apb1 的時鐘分頻數為 1 的時候,tim2 7 的時鐘為 apb1 的時鐘,而如果 apb1 的時鐘分頻數不為 1,那麼 tim2 7 的時鐘頻率...
定時器中斷
tmod 0x01 th0 65536 50000 256 tl0 65536 50000 6 ea 1 et0 1 tr0 1 void timer0 interrupt 1 ea 1 開總中斷允許 et0 1 開定時器0允許 tmod 0x01 定時器選擇軟體啟動,工作方式為1 th0 6553...
定時器 中斷
1 實現電視劇集中的10s定時炸彈功能 炸彈炸了用蜂鳴器模擬 include unsigned char code smgduan 17 unsigned int ms,sec 10,s sbit p1 0 p1 0 void delay unsigned int n void isr timer0...