Re: [問題] 如何讓跑馬燈反彈跑回去

看板C_and_CPP (C/C++)作者 (十三)時間16年前 (2009/10/03 17:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《ax780219 (Small 軒)》之銘言: : 我是電機系的學生 : 所以想請問一下要怎麼做八顆LED : 從最右邊開始一次亮三顆 : 然後延遲100ms往左移到底後 : 再反彈回來往右移 : 失敗品如下 : P0 =0x07; : for(;;) { : Delay100ms() ; : if(P0&0x80) : P0 >>=1 ; : } : else{ : P0 <<= 1 ; : 他就卡在最左邊來回彈 : 因為我才剛開始學 : 所以不知道要怎麼修改呢 : 謝謝了 P0=0x07; unsigned char A0=0x80; while (1) { Delay100ms() ; if (P0&A0) { P0>>=1; if (A0>0x08) A0>>=1; else A0=0x80; } else P0<<=1; } P0: 0111 1110 11100 111000 1110000 11100000 A0: 0x80 0x80 0x80 0x80 0x80 10000000 11100000 if為真 P0>>=1 -> 01110000 相對應A0也要是01000000 所以為A0>>=1 0x80->0x40 P0: 00111000 -> 00011100 -> 00001110 -> 00000111 A0: 0x40->0x20 0x20 -> 0x10 0x10 -> 0x08 0x08 -> 0x80 (if 判斷為false) 再往左彈回去 -- World of bleed1979 http://bleed1979.myweb.hinet.net/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.177.97
文章代碼(AID): #1AnneEzM (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AnneEzM (C_and_CPP)