#include #define led1 p0_0 //巨集定義led1 為p0_0
#define led2 p0_1
#define led3 p1_4
void io_init(void)
void main(void)
以前對定時器了解不多,趁此機會了解學習。
cc2530 使用的mcu是增強版的8051,通過51微控制器定時器學習資料結合cc2530 datasheet學習cc2530定時器
51微控制器內部有兩個16位可程式設計定時器(t0,t1).而cc2530有四個定時器定時器16位t1,t2被系統占用,t3t4是8位定時器。可以使用的只有t1,t3.t4. 定時器既有定時功能又有計數功能。 工作原理是:
cpu一旦設定好開啟功能,定時器便在時鐘的驅動下開始計數,當計數器計滿之後(如16位計數器達到0xffff),再來乙個脈衝,計數器就會益出。此處會有乙個標誌位會被設定,如果定時器的中斷使能了,此時會產生中斷。
閱讀cc250 datasheet 第9章,cc2530通過兩個8位的sfr讀取16位計數器值:t1cnth 和t1cntl,分別是高位和低位。當達到最終計數器益出時,計數器產生乙個中斷請求。 使用t1ctl 控制暫存器設定啟動並停止該計數器。定時器1的使用主要是用控制暫存器t1ctl控制定時器操作,狀態暫存器t1stat儲存中斷標誌。
有如下操作模式:
1. 自由執行模式,
2.模模式
3.正計數/倒計數模式
4.通道模式控制
5.輸入捕捉模式
6.輸出比較模式
直接看9.12 節 定時器暫存器:
主要來看t1ctl和t1stataa兩個暫存器。
控制暫存器如下表:
狀態暫存器 如下表:
我們對led3和定時器1暫存器進行配置。通過定時器t1查詢方式控制led1以1s的週期閃爍.
定時器1初始化:(使用128分頻(11)自由執行從0x0000_0xffff反覆計數(01),)
t1ctl = 0x0d; //128分頻,自動重灌 0x0000-0xffff
t1stat = 0×21; //通道0, 中斷有效
重點: 系統在不配置工作頻率時預設為 2分頻,即 32m/2=16m,所以定時 器每次溢位時 t=1/(16m/128)*65536≈0. 5s, s, s, 所以總時間 ta=t*count=0. =0.5*1=0.5s切換 1次狀態 。所以看起來是 1s 閃爍 1次
#include#define uint unsigned int
#define uchar unsigned char
//定義三個led燈
#define led1 p0_0
#define led2 p0_1
#define led3 p1_4
//函式宣告
void init(void);
void delay(uint xms);
void delayms(uint xms)//延遲函式,
void init(void)
// 主函式
void main(void)
}}}
效果圖如下:
zigbee基礎應用(四)定時器
1.暫存器相關 舉個栗子 t1ctl 0x0d 128分頻,自動重灌 0x0000 0xffff t1stat 0x21 通道0,中斷有效 2.程式案例 描述 通過定時器t1查詢方式控制led1周 期性閃爍 include define uint unsigned int define uchar ...
ZigBee開發 5 基礎實驗定時器
一 定時 技術器的基本原理 定時 計數器,是一種能夠對內部時鐘訊號或外部輸入訊號進行計數,當計數值達到設定要求時,向cpu提出中斷處理請求,從而實現定時或者計數功能的外設。定時 計數器的最基本工作原理是進行計數。不管是定時器還是計數器,本質上都是計數器,可以進行加1 減1 計數,每出現乙個計數訊號,...
zigbee學習之定時器
以下是我自己的總結,我不會分析 簡單講起來沒有好大意思,主要是抓住核心知識框架。脈衝 32mhz就是一秒鐘32000000個脈衝 時鐘週期 1 f 1 32us 指令週期等於時鐘週期 在51中是機械週期 12 時鐘週期 內部是16mhz,定時器內部乙個脈衝,定時器計數就加一 定時器 1 查詢法 t1...