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

{ if(0==vG u8KeySec) { return; } switch(v Gu8KeySec) { case 1 : //1 号按 键 switch(Gu8 Wd) //以“窗口 选择”G u8Wd 为支点 { case 1: //在窗口 1 下 switch(G u8Part) //以“局部 选择”G u8Part 为支点 { case 1: ...... // 此处省略 N 行代码 break; case 2: //局部 …

100%1 / 836
//以下,“整屏更新”必然是要把所有的“局部更新”都触发一次
Gu8PartUpdate_1=1; //局部 1 更新显示
Gu8PartUpdate_2=1 ;//局部 2 更新显示
}
if(1==Gu8PartUpdate_1) //局部 1 更新显示
{
Gu8PartUpdate_1=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
...... //此处省略 N 行代码,用来显示动态的数据。比如可编辑的数据,实时变化的数
}
if(1==Gu8PartUpdate_2) //局部 2 更新显示
{
Gu8PartUpdate_2=0; //及时清零,只更新一次显示即可,避免一直进来更新显示
...... //此处省略 N 行代码,用来显示动态的数据。比如可编辑的数据,实时变化的数
}
if(0==vGu16BlinkTimerCnt) //跳动的光标,或者动态闪烁的某位被选中的数据
{
vGu8BlinkTimerFlag=0;
vGu16BlinkTimerCnt=BLINK_TIME; //重设定时器的定时时间
vGu8BlinkTimerFlag=1;
...... //此处省略 N 行代码,用来制作跳动的光标或者某位被选中而闪烁的数据
}
}
void Wd2(void) //窗口 2 显示函数
{
...... //此处省略 N 行代码,窗口 2 显示函数的代码跟窗口 1 类似
}
按键部分:
void KeyTask(void) //按键的任务函数
{
if(0==vGu8KeySec)
{
return;
}
switch(vGu8KeySec)
{
case 1: //1 号按
switch(Gu8Wd) //以“窗口选择”Gu8Wd 为支点
{
case 1: //在窗口 1
switch(Gu8Part) //以“局部选择”Gu8Part 为支点
{
case 1:
...... //此处省略 N 行代码
break;
case 2: //局部 2 被选
...... //此处省略 N 行代码
break;
}
break;
case 2: //在窗口 2
switch(Gu8Part) //以“局部选择”Gu8Part 为支点
{
case 1:
...... //此处省略 N 行代码
break;
case 2: //局部 2 被选
...... //此处省略 N 行代码
break;
}
break;
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
case 2: //2 号按
...... //此处省略 N 行代码,跟 1 号按键的代码类似
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
}
}