从单片机基础到程序框架(全集 2019pdf版).pdf - 第667页
Gu8WdUpd ate=1; //整屏更 新 break; } } else //处于 “闪烁模式 ”的时候,是 “切换局部 ” { PartUpda te(Gu8Part) ; //切换之前的 局部进行更新 。 Gu8Part+ +; //切换局部 if(Gu8Pa rt>2) { Gu8Part= 1; } PartUpda te(Gu8Part) ; //切换之后的 局部进行更新 。 } vGu8BeepTi merFla…

switch(u8Part)
{
case 1:
Gu8PartUpdate_1=1;
break;
case 2:
Gu8PartUpdate_2=1;
break;
}
}
void KeyTask(void) //按键的任务函数
{
if(0==vGu8KeySec)
{
return;
}
switch(vGu8KeySec)
{
case 1: //K1 按键的“短按”,具有“切换窗口”和“切换局部”的双功能。
if(0==Gu8Part) //处于“没有闪烁”的时候,是“切换窗口”
{
switch(Gu8Wd) //在某个窗口下
{
case 1: //在窗口 1 下
Gu8Wd=2; //切换到窗口 2
Gu8EditData_2=Gu8SetData_2/10%10; //“待编辑数据”分解成中间个体
Gu8EditData_1=Gu8SetData_2/1%10; //“待编辑数据”分解成中间个体
Gu8WdUpdate=1; //整屏更新
break;
case 2: //在窗口 2 下
Gu8Wd=3; //切换到窗口 3
Gu8EditData_2=Gu8SetData_3/10%10; //“待编辑数据”分解成中间个体
Gu8EditData_1=Gu8SetData_3/1%10; //“待编辑数据”分解成中间个体
Gu8WdUpdate=1; //整屏更新
break;
case 3: //在窗口 3 下
Gu8Wd=1; //切换到窗口 1
Gu8EditData_2=Gu8SetData_1/10%10; //“待编辑数据”分解成中间个体
Gu8EditData_1=Gu8SetData_1/1%10; //“待编辑数据”分解成中间个体

Gu8WdUpdate=1; //整屏更新
break;
}
}
else //处于“闪烁模式”的时候,是“切换局部”
{
PartUpdate(Gu8Part); //切换之前的局部进行更新。
Gu8Part++; //切换局部
if(Gu8Part>2)
{
Gu8Part=1;
}
PartUpdate(Gu8Part); //切换之后的局部进行更新。
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
case 2: //递增按键 K2
switch(Gu8Wd) //在某个窗口下
{
case 1: //在窗口 1 下
case 2: //在窗口 2 下,窗口 2 与窗口 1 的代码完全一模一样,因此可以这样共享
case 3: //在窗口 3 下,窗口 3 与窗口 1 的代码完全一模一样,因此可以这样共享
switch(Gu8Part) //二级支点的局部选择
{
case 1: //局部 1 被选中,代表左起第 3 位数码管被选中。
Gu8EditData_2++; //编辑“十位”个体的中间变量
if(Gu8EditData_2>9)
{
Gu8EditData_2=9;
}
PartUpdate(Gu8Part); //当前局部更新显示输出到数码管
break;
case 2: //局部 2 被选中,代表左起第 4 位数码管被选中。
Gu8EditData_1++; //编辑“个位”个体的中间变量
if(Gu8EditData_1>9)
{

Gu8EditData_1=9;
}
PartUpdate(Gu8Part); //当前局部更新显示输出到数码管
break;
}
break;
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
case 3: //递减按键 K3
switch(Gu8Wd) //在某个窗口下
{
case 1: //在窗口 1 下
case 2: //在窗口 2 下,窗口 2 与窗口 1 的代码完全一模一样,因此可以这样共享
case 3: //在窗口 3 下,窗口 3 与窗口 1 的代码完全一模一样,因此可以这样共享
switch(Gu8Part) //二级支点的局部选择
{
case 1: //局部 1 被选中,代表左起第 3 位数码管被选中。
if(Gu8EditData_2>0)
{
Gu8EditData_2--; //编辑“十位”个体的中间变量
}
PartUpdate(Gu8Part); //当前局部更新显示输出到数码管
break;
case 2: //局部 2 被选中,代表左起第 4 位数码管被选中。
if(Gu8EditData_1>0)
{
Gu8EditData_1--; //编辑“个位”个体的中间变量
}
PartUpdate(Gu8Part); //当前局部更新显示输出到数码管
break;
}
break;
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声