}
} } } void over() {
if((m==0)&&(n==0)) //当m,n均为0的时候,通过变量jie的值判断比赛 { //是否结束 if(jie>1)
//如果jie>1,说明半场到了,比赛没有结束, {
//比赛结束及及点亮下半场指示灯程序
{ //jie--,关中断,再次按下暂停键时候继续倒计时
m=2; n=0; EA=0;
T1=1; delay(400); T1=0;
while(1)
if(P1_0==0)
{ display(m,n,x,y);
{ delay(1); if(P1_0==0) {
while(P1_0==0); EA=1; break; }
36
} } jie--;
}
if(jie==1&&bujin==2) //如果jie==1&&bujin==2,说明比赛结束了,令EA=0, { //比关闭中断,比赛秒表不再走动,同时不短刷新数码管, EA=0;
//全场比赛结束蜂鸣器开始报警
m=0; n=0; T1=1;
delay(400); T1=0; }
void main()
// 主程序
P1=0x3f; // P1=0x3f上下半场指示灯同时点亮,比赛结束
while(1)
display(m,n,x,y); //不断刷新数码管 } }
{ TMOD=0x01; //设置定时器工作方式 EA=1; ET0=1;
TH0=0xb1; //定时器送计数初值,EA=1,开中断,P3口电平拉高 TL0=0x10; // P1=0x7f, 上半场指示灯点亮 TR0=1; P3=0xff; P1=0x7f;
T1=0;
while(1)
{ //通过 while(1),反复调用循环体内的子程序
37
keyjiafen1(); //执行相应的功能
keyjianfen1();
key2(); if(zidong==1) //zidong==1为key3()执行条件,仅当半场结束时候执行 key3();
if(n==18&&bujin==0) {
bujin=2;
}
shijian();
key4();
over(); }
}
//修改变量bujin的值,设定over()中第二个if语句的执行条件38