作者jayemshow (S.Kazumi)
看板C_and_CPP
標題[問題] 8051 跑馬燈問題
時間Wed Oct 3 16:33:31 2012
我是用 uVision2 寫的跑馬燈程式
但我在寫一個跑馬燈程式的時候發現
他沒辦法重複的 round
就只有第一次成功的出現想要樣子
第二輪就完全沒東西
我寫的程式是這樣
#include <REG51F.H>
#define uchar unsigned char
#define uint unsigned int
void Delay(uint dly);
void Delayf(uint dlf);
void main(void)
{
uchar i,j=0,k=0,m=0x80;
uint l=1;
while (1) {
for (i=9; i>0; i--) {
P2=m; P0=l; Delay(200);
m>>=1; l<<=1;
}
}
}
void Delay(uint dly)
{
wait:
dly--;
if (dly!=0) goto wait;
}
void Delayf(uint dlf)
{
uint j;
for (j=dlf; j>0; j--);
}
我是想要達到這樣的結果
○○○○○○○○ ○○○○○○○○
●○○○○○○○ ○○○○○○○●
○●○○○○○○ ○○○○○○●○
○○●○○○○○ ○○○○○●○○
○○○●○○○○ ○○○○●○○○
○○○○●○○○ ○○○●○○○○
○○○○○●○○ ○○●○○○○○
○○○○○○●○ ○●○○○○○○
○○○○○○○● ●○○○○○○○
循環
但是執行過一次之後,他就會消失了
我以為是迴圈的問題,但看了很久還是看不出哪裡有問題
因為還有其他段落,所以宣告了很多變數 ...
只有這一段會消失,請各位版友點一下
看了一個下午看不出來 = ="
我果然沒有寫程式的天分 ...
先謝謝各位大大了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.10.152
推 damody:m l 沒有設定到 10/03 16:42
→ bigpigbigpig:你的迴圈跑過一次以後,m 和 l 就陣亡了 10/03 17:22
→ bigpigbigpig:m=0x80;l=1;應放在 while (1)迴圈內 每一次都要重設 10/03 17:24
→ jayemshow:太感謝樓上的大大了,現在馬上來試試看 !! 10/03 19:44
→ jayemshow:可否請大大告知為什麼我的 m l 設在迴圈外會死掉嗎 ? 10/03 19:55
→ jayemshow:我想說照著 j 和 k 一樣定義應該是沒問題的 10/03 19:56
→ MaxHaru:因為">>"和"<<"是補0,0x80<<1是0x00,0x00>>1還是0x00 10/04 16:31