|
發布時間: 2019-11-18 23:43
正文摘要:http://www.iqiyi.com/w_19say7ygl1.html 目的是通過定時器中斷來讓流水燈和數碼管做出相應的動作; 流水燈每隔時間在第一個p10和第二個p11流水 數碼管從左邊到右邊分別顯示,并且由0-7變化,即第一個數碼管顯示0 ... |
switch-case-break語句和位碼都錯了,給你改成數碼管動態顯示0~7+流水燈
|
|
罷了,不賣關子了,貼 while(1){ switch(num){ case 0:p20=0;p21=0;p22=0;P0=table1[q];P1=0xfe; break; case 1:p20=0;p21=0;p22=1;P0=table1[q];P1=0xfd; break; case 2:p20=0;p21=1;p22=0;P0=table1[q];P1=0xfb; break; case 3:p20=0;p21=1;p22=1;P0=table1[q];P1=0xf7; break; case 4:p20=1;p21=0;p22=0;P0=table1[q];P1=0xef; break; case 5:p20=1;p21=0;p22=1;P0=table1[q];P1=0xdf; break; case 6:p20=1;p21=1;p22=0;P0=table1[q];P1=0xbf; break; case 7:p20=1;p21=1;p22=1;P0=table1[q];P1=0x7f; break; } delay0(30); num++; if(num==8){ num=0; } if(p==20){ p=0; q++; if(q>9) q=0; } } |
|
switch 每個 case 后邊,加break 。。。。。。。。。邏輯也要調整一下的,自己慢慢 調整 試試 |
| 圖和程序,不對應的。 。。。。。。 |
為啥加了延時之后還是一樣? |
devcang 發表于 2019-11-19 09:04 為啥加了還是只是p1.1這個燈在亮
|
|
函數改成這樣 delay0(100);////////////////////////這一行,放在兩個if里面。 |
|
void main(){ init(); while(1){ if(p==40){ if(num<8){ switch(num){ case 0:p20=0;p21=0;p22=0;P0=table1[num];P1=0xfe; case 1:p20=0;p21=0;p22=1;P0=table1[num];P1=0xfd; case 2:p20=0;p21=1;p22=0;P0=table1[num];P1=0xfe; case 3:p20=0;p21=1;p22=1;P0=table1[num];P1=0xfd; case 4:p20=1;p21=0;p22=0;P0=table1[num];P1=0xfe; case 5:p20=1;p21=0;p22=1;P0=table1[num];P1=0xfd; case 6:p20=1;p21=1;p22=0;P0=table1[num];P1=0xfe; case 7:p20=1;p21=1;p22=1;P0=table1[num];P1=0xfd; } num++; delay(15);////////////////////////這一行,放在兩個if里面。 }else{ num=0; } p=0; } } } |
| LED 亮后沒加延時就滅了。 |