这是一个51单片机的流水灯的程序,但是在keil里调试不出效果,望答疑,谢谢,下附有程序

#include<reg52.h>
unsigned char code table[]={0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
};
void delay() ;
main()
{
unsigned char i;
while(1)
{
for (i=0;i<8;i++);
{
P1=table[i];
delay();

}

}
}
void delay()
{
unsigned int i;
for(i=0;i<10000;i++);

}

我是实在看不下去了,你把for循环后面加分号就成语句了,他就不会循环8次,i+7 = 8才跳出for循环,所以就这里错误了。
#include<reg52.h>
unsigned char code table[]={0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
};
void delay() ;
main()
{
unsigned char i;
while(1)
{
for (i=0;i<8;i++); // 把后面分号去掉
{
P1=table[i];
delay();

}

}
}
void delay()
{
unsigned int i;
for(i=0;i<10000;i++);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-30
#include<reg52.h>

unsigned char code table[] = {
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

void delay()
{
unsigned int i;
for(i = 0; i < 10000; i++);
}

main()
{
unsigned char i;
while(1) {
for (i = 0; i < 8; i++) {
P1 = table[i];
delay();
}
}
}

试试看。
第2个回答  2014-03-30
延时加长一些,或单步调试
第3个回答  2014-03-30
for语句括号后面多了一个分号? 延时函数可以换个字母,10000改小点试下
相似回答