/***比赛倒计时/24s倒计时(同步)***/
void counter_down(void)
{
uchar i;
if(time>=20) //每1s倒计时做减一操作
{
sec--;
sec_24s--;
write_com(0x80+0x4e); //24s倒计时显示
write_dat(0x30+sec_24s/10);
write_dat(0x30+sec_24s%10);
if(sec_24s==0) //24s结束发出3s连续报警
{
FM="0";
delay(3000);
FM="1";
sec_24s=24;
}
if((sec==0)&&(min==0)) //检测一节比赛是否结束
{
TR1=0; //定时器1暂停
write_com(0x80+0x44);
write_dat(0x30);
num++;
sec_24s=24; //24s计时复位
write_com(0x80+0x4e); //24s倒计时显示
write_dat(0x30+sec_24s/10);
write_dat(0x30+sec_24s%10);
if(num<5) //每节结束蜂鸣器发出8s的间断报警
{
for(i=80;i>0;i--)
{
FM="0";
delay(500);
FM="1";
delay(500);
}
}
if(num==5) //终场结束,蜂鸣器发出10s的连续警报声
{
FM="0";
delay(10000);
num="1";
}
FM="1"; //蜂鸣器关闭
write_com(0x80+0x4b); //更新"SEC-?"
write_dat(0x30+num);
sec="0"; //倒计时复位
min="12";
}
if(sec==-1)
{
sec="59";
min--;
}
write_com(0x80+0x40); //更新倒计时显示
write_dat(0x30+min/10);
write_dat(0x30+min%10);
write_com(0x80+0x43);
write_dat(0x30+sec/10);
write_dat(0x30+sec%10);
time=0;
}
}