1 4 1 zigbee基礎(定時器1查詢方式)

2021-06-26 11:22:29 字數 1639 閱讀 4644

#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...