999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

定時器實現LED燈周期性閃爍的研究與應用

2020-12-04 05:24:28松,張
數字通信世界 2020年11期

高 松,張 博

(北京政法職業學院信息技術系,北京 102628)

0 引言

物聯網技術是新一代信息技術的產物,物聯網(Internet of Things)指的是物物相連的網絡。隨著物聯網技術的飛速發展,在物聯網相關領域中,經常會用到通過定時一定的時間達到想要的效果。在物聯網應用領域,針對于ZigBee開發板,要達到準確的定時,經常使用定時/計數器來實現定時效果。本文以定時器1為例,詳細論述使用定時器三種工作模式實現LED燈周期性閃爍的思路和程序設計方法。

1 定時器介紹

1.1 定時/計數器的工作原理

定時/計數器的主要功能就是定時和計數,其工作原理是通過對時鐘信號或外部輸入信號進行加1的計數,當計數值達到設定值時便向CPU提出中斷處理請求,從而實現較為精準的時間控制。在實現定時或計數的過程中,不需要CPU過多的參與,CPU可以去執行其他程序,因而不僅可以準確定時,還可以提高CPU的工作效率,因此,定時器被廣泛應用在物聯網開發中。

1.2 定時/計數器的分類

CC2530單片機中共包含了5個定時/計數器,分別是定時器1、定時器2、定時器3、定時器4和睡眠定時器。其中,定時器1是16位定時器,定時器3和4都是8位的定時器,三種定時器都具有“自由運行”、“模”、“正計數/倒計數”三種不同的工作模式。三種工作模式除了位數不同,需要配置的寄存器也有區別,特別是“模”模式,需要單獨配置T1CCTL0寄存器用來開啟0通道的輸出比較模式。

2 定時器的三種工作模式

2.1 自由運行模式

該模式下,計數器從0x0000開始,計數到0xFFFF時溢出,計數值為65535。如果晶振分頻后1秒鐘振動的次數為125 kHz,那么計數器溢出一次的時間65535/125000,大約是0.5秒鐘。

2.2 模模式

計數器從0x0000開始,計數到T1CC0寄存器設定的值時溢出。T1CC0寄存器是由兩個8位寄存器來存儲一個16位的數值,這兩個8位寄存器分別是T1CC0H(用來存儲16位數值的高八位)、T1CC0L(用來存儲16位數值的低八位),需要匹配跟要求的定時時間相關的計數值并存入這兩個寄存器中。使用模模式時要特別注意,需要配置寄存器T1CCTL0 |= 0x04;用來開啟通道0的輸出比較模式,否則計數器的值達到T1CC0后,是不會產生溢出中斷的。

2.3 正計數/倒計數模式

計數器從0x0000開始,正計數到T1CC0寄存器的匹配值時溢出,再倒計時回到0x0000,接著又正計數到T1CC0寄存器的匹配值時溢出,重復此過程。

正計數/倒計數模式與模模式的區別在于模模式是從0開始計數到設置的匹配值時產生溢出,而正計數/倒計數模式是從設置的匹配值倒計數到0,再正計數到設置的匹配值時溢出。因此在匹配值相同的情況下,溢出一次的時間是模模式的兩倍。

3 實際應用

3.1 項目需求

如果系統時鐘采用16 MHzRC振蕩器,128分頻。利用定時器1的中斷控制方式,使用CC2530單片機內部定時/計數器的三種模式實現1秒定時,控制LEDA(P1_0)和LEDB(P1_1)進行周期性閃爍,兩個LED燈的初始狀態均為熄滅。兩個燈的具體閃爍效果要求為:通電后1秒鐘,LEDA點亮,持續1秒,熄滅;LEDB點亮,持續2秒,熄滅。重復LEDA點亮,持續1秒,熄滅;LEDB點亮,持續2秒,熄滅,循環此過程。

3.2 項目分析

首先使用宏定義定義兩個LED燈和引腳的對應關系。即

#define LEDA P1_0

#define LEDB P1_1

針對項目要實現的功能,分析通電后1秒鐘,LEDA亮1秒鐘時間,LEDB亮2秒鐘時間。然后LEDA亮1秒鐘時間,LEDB亮2秒鐘時間。依此類推,兩個燈閃爍的周期為3秒鐘。即通電后第2秒、第5秒、第8秒……狀態一樣,LEDA點亮;第3秒、第6秒,第9秒……狀態一樣,LEDB點亮。

首先要解決的是1秒定時的問題。16 MHz分頻后的頻率為125 kHz,要定時1秒鐘的時間,如果使用自由運行模式,溢出兩次才能定時約1秒。由于自由運行模式是自動從16進制的最小值0000增加到16進制的FFFF,因此計數次數是65535,該模式下不需要匹配計數值。

如果使用模模式,由于定時器1是16位定時器,匹配值最大不能超過65535。因此將125 kHz除以2,得到0.5秒的計數次數為62500次。將62500轉換為16進制的F424,并分別存入高8位寄存器T1CC0H、低8位寄存器T1CC0L。即

T1CC0H=0xF4;

T1CC0L=0x24;

注意:目前的兩個寄存器的匹配值對應的時間是0.5秒。當然也可以使用0.25秒或0.2秒的匹配值,原則上是只要能被1秒鐘整除就可以。

如果是定時0.2秒,那么125 kHz除以5,得到0.2秒的計數次數為25000次,將25000轉換為16進制的61A8,并分別存入T1CC0H、T1CC0L,即

T1CC0H=0x61;

T1CC0L=0xA8;

如果是定時0.25秒,那么125 kHz除以4,得到0.25秒的計數次數為31250次,將31250轉換為16進制的7A12,并分別存入T1CC0H、T1CC0L,即

T1CC0H=0x7A;

T1CC0L=0x12;

對于正計數/倒計數模式,在定時時間一樣的情況下,要在模模式的匹配值基礎上,除以2。那么需要將0.5秒對應的計數值62500轉換為16進制的F424后,再除以2,得到7A12,分別存入T1CC0H、T1CC0L。即

T1CC0H=0x7A;

T1CC0L=0x12;

同理如果是0.2秒,那么F424除以5,得到0.2秒的匹配值30D4,將30D4分別存入T1CC0H、T1CC0L,即

T1CC0H=0x30;

T1CC0L=0XD4;

如果是0.25秒,那么F424除以4,得到0.25秒的匹配值3D09,將3D09分別存入T1CC0H、T1CC0L,即

T1CC0H=0x3D;

T1CC0L=0X09;

3.3 程序設計

在程序設計中,根據項目需求,兩個LED燈的變化均以1秒時間為基礎時間,而溢出一次的時間為0.5秒或0.2秒或0.25秒,均未達到1秒。因此需要定義一個跟溢出次數相關的變量num,初值為0。每溢出一次,num自增1,通過判斷num的值是否滿足一定條件來判斷是否到達1秒鐘。

當匹配值為0.5秒計數值的中斷服務函數具體如下所示:

當匹配值為0.25秒計數值的中斷服務函數具體如下所示:

T1STAT &= ~0x20; //對應正計數/倒計數模式;如果是模模式,應為0x01

通過上述對于三種工作模式,分別通過定時0.5秒、0.2秒、0.25秒三種情況的程序設計,均可實現準確的定時效果。

4 結束語

在物聯網應用開發中,使用定時器能實現精確的定時效果。三種工作模式中模模式和正計數/倒計數模式的溢出時間相差一倍,在計算匹配值時要精確計算,并正確的存入高八位寄存器和低八位寄存器。在使用溢出次數變量時,也要準確的設置判斷溢出次數是否達到定時時間的條件,才可準確定時。

主站蜘蛛池模板: 中文字幕在线看| 免费一级成人毛片| 亚洲日韩日本中文在线| 亚洲天堂精品在线观看| 久久精品一卡日本电影| 欧美成人综合视频| 午夜毛片免费观看视频 | 亚洲中文字幕国产av| 日韩福利视频导航| 国产精品99一区不卡| 国产精品美人久久久久久AV| 国产免费高清无需播放器| 国产精品女在线观看| 97精品国产高清久久久久蜜芽 | 麻豆国产在线不卡一区二区| 一区二区三区成人| 无码aⅴ精品一区二区三区| 99久久精品视香蕉蕉| 一级成人a毛片免费播放| 国产综合无码一区二区色蜜蜜| 亚洲水蜜桃久久综合网站| 国产十八禁在线观看免费| 日本午夜在线视频| 在线无码私拍| 小蝌蚪亚洲精品国产| 亚洲va欧美va国产综合下载| 国产一区成人| 51国产偷自视频区视频手机观看| 精品人妻AV区| 日韩成人高清无码| 成人在线不卡视频| 国产毛片片精品天天看视频| 亚洲欧美精品一中文字幕| a免费毛片在线播放| 久久青草免费91观看| 特级毛片8级毛片免费观看| 亚洲国产精品不卡在线 | 欧美a在线看| 在线观看免费国产| 亚洲国产欧美国产综合久久 | 久久这里只有精品23| 国产成人精品2021欧美日韩| 国产凹凸视频在线观看| 香蕉综合在线视频91| 欧美国产视频| 国产美女在线免费观看| 亚洲视频在线观看免费视频| 国产自产视频一区二区三区| 欧美97色| 亚洲无码免费黄色网址| 亚洲视频免| 日韩毛片免费| 精品视频福利| 国产精品第一区在线观看| 欧美色丁香| 国产91丝袜| 国产在线91在线电影| 国产成人综合欧美精品久久| 草逼视频国产| 国产精品不卡片视频免费观看| 欧美全免费aaaaaa特黄在线| 干中文字幕| 69视频国产| 国产白丝av| 精品国产www| 国产亚洲精品97在线观看| 午夜毛片免费观看视频 | 日本三级欧美三级| AV无码一区二区三区四区| 99热这里只有精品久久免费| 欧美国产在线看| 日韩精品一区二区三区中文无码| 制服丝袜在线视频香蕉| 免费看av在线网站网址| 国产区在线观看视频| 久久午夜夜伦鲁鲁片不卡| 热伊人99re久久精品最新地| 国产超碰一区二区三区| 欧美亚洲一区二区三区导航 | 欧美精品色视频| 美女视频黄又黄又免费高清| 日韩无码黄色|