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 亮后没加延时就灭了。 |