以下是我自己的總結,我不會分析**,**簡單講起來沒有好大意思,主要是抓住核心知識框架。
脈衝:32mhz就是一秒鐘32000000個脈衝
時鐘週期:1/f=1/32us
指令週期等於時鐘週期(在51中是機械週期=12*時鐘週期)
內部是16mhz,定時器內部乙個脈衝,定時器計數就加一
定時器 1(查詢法)
t1ctl暫存器 定時器1控制和狀態:
t1ctl (bit 3:2) 分頻器劃分值,如下:
00: 標記頻率/1
01: 標記頻率/8
10: 標記頻率/32
11: 標記頻率/128
t1ctl (bit 1:0) 選擇定時器1模式
00: 暫停執行。
01: 自由執行,從0x0000到0xffff反覆計數。
10: 模,從0x0000到t1cc0反覆計數。
11: 正計數/倒計數,從 0x0000 到 t1cc0 反覆計數並
且從 t1cc0 倒計數到 0x0000。
t1stat(0xaf)定時器 1 狀態:
bit5: 定時器 計數器溢位中斷標誌//設定為1
bit4: 定時器 1 通道 4 中斷標誌
bit3: 定時器 1 通道 3 中斷標誌
bit2: 定時器 1 通道 2 中斷標誌
bit1: 定時器 1 通道 1 中斷標誌
bit0: 定時器 1 通道 0 中斷標誌
ircon(0xc0) 中斷標誌 4 :
bit1: 定時器1中斷標誌。當定時器1中斷發生時設為1並且當cpu向量指向
中斷服務例程時清除。 0: 無中斷未決 1: 中斷未決
t1ctl = 0x0d; //128分頻,自動重灌 0x0000-0xffff 1/(16000000/128)*65536= 0.5248s
t1stat= 0x21; //通道0,中斷有效
if(ircon > 0) ircon=0;
定時器3
t3ctl定時器3控制
[7:5]分頻器劃分值。產生有效時鐘沿用於來自 clkcon.tickspd 的定時器時鐘 。如 下
000 : 標記 頻率 /1
001 : 標記 頻率 /2
010 : 標記 頻率 /4
011 : 標記 頻率 /8
100 : 標記 頻率 / 1 6
101 : 標記 頻率 / 3 2
110 : 標記 頻率 / 6 4
111 : 標記 頻率 / 1 28
[4] 啟動定時器。正常執行時設定 ,暫停時清除,1啟動。
[3] 溢位中斷遮蔽0 :中斷禁止 1 :中斷使能
[2] 計數器。 寫 1 到 clr 復位 計數器 到 0x00 ,並初始化相關通道所有的輸出引腳。總是讀作 0 。
[1:0]定時器3模式。選擇以下模式:
0 0 : 自由執行 , 從 0x0 0 到 0xff 反覆計數
0 1 : 倒計數 , 從 t3cc 0 到 0 x 0 0 計數
1 0 : 模 , 從 0x0 0 到 t3 c c0 重複計數
1 1 : 正 / 倒計 數 , 從 0 x0 0 到 t3c c0 重複計數,降到 0x00
void initt3()
//定時器t3中斷處理函式
#pragma vector = t3_vector//(t3_vector向量位址)
__interrupt void t3_isr(void)
zigbee學習之睡眠定時器
睡眠定時器 void initsleeptimer void void syspowermode uchar mode 設定系統睡眠模式 mode等於0為pm0 1為pm1 2為pm2 3為pm3 else pcon 0x00 通過中斷喚醒系統 pragma vector st vector 中斷向...
zigbee學習之睡眠定時器
睡眠定時器 void initsleeptimer void void syspowermode uchar mode 設定系統睡眠模式 mode等於0為pm0 1為pm1 2為pm2 3為pm3 else pcon 0x00 通過中斷喚醒系統 pragma vector st vector 中斷向...
zigbee基礎應用(四)定時器
1.暫存器相關 舉個栗子 t1ctl 0x0d 128分頻,自動重灌 0x0000 0xffff t1stat 0x21 通道0,中斷有效 2.程式案例 描述 通過定時器t1查詢方式控制led1周 期性閃爍 include define uint unsigned int define uchar ...