因为你用了case语句,每一行都要有break;才行。另外,这个程序可以简化,如下 #include#include#define led P0void delay(){unsigned int a=50000;while(a--);}void main(){unsigned char i;while(1){for(i=0;i<8;i++){switch(i){case 0:led=0x01; delay();break;case 1:led=0x02; delay();break;case 2:led=0x04; delay();break;case 3:led=0x08; delay();break;case 4:led=0x10; delay();break;case 5:led=0x20; delay();break;case 6:led=0x40; delay();break;case 7:led=0x80; delay();break;}}}}
建议这样来控制:
void main() { int i,a; unsigned char x; while(1) { a=50000; while ( a-- ); x=1; for ( i=0,x=1;i<8;i++,x<<=1 ) P0=x; }}
你的程序问题出在每个case分支应当以break语句结尾。