#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0;
sbit KEY=P1^3; //特殊功能位的定义
//延时函数
void delay_ms(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主函数
void main()
{ uint i;
P0=0xfe;
for(i=0;i<8;i++)
{ delay_ms(500);
P0=P0<<1;
P0=P0|0x01;
}
end;
}
这是因为程序被反复执行。它们之间间隔时间太短,看不出来。你可以加条语句:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0;
sbit KEY=P1^3; //特殊功能位的定义
//延时函数
void delay_ms(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主函数
void main()
{ uint i;
P0=0xfe;
for(i=0;i<8;i++)
{ delay_ms(500);
P0=P0<<1;
P0=P0|0x01;
}
while(1);
end;
}追问
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0;
sbit KEY=P1^3; //特殊功能位的定义
//延时函数
void delay_ms(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主函数
void main()
{ uint i;
P0=0xfe;
for(i=0;i<8;i++)
{ delay_ms(500);
P0=P0<<1;
P0=P0|0x01;
}
while(1);
end;
}追问
为什么会反复执行,主函数里我没有添加while循环语句,按理说应该是不会反复执行的啊
追答换句话说,这个程序是反复被执行的。主函数执行完毕后,再次执行主函数,反复循环
温馨提示:答案为网友推荐,仅供参考