68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機入門 >> 單片機日常系列!今天我在修改定時器定時功能...

單片機日常系列!今天我在修改定時器定時功能...

關(guān)鍵字:單片機 定時器 PIC單片機 LED 作者:admin 來源:不詳 發(fā)布時間:2018-05-18  瀏覽:8

慎用標(biāo)志位(本人單片機菜鳥,高手請高抬貴手,歡迎指點!~)

這里說的是合理謹(jǐn)慎的運用標(biāo)志位,否則很容易出現(xiàn)錯誤,也很難debug。

今天工作的時候,修改定時器定時功能的時候,得出的經(jīng)驗,這里說的與具體的單片機無關(guān),是個通用的想法。

以我今天修改的為例:

PIC單片機的兩個I/O引腳控制著兩個LED燈(分別為藍燈和紅燈,這里以LED代替,避免涉及公司里的內(nèi)容)的亮和滅。

要求是

藍燈每5s亮一次,大概亮100ms;

紅燈每隔10s亮一次,每次亮100ms;

紅燈和藍燈盡量錯開。

我的思路是,

定義一個10s的時間軸,用定時器來實現(xiàn),在2.5秒和7.5秒時刻點亮藍燈,在10s時刻點亮紅燈。

有一個全局變量cnt。

定義一個全局變量times = 0。

[cpp] view plain copy print?

0 2.5s 5s 7.5s 10s

|-------------|===|-------------|-------------|===|-------------|+++|

blue blue red

|----times=0------|----------times=1----------|----times=0-----------|

我理所當(dāng)然的就

每10ms進一次中斷

if((cnt > 250)&&(times == 0))

{

times = 1;

blue_led_light_flag = 1;

blue_led_on = 1;

}

if((cnt > 750)&&(times == 1))

{

times = 0;

blue_led_light_flag = 1;

blue_led_on = 1;

}

if(cnt > 1000)

{

red_led_light_flag = 1;

red_led_on = 1;

}

if((cnt > 250)&&(times == 0)) 理所當(dāng)然的以為這樣是可以的,且不知這里有一個bug,因為在7.5-10s的時候,也符合這個條件的。。。這樣出來的系哦啊過就不是上面所想的

我們應(yīng)該改為if((cnt > 250)&&(times == 0)&&(cnt < 750))這樣才是可以的。。。

編輯:admin  最后修改時間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

盖州市| 台前县| 沛县| 济南市| 贡嘎县| 开封县| 高雄市| 瓦房店市| 内江市| 英山县| 栾城县| 阿克| 合江县| 甘泉县| 搜索| 太湖县| 工布江达县| 绥棱县| 托克逊县| 漯河市| 永城市| 永平县| 拉萨市| 共和县| 峨边| 曲周县| 嘉峪关市| 海淀区| 云和县| 永靖县| 宁武县| 孟津县| 九寨沟县| 松溪县| 威宁| 葵青区| 临洮县| 深水埗区| 梓潼县| 邹城市| 安图县|