實現定時中斷_無線傳感器網絡實驗報告(二)Timer定時應用實驗

c379f8bb225f2c56500bb4fc597a733c.png

實驗二: Timer定時應用實驗

2.1實驗目的

1. 認識并了解 CC2530 定時器;

2. 學習定時器的基本配置與應用;

3. 在 ZigBee 模塊上運行定時器程序。

2.2實驗原理

根據數據手冊可知 CC2530 總共有 4 個定時器,但是定時器 2 被系統占用,可用的只有三個,分別為 定時器 1、3、4。其中定時器 3 和定時器 4 是兩個 8 位定時器,定時器 1 是一個獨立的 16 位定時器,本 節主要介紹基于定時器 1 的定時應用。定時器的一個很重要的概念是操作模式,該模式包含自由運行模 式(free-running)、模模式(modulo)和正計數/倒計數模式(up-down)。以下為摘自 CC2530 中文手冊 關于 3 種模式的介紹:

在自由運行操作模式下,計數器從 0x0000 開始,每個活動時鐘邊沿增加 1。 當計數器達到 0xFFFF 時(溢出),計數器載入 0x0000,繼續遞增它的值,如圖 3.2.1 所示。當達到終計數值 0xFFFF,設置 標志 IRCON.T1IF 和 T1STAT.OVFIF。如果設置了相應的中斷屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN,將產生 一個中斷請求。自由運行模式可以用于產生獨立的時間間隔,輸出信號頻率。

aa11c75557d7090cf7a1cb6e43be8935.png

當定時器運行在模模式時,16 位計數器從 0x0000 開始,每個活動時鐘邊沿增加 1。當計數器的計數 值達到 T1CC0 時溢出。寄存器 T1CC0H 與 T1CC0L 保存的終計數值將復位到 0x0000,并繼續遞增。如果 定時器開始于T1CC0以上的一個值,當達到終計數值(0xFFFF)時,設置標志IRCON.T1IF和 T1CTL.OVFIF。 如果設置了相應的中斷屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN,將產生一個中斷請求。該模式可以用于周期不是 0xFFFF 的應用程序。計數器的操作展示在圖 3.2.2 中。

c982319bebea4a6f89716d30aa3041af.png

在正計數/倒計數模式,計數器反復從 0x0000 開始,正計數直到達到 T1CC0H 與 T1CC0L 保存的值。 然后計數器將倒計數直到 0x0000,如圖 3.2.3 所示。這個定時器用于周期必須是對稱輸出脈沖而不是 0xFFFF 的應用程序,因此允許中心對齊的 PWM 輸出應用的實現。在正計數/倒計數模式,當達到終計 數值時,設置標志 IRCON.T1IF 和 T1CTL.OVFIF。如果設置了相應的中斷屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN,將產生一個中斷請求。

17c216d16dd17685f6ca7592c1114513.png

由以上三種模式的比較可以得出:自由運行模式的溢出值為 0xFFFF 不可變;而其他兩種模式則通過 對 T1CC0 賦值,以精確控制定時器的溢出值。

本實驗通過對 CC2530 內部定時器 T1 的配置與使用,實現對 ZigBee 模塊上的 LED 燈以 1 秒為時間單 位進行均等時間的定時閃爍,即讓模塊上的 LED 指示燈實現 0.5s 亮與 0.5s 滅,它們亮滅的時間是均等 的。這種均等的時間實現效果正是由 CC2530 的內部定時器 T1 來實現的。

2.2.1 電路分析與程序配置

本節使用 CC2530 的定時器 1 來實現對 LED 的定時閃爍時間控制,所使用的原理圖與 3.1 節的一致,即:D4 所對應的 I/O 為 P1_0,D2 所對應的 I/O 為 P1_1,D3 所對應的 I/O 為 P1_2,本實驗選擇 P1_0, P1_1 和 P1_2 I/O 引腳,P1_0 控制模塊上的 LED 燈 Status/Data,P1_1 控制模塊上的 LED 燈 Net,P1_2 控制模塊上的 LED 燈 User1。故在軟件上只要配置好 P1_0,P1_1,P1_2 并初始化好定時器 1 即可。

699444f6eb4b43ca1af8fe3149166cd1.png

本次實驗學習到的新寄存器:

T1CTL:定時器 1 的控制寄存器。D1、D0 控制運行模式;D3、D2 設置分頻值。

c8ad77ce418b6f3674323885979c75b3.png

T1STAT:定時器 1 的狀態寄存器,D4~D0 為通道 4~通道 0 的中斷標志,D5 為溢出標志位,當計數到 終計數值時自動置 1。

9ef0d3191ebfd95db489e7a52c75989f.png

IRCON:中斷標志寄存器;0 為無中斷請求。1 為有中斷請求。

e94ddd3d18ff02412303959906d774ca.png

IEN1:中斷允許寄存器 1

4237ff43a4fec284f01d045c7d169707.png

2.3 實驗步驟

1. 正確連接 ZB-LINK 調試器到 PC 機和 ZigBee 模塊,可參考第 1 章的 1.3 節進行連接;

8c467423693a1e020732d2f87fb4823f.png

2. 打開:【配套光盤04-實驗例程02-ZigBee技術與應用第三章 CC2530基礎功能實驗3.2 Timer 定時應用實驗實驗代碼】中的實驗工程:“timer.eww”,選擇 Project→Rebuild All 重新編譯 工程;

3. 選擇 Project→Download and debug 將程序下載到 ZigBee 模塊,下載完成后點

e384b2457e20c2f247f36b82e45ee2df.png

退出;

bd6e814c80d679bf0e392e83017c1b9b.png

4. 按下 ZB-LINK 調試器的復位按鈕讓剛才下載的程序重新運行。

2.4實驗源碼

#include <ioCC2530.h>          //引入CC2530所對應的頭文件(包含各SFR的定義)
#include "sys_init.h"uint counter=0;                //統計溢出次數/*主函數-------------------------------------------------------*/
void main()
{led_init();     //LED初始化 time1_init();   //T1中斷初始化while(1); 
}/*中斷服務子程序-------------------------------------------------------*/
#pragma vector = T1_VECTOR      __interrupt void T1_ISR(void)            {       EA=0;                           //關總中斷 counter++;if(counter>15)                  //0.5s時間{counter=0;  D4 = !D4;D2 = !D2;D3 = !D3;}T1IF=0;                         //清中斷標志EA=1;                           //開總中斷 }

2.5 實驗結果與分析

程序運行后,會發現 ZigBee 模塊上的所有 LED 指示燈在定時器 1 的作用下開始以1秒為周期,0.5s 為亮滅時間間隔的方式不停地閃爍,從而達到了本節實驗所要求的實驗效果。

67a7ac7f6c0da6a2f210788d16c71ed7.png

86ab49655c66241e025835edb416371a.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535039.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

詳析java中的關鍵字和權限修飾

&#x1f4a1;涉及的知識點速通&#x1f6eb; 關于關鍵字你都知道什么?&#x1fa82; this和super關鍵字&#x1fa82; instanceof關鍵字&#x1fa82; static關鍵字&#x1fa82; final關鍵字&#x1f6eb; 權限修飾符的作用范圍知多少?各位小伙伴們大家好&#xff0c;歡迎來…

JQ 全選后獲取選中的值_Filecoin如何創建賬戶錢包并獲取FIL測試幣

昨天"猩動力節點"加入了fielcoin的測試網絡&#xff0c;對用戶或者礦工來說&#xff0c;如何獲取代幣&#xff0c;創建錢包保護好自己的資產&#xff0c;每一個用戶來說都很關心。下面我們一起來學習如何創建賬戶錢包&#xff0c;并獲取FIL 測試代幣。在創建賬戶錢包…

Redis中 字符串的常用命令

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

mac wmware 無網絡_無線網絡中常用的技術名詞

1、LAN&#xff1a;即局域網&#xff1a;是路由和主機組成的內部局域網&#xff0c;一般為有線網絡。2、WAN&#xff1a;即廣域網&#xff1a;是外部一個更大的局域網。3、WLAN(Wireless LAN&#xff0c;即無線局域網)&#xff1a;前面我們說過LAN是局域網&#xff0c;其實大多…

python界面開發webview_python在webview和activity混合頁面下怎么定位

展開全部 genymotion 模擬器&#xff1a;android 5.0.0 python 2.7 appium 1.4.16.1 1、app原生元素定位&#xff08;常用&#xff09; driver.find_element_by_id(“resourse-id”32313133353236313431303231363533e59b9ee7ad9431333363393662) driver.find_element_by_name(“…

androidstudio build tools安裝_Android Studio4.0 安裝及配置

本來打算十一月份寫的&#xff0c;結果。。。就在我備注原來的文章的時候&#xff0c;硬盤壞了。。。所以重新配置環境。。。換硬盤&#xff0c;。。。壞的太突然以至于數據都沒有備份。。。。建議大家在參考教程安裝之前先大致瀏覽一遍&#xff0c;這樣安裝的時候就會大致知道…

Redis 五大數據類型的常用命令——列表、集合、哈希、有序集合

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

python工程師面試寶典_2019年,Python工程師必考的6個面試題,Python面試題No5

第1題&#xff1a;Python里面如何實現tuple和list的轉換&#xff1f; 函數tuple(seq)可以把所有可迭代的(iterable)序列轉換成一個tuple, 元素不變&#xff0c;排序也不變 list轉為tuple&#xff1a; temp_list [1,2,3,4,5] 將temp_list進行強制轉換&#xff1a;tuple(temp_li…

aop注解配置切點 spring_springboot aop 自定義注解方式實現一套完善的日志記錄

一&#xff1a;功能簡介本文主要記錄如何使用aop切面的方式來實現日志記錄功能。主要記錄的信息有: 操作人&#xff0c;方法名&#xff0c;參數&#xff0c;運行時間&#xff0c;操作類型(增刪改查)&#xff0c;詳細描述&#xff0c;返回值。二&#xff1a;項目結構圖如果想學習…

抽象類、接口的區別和相似點

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的《Java核心技術 卷Ⅰ》筆記專欄&#xff0c;在這個系列專欄中我將記錄淺學這本書所得收獲&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波簡直就是血賺 &#x1f4a1;涉及的知識點速通&#x1f6eb; abs…

c標簽判斷true false jsp_Java學習知識點:小白如何掌握JSP技術?

今天千鋒廣州小編就給大家分享零基礎如何掌握JSP技術&#xff0c;下面一起來看看吧!一、Java初級開發之jsp概述1.關于jspJavaServer Pages簡稱jsp&#xff0c;從“server”這個詞可以看出&#xff0c;這其實也是一門java服務端技術&#xff0c;其實可以簡單的把jsp認為是servle…

python語言保留字的特點_python保留字及其說明

原博文 2019-07-14 22:05 ? 保留字 說 明 and 用于表達式運算&#xff0c;邏輯與操作 as 用于類型轉換 assert 斷言&#xff0c;用于判斷變量或條件表達式的值是否為真 break 中斷循環語句的執行 class 用于定義類 continue 繼續執行下一次循環 ...011647 相關推薦 2019-12-19…

使用Java操作Redis的兩種方式Jedis、RedisTemplate

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站黑馬的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&#…

python提取數據庫數據_Python如何讀取MySQL數據庫表數據

本文實例為大家分享了Python讀取MySQL數據庫表數據的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下 環境&#xff1a;Python 3.6 ,Window 64bit 目的&#xff1a;從MySQL數據庫讀取目標表數據&#xff0c;并處理 代碼&#xff1a; # -*- coding: utf-8 -*- import p…

【項目實戰】基于Redis實現短信驗證碼登錄 (附源碼、思路)

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站黑馬的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&#…

加工中心刻字宏程序_FANUC OI系列圖書——車床、銑床及加工中心編程

? 這是金屬加工(mw1950pub)發布的第10035篇文章導讀今天跟大家分享FANUC OI系列圖書&#xff0c;包括車床、銑床及加工中心編程&#xff0c;快來看看吧&#xff01;《FANUC 0i數控車床/加工中心編程技巧與實例》選擇在企業里應用*廣泛、編程*具代表性的日本FANUCSeries0i-TC/T…

Redis 的緩存策略

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站黑馬的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&#…

python顯示數據長度_python – 獲取CSV的長度以顯示進度

我正在處理大量CSV文件,每個文件都包含大量行.我的目標是逐行獲取數據并使用 Python將其寫入數據庫.但是,由于存在大量數據,我希望能夠跟蹤已寫入的數據量.為此,我計算了排隊的文件數量,并在每次文件完成時繼續添加一個文件. 我想為CSV文件做類似的事情并顯示我在哪一行,以及總…

關閉后天 樹莓派_陪你一起玩樹莓派-系統安裝

從今天就開始我們的樹莓派之旅&#xff0c;心情是不是有點小激動&#xff1f;我們拿到一個樹莓派是一個裸機。我們要準備一張16G的高速TF閃存卡&#xff0c;一個5V/2A的USB電源和一根micro B的 usb線。裝機步驟&#xff1a;一、下載樹莓派系統1、瀏覽器打開樹莓派官方網站 http…

簡單的簽到代碼_PHP實現一個小小的簽到功能,到底用MySQL還是Redis?

來源 | http://suo.im/5EWN3k今天&#xff0c;看下簽到功能怎么選擇&#xff1f;現在的網站和app開發中&#xff0c;簽到是一個很常見的功能&#xff0c;如微博簽到送積分&#xff0c;簽到排行榜~微博簽到如移動app &#xff0c;簽到送流量等活動&#xff0c;移動app簽到用戶簽…