Re: [問題] 如何讓跑馬燈反彈跑回去
※ 引述《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
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章