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

P1_3=1; TMOD=0x01; TH0=0xfc; TL0=0x66; EA=1; ET0=1; TR0=1; } void Delay (unsigned l ong u32Delay Time) { for(;u32 DelayTime>0 ;u32DelayT ime--); } void Perip heralInit ial(void) { }

100%1 / 836
Su8ScanStep=1;
}
vGu8ScanTimerFlag=0;
vGu16ScanTimerCnt=SCAN_TIME;
vGu8ScanTimerFlag=1;
}
}
void T0_time() interrupt 1
{
KeyScan(); //按键底层的驱动扫描函数
DisplayScan(); //数码管底层的驱动扫描函数
if(1==vGu8ScanTimerFlag&&vGu16ScanTimerCnt>0)
{
vGu16ScanTimerCnt--; //递减式的软件定时器
}
//每 10ms 就定时更新一次显示的软件定时器
if(1==vGu8UpdateTimerFlag&&vGu16UpdateTimerCnt>0)
{
vGu16UpdateTimerCnt--; //递减式的软件定时器
}
//秒表实际走的时间的软件定时器,注意,这里是“累加式”的软件定时器。
//当秒表处于工作的状态 1==Gu8RunStatus
if(1==vGu8StopWatchTimerFlag&&1==Gu8RunStatus&&vGu32StopWatchTimerCnt<0xffffffff)
{
vGu32StopWatchTimerCnt++; //累加式的软件定时
}
TH0=0xfc;
TL0=0x66;
}
void SystemInitial(void)
{
P0=0x00;
P1_0=1;
P1_1=1;
P1_2=1;
P1_3=1;
TMOD=0x01;
TH0=0xfc;
TL0=0x66;
EA=1;
ET0=1;
TR0=1;
}
void Delay(unsigned long u32DelayTime)
{
for(;u32DelayTime>0;u32DelayTime--);
}
void PeripheralInitial(void)
{
}
第一百一十六节: 按键控制数码管的倒计时。
【116.1 按键控制数码管的倒计时。
上图 116.1.1 数码管
上图 116.1.2 独立按键
上图 116.1.3 有源蜂鸣器