基于单片机的篮球计时计分器设计(C语言编程、含proteus仿真图) 下载本文

}

} } } 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