篮球比赛赛场的计时计分器。
1.在整个比赛过程中记录比赛时间和改变比赛时间。
2.可以在比赛期间随时更新A和B队的比分。
3中场休息期间交换场地,交换A队和B队的位置。
4.当添加比赛分数时,如果有错误,可以手动更改赛场分数。
5.赛事结束时可以触发警报。
bit k4=P3^3;
sbit k5=P3^4;
sbit k6=P3^6;
sbit k7=P3^7;
sbit beep=P3^5;//蜂鸣器
sbit led1=P1^6;//LED
sbit led2=P1^7;
sbit smg1=P2^0;//数码管
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit smg7=P2^6;
sbit smg8=P2^7;
//数码管编码
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0,mode=0;//系统变量
uchar fena=0,fenb=0,flag=0;//分数
uchar start=0;//启动
uchar fen=0,miao=0;//计时
uchar beep_time=0;//蜂鸣器计时
//延时
void delay(uint i)
{
while(i--);
}
void main()//主函数
{
uchar k=0;
beep=0;
TMOD|=0X11;//定时器设置
TH0=0X3C;
TL0=0XB0;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
ET1=1;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
//点亮LED
if(start==0)
{
led1=1;
led2=1;
}
if(start==1)
{
led1=0;
led2=1;
}
if(start==2)
{
led1=1;
led2=0;
}
//显示时间
P0=smgduan[fen/10];
smg1=0;
delay(100);
smg1=1;
P0=smgduan[fen%10]+0x80;
smg2=0;
delay(100);
smg2=1;
P0=smgduan[miao/10];
smg3=0;
delay(100);
smg3=1;
P0=smgduan[miao%10];
smg4=0;
delay(100);
smg4=1;
//显示分数
if(flag==0)
P0=smgduan[fena/10];
else
P0=smgduan[fenb/10];
smg5=0;
delay(100);
smg5=1;
if(flag==0)
P0=smgduan[fena%10];
else
P0=smgduan[fenb%10];
smg6=0;
delay(100);
smg6=1;
if(flag==1)
P0=smgduan[fena/10];
else
P0=smgduan[fenb/10];
smg7=0;
delay(100);
smg7=1;
if(flag==1)
P0=smgduan[fena%10];
else
P0=smgduan[fenb%10];
smg8=0;
delay(100);
资料借鉴于此纷传
阅读全文