#include<reg51.h>
#define uchar unsigned char
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
uchar led1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar led2[]={0xe7,0xdb,0xbd,0x7e};
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
void prog1(void)
{
uchar i;
while(flag)
{
P0=led1[i];
i++;
i%=8;
delay(200);
}
}
void prog2(void)
{
uchar i;
while(flag)
{
P0=led2[i];
i++;
i%=4;
delay(200);
}
}
viud prog3{void)
{
uchar i=7;
while(flag)
{
P0=led1[i];
i--;
if(i>7)i=7;
delay(200);
}
}
main()
{
flag=0;
while(1)
{
if(key1==0)
{
flag=0;
while(key1==0);
flag=1;
}
if(key2==0)
{
flag=0;
while(key2==0);
flag=1;
}
if(key3==0)
{
flag=0;
while(key3==0);
flag=1;
}
}
}
追问flag是代表1还是啥意思
flag是定义循环跳出是不?
三个亮灯方式主函数怎么没有调用啊!如果问的有点菜鸟!请原谅😔😔
追答while(1)
{
if(key1==0)
{
flag=0;
while(key1==0);
prog1();
flag=1;
}
if(key2==0)
{
flag=0;
while(key2==0);
prog2();
flag=1;
}
if(key3==0)
{
flag=0;
while(key3==0);
prog3();
flag=1;
}
}
追问嗯晓得了
本回答被提问者和网友采纳