从单片机基础到程序框架(全集 2019pdf版).pdf - 第399页

vGu8Time Flag_1=0; vGu16Tim eCnt_1=BLIN K_TIME_1; //重装 定时的时间 vGu8Time Flag_1=1; P0_0=0; P0_1=0; P0_2=0; P0_3=0; P0_4=0; P0_5=0; P0_6=1; //第 6 个灯 熄灭 P0_7=0; Su8Step= 7; //切换到下一 个步骤,精髓 语句! } break; case 7: if(0==vG u16Time…

100%1 / 836
{
vGu8TimeFlag_1=0;
vGu16TimeCnt_1=BLINK_TIME_1; //重装定时的时间
vGu8TimeFlag_1=1;
P0_0=0;
P0_1=0;
P0_2=0;
P0_3=0;
P0_4=1; //第 4 个灯熄灭
P0_5=0;
P0_6=0;
P0_7=0;
Su8Step=5; //切换到下一个步骤,精髓语句!
}
break;
case 5:
if(0==vGu16TimeCnt_1) //时间到
{
vGu8TimeFlag_1=0;
vGu16TimeCnt_1=BLINK_TIME_1; //重装定时的时间
vGu8TimeFlag_1=1;
P0_0=0;
P0_1=0;
P0_2=0;
P0_3=0;
P0_4=0;
P0_5=1; //第 5 个灯熄灭
P0_6=0;
P0_7=0;
Su8Step=6; //切换到下一个步骤,精髓语句!
}
break;
case 6:
if(0==vGu16TimeCnt_1) //时间到
{
vGu8TimeFlag_1=0;
vGu16TimeCnt_1=BLINK_TIME_1; //重装定时的时间
vGu8TimeFlag_1=1;
P0_0=0;
P0_1=0;
P0_2=0;
P0_3=0;
P0_4=0;
P0_5=0;
P0_6=1; //第 6 个灯熄灭
P0_7=0;
Su8Step=7; //切换到下一个步骤,精髓语句!
}
break;
case 7:
if(0==vGu16TimeCnt_1) //时间到
{
vGu8TimeFlag_1=0;
vGu16TimeCnt_1=BLINK_TIME_1; //重装定时的时间
vGu8TimeFlag_1=1;
P0_0=0;
P0_1=0;
P0_2=0;
P0_3=0;
P0_4=0;
P0_5=0;
P0_6=0;
P0_7=1; //第 7 个灯熄灭
Su8Step=0; //返回到第 0 个步骤重新开始往下走,精髓语句!
}
break;
}
}
//第 2 路跑马灯
void Led_2_Task(void)
{
/*
疑点讲解(1):
这里第 2 路跑马灯的“Su8Step”与第 1 路跑马灯的“Su8Step”虽然同名,但是因为它们是静态的
部变量,在两个不同的函数内部,是两个不同的变量,这两个变量所分配 RAM 内存地址是不一样的,因此,
它们虽然同名,但是不矛盾不冲突。
*/
static unsigned char Su8Step=0; //加 static 修饰的局部变量,每次进来都会保留上一次值。
switch(Su8Step)
{
case 0:
if(0==vGu16TimeCnt_2) //时间到
{
vGu8TimeFlag_2=0;
vGu16TimeCnt_2=BLINK_TIME_2; //重装定时的时间
vGu8TimeFlag_2=1;
P1_4=1; // 0 个灯熄灭
P1_5=0;
P1_6=0;
P3_3=0;
Su8Step=1; //切换到下一个步骤,精髓语句!
}
break;
case 1:
if(0==vGu16TimeCnt_2) //时间到
{
vGu8TimeFlag_2=0;
vGu16TimeCnt_2=BLINK_TIME_2; //重装定时的时间
vGu8TimeFlag_2=1;
P1_4=0;
P1_5=1; //第 1 个灯熄灭
P1_6=0;
P3_3=0;
Su8Step=2; //切换到下一个步骤,精髓语句!
}
break;
case 2: