|
最近琢磨給高達(dá)模型加燈,一開始想在那個寶上找一些跑馬燈、呼吸燈的成品,但是花樣都不是我想要的。
偶爾看到有一家店買C51單片機控制的心形燈。作為野生碼農(nóng),就決定自己搞搞,用C51來控制花樣切換等等。
作為單片機零基礎(chǔ)的人,在論壇看了不少范例,借鑒了論壇上 http://www.zg4o1577.cn/bbs/dpj-153979-1.html (謝謝該程序的作者)的代碼自己寫了一個,用了P1和P2兩組IO,總共16個燈組(每組等1-4個燈不等),燈的樣式有3個花樣,各個樣式通過按鈕(p3.2 int0)切換
花樣1:所有燈按順序漸亮,LED1逐漸點亮,然后LED2逐漸點亮,最終所有燈全亮,耗時大概5、6秒
花樣2:所有燈循環(huán)呼吸燈,一個循環(huán)大概1秒
花樣3:所有燈一直全亮
3個樣式我都實現(xiàn)了,但是切換按鈕有點問題。
如果處于花樣1、花樣2,按下按鈕后不會馬上切換,而是要等花樣執(zhí)行完之后才會切換。
后來經(jīng)過研究、對比,發(fā)現(xiàn)是因為花樣1和花樣2的耗時太長,需要等執(zhí)行完了再回去判斷花樣代碼才會調(diào)整花樣。
然后我就在花樣1、花樣2的每個delay函數(shù)前加一個if,來判斷是否有按按鍵,如果有就終止花樣重新判斷花樣代碼,并執(zhí)行相應(yīng)的花樣。最終實現(xiàn)了我要的效果,花樣切換很及時。
但是這樣的話,就有很多if語句,整個代碼看起來很不美光。
請問各位大佬,在主循環(huán)或子函數(shù)需要執(zhí)行很多指令或耗時比較長,在執(zhí)行過程中因為某些情況需要終止當(dāng)前循環(huán)或者函數(shù)時,你們是怎么處理的呢?謝謝。
|
|