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

case 1: //在第 1 个窗口 下编辑 Gu 8SetData_1 数据 Gu8SetDa ta_1++; if(Gu8Se tData_1>99) //把最 大范围限定在 99 { Gu8SetDa ta_1=99; } Gu8WdUpd ate=1; //整屏更 新一次显示 break; case 2: //在第 2 个窗口 下编辑 Gu 8SetData_2 数据 Gu8SetDa ta_2++; if(Gu8Se t…

100%1 / 836
volatile unsigned char vGu8Display_Righ_Dot_2=0;
volatile unsigned char vGu8Display_Righ_Dot_1=0;
volatile unsigned char vGu8KeySec=0;
void main()
{
SystemInitial();
Delay(10000);
PeripheralInitial();
while(1)
{
KeyTask(); //按键的任务函数
DisplayTask(); //数码管显示的上层任务函数
}
}
void KeyTask(void) //按键的任务函数
{
if(0==vGu8KeySec)
{
return;
}
switch(vGu8KeySec)
{
case 1: //窗口切换的按键
Gu8Wd++; //窗口切换到下一个窗口
if(Gu8Wd>3) //一共 3 个窗口。切换第 3 个窗口之后,继续返回到第 1 个窗
{
Gu8Wd=1; //返回到第 1 个窗
}
Gu8WdUpdate=1; //整屏更新一次显示
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
case 2: //累加的按键
switch(Gu8Wd) //以窗口选择 Gu8Wd 为支点,去编辑对应的数据。又一次用到 switch 语句
{
case 1: //在第 1 个窗口下编辑 Gu8SetData_1 数据
Gu8SetData_1++;
if(Gu8SetData_1>99) //把最大范围限定在 99
{
Gu8SetData_1=99;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 2: //在第 2 个窗口下编辑 Gu8SetData_2 数据
Gu8SetData_2++;
if(Gu8SetData_2>99) //把最大范围限定在 99
{
Gu8SetData_2=99;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 3: //在第 3 个窗口下编辑 Gu8SetData_3 数据
Gu8SetData_3++;
if(Gu8SetData_3>99) //把最大范围限定在 99
{
Gu8SetData_3=99;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
case 3: //递减的按键
switch(Gu8Wd) //以窗口选择 Gu8Wd 为支点,去编辑对应的数据。又一次用到 switch 语句
{
case 1: //在第 1 个窗口下编辑 Gu8SetData_1 数据
if(Gu8SetData_1>0) //把最小范围限定在 0
{
Gu8SetData_1--;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 2: //在第 2 个窗口下编辑 Gu8SetData_2 数据
if(Gu8SetData_2>0) //把最小范围限定在 0
{
Gu8SetData_2--;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
case 3: //在第 3 个窗口下编辑 Gu8SetData_3 数据
if(Gu8SetData_3>0) //把最小范围限定在 0
{
Gu8SetData_3--;
}
Gu8WdUpdate=1; //整屏更新一次显示
break;
}
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=VOICE_TIME; //蜂鸣器发出“滴”一声
vGu8BeepTimerFlag=1;
vGu8KeySec=0;
break;
}
}
void DisplayTask(void) //数码管显示的上层任务函
{
switch(Gu8Wd) //以窗口选择 Gu8Wd 为支点,去执行对应的窗口显示函数。又一次用到 switch 语句
{
case 1:
Wd1(); //窗口 1 显示函数
break;
case 2:
Wd2(); //窗口 2 显示函数
break;
case 3:
Wd3(); //窗口 3 显示函数
break;
}
}