日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(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

衡水市| 辰溪县| 陆川县| 临澧县| 德令哈市| 六安市| 仲巴县| 万源市| 谢通门县| 酒泉市| 民权县| 怀来县| 滦南县| 金阳县| 武定县| 衡南县| 同心县| 含山县| 沙坪坝区| 监利县| 印江| 获嘉县| 新竹市| 舒城县| 桓台县| 冕宁县| 大姚县| 赫章县| 长武县| 青海省| 封开县| 徐闻县| 新野县| 苏尼特左旗| 天津市| 芷江| 芮城县| 瓦房店市| 石楼县| 油尖旺区| 习水县|