国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

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

單片機(jī)日常系列!今天我在修改定時(shí)器定時(shí)功能...

關(guān)鍵字:單片機(jī) 定時(shí)器 PIC單片機(jī) LED 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-18  瀏覽:17

慎用標(biāo)志位(本人單片機(jī)菜鳥(niǎo),高手請(qǐng)高抬貴手,歡迎指點(diǎn)!~)

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

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

以我今天修改的為例:

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

要求是

藍(lán)燈每5s亮一次,大概亮100ms;

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

紅燈和藍(lán)燈盡量錯(cuò)開(kāi)。

我的思路是,

定義一個(gè)10s的時(shí)間軸,用定時(shí)器來(lái)實(shí)現(xiàn),在2.5秒和7.5秒時(shí)刻點(diǎn)亮藍(lán)燈,在10s時(shí)刻點(diǎn)亮紅燈。

有一個(gè)全局變量cnt。

定義一個(gè)全局變量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進(jìn)一次中斷

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)然的以為這樣是可以的,且不知這里有一個(gè)bug,因?yàn)樵?.5-10s的時(shí)候,也符合這個(gè)條件的。。。這樣出來(lái)的系哦啊過(guò)就不是上面所想的

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

編輯:admin  最后修改時(shí)間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

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

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