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

{ Gu8RunSt ep=3; } } break; } } void KeyTa sk(void) // 按键的任务 函数 { if(0==vG u8KeySec) { return; } switch(v Gu8KeySec) { case 1 : //【速度】按键 K1 switch(Gu8 Wd) //在某个窗口 下 { case 1 : //窗口 1。 //每按 一次 K1 按键,Gu 8RunSpeed 就在 1、2、3 …

100%1 / 836
P1_5=1; //第 2 个灯
P1_6=0; //第 3 个灯
P3_3=1; //第 4 个灯
vGu8RunTimerFlag=0;
vGu16RunTimerCnt=Gu16RunSpeedTimeDate; //速度时间参数变量的大小,决定了速度
vGu8RunTimerFlag=1; //启动定时器
//灵活切换“步骤变量”
if(0==Gu8RunDirection) //往右
{
Gu8RunStep=4;
}
else //往左跑
{
Gu8RunStep=2;
}
}
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=Gu16RunSpeedTimeDate; //速度时间参数变量的大小,决定了速度
vGu8RunTimerFlag=1; //启动定时器
//灵活切换“步骤变量”
if(0==Gu8RunDirection) //往右
{
if(Gu8RunCounter<99)
{
Gu8RunCounter++; //往右边跑完一次,运行的计数器自加 1
}
Gu8PartUpdate_3=1; //局部 3 的更新变量,更新显示计数
Gu8RunStep=1;
}
else //往左跑
{
Gu8RunStep=3;
}
}
break;
}
}
void KeyTask(void) //按键的任务函数
{
if(0==vGu8KeySec)
{
return;
}
switch(vGu8KeySec)
{
case 1: //【速度】按键 K1
switch(Gu8Wd) //在某个窗口
{
case 1: //窗口 1。
//每按一次 K1 按键,Gu8RunSpeed 就在 1、2、3 三者之间切换,
//并且根据 Gu8RunSpeed 的数值,对 Gu16RunSpeedTimeDate 赋值
//不同的速度时间参数,从而控制速度档位。
if(1==Gu8RunSpeed)
{
Gu8RunSpeed=2; //“中”
Gu16RunSpeedTimeDate=RUN_TIME_MIDDLE; //赋值“中”档的时间参数
}
else if(2==Gu8RunSpeed)
{
Gu8RunSpeed=3; //“快”档
Gu16RunSpeedTimeDate=RUN_TIME_FAST; //赋值“快”档的时间参数
}
else
{
Gu8RunSpeed=1; //“慢”档
Gu16RunSpeedTimeDate=RUN_TIME_SLOW; //赋值“慢”档的时间参数
}
Gu8PartUpdate_1=1; //局部 1 的更新变量,更新显示“速度
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
break;
}
vGu8KeySec=0;
break;
case 2: //【方向】按键 K2
switch(Gu8Wd) //在某个窗口
{
case 1: //窗口 1。
//每按一次 K2 按键,Gu8RunDirection 就在 0 1 之间切换,从而控制方
if(0==Gu8RunDirection)
{
Gu8RunDirection=1;
}
else
{
Gu8RunDirection=0;
}
Gu8PartUpdate_2=1; //局部 2 更新显示,更新显示“方向
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
break;
}
vGu8KeySec=0;
break;
case 3: //【启动暂停】按键 K3
switch(Gu8Wd) //在某个窗口
{
case 1: //窗口 1。
if(0==Gu8RunStatus) //当跑马灯处于“停止”状态时
{
Gu8RunStep=0; //运行步骤从 0 开始
Gu8RunStart=1; //总开关“打开”