从单片机基础到程序框架(全集 2019pdf版).pdf - 第559页
P1_5=1; //第 2 个灯 灭 P1_6=1; //第 3 个灯 灭 P3_3=0; //第 4 个灯 亮 vGu8RunT imerFlag=0; vGu16Run TimerCnt=RU N_TIME; //用于 控制跑马灯跑 动速度的定时 器 vGu8RunT imerFlag=1; //启动 定时器 Su8RunSt ep=1; //返回 到第 1 步,重新开 始下一轮的循 环!!! } break; } }

P1_6=1; //第 3 个灯灭
P3_3=1; //第 4 个灯灭
vGu8RunTimerFlag=0;
vGu16RunTimerCnt=RUN_TIME; //用于控制跑马灯跑动速度的定时器
vGu8RunTimerFlag=1; //启动定时器
Su8RunStep=2; //切换到下一步
}
break;
case 2:
if(1==Gu8RunStatus&&0==vGu16RunTimerCnt) //当前处于“启动”状态,并且定时器等于 0
{
P1_4=1; //第 1 个灯灭
P1_5=0; //第 2 个灯亮
P1_6=1; //第 3 个灯灭
P3_3=1; //第 4 个灯灭
vGu8RunTimerFlag=0;
vGu16RunTimerCnt=RUN_TIME; //用于控制跑马灯跑动速度的定时器
vGu8RunTimerFlag=1; //启动定时器
Su8RunStep=3; //切换到下一步
}
break;
case 3:
if(1==Gu8RunStatus&&0==vGu16RunTimerCnt) //当前处于“启动”状态,并且定时器等于 0
{
P1_4=1; //第 1 个灯灭
P1_5=1; //第 2 个灯灭
P1_6=0; //第 3 个灯亮
P3_3=1; //第 4 个灯灭
vGu8RunTimerFlag=0;
vGu16RunTimerCnt=RUN_TIME; //用于控制跑马灯跑动速度的定时器
vGu8RunTimerFlag=1; //启动定时器
Su8RunStep=4; //切换到下一步
}
break;
case 4:
if(1==Gu8RunStatus&&0==vGu16RunTimerCnt) //当前处于“启动”状态,并且定时器等于 0
{
P1_4=1; //第 1 个灯灭

P1_5=1; //第 2 个灯灭
P1_6=1; //第 3 个灯灭
P3_3=0; //第 4 个灯亮
vGu8RunTimerFlag=0;
vGu16RunTimerCnt=RUN_TIME; //用于控制跑马灯跑动速度的定时器
vGu8RunTimerFlag=1; //启动定时器
Su8RunStep=1; //返回到第 1 步,重新开始下一轮的循环!!!
}
break;
}
}

第一百零九节: 按键控制跑马灯的方向。
【109.1 按键控制跑马灯的方向。】
上图 109.1.1 独立按键
上图 109.1.2 LED 电路
上图 109.1.3 有源蜂鸣器的电路
之前 108 节讲到跑马灯的启动、暂停、停止,本节在此基础上,增加一个“方向”的控制,除了加深理
解输入设备如何关联应用程序的程序框架之外,还有一个知识点值得一提,就是如何通过灵活切换 switch
的“步骤变量”来达到随心所欲的过程控制,本节的“方向”的控制就用到这个方法。
本节例程的功能如下: