籃球比賽賽場(chǎng)的計(jì)時(shí)計(jì)分器。
1.在整個(gè)比賽過程中記錄比賽時(shí)間和改變比賽時(shí)間。
2.可以在比賽期間隨時(shí)更新A和B隊(duì)的比分。
3中場(chǎng)休息期間交換場(chǎng)地,交換A隊(duì)和B隊(duì)的位置。
4.當(dāng)添加比賽分?jǐn)?shù)時(shí),如果有錯(cuò)誤,可以手動(dòng)更改賽場(chǎng)分?jǐn)?shù)。
5.賽事結(jié)束時(shí)可以觸發(fā)警報(bào)。
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;//數(shù)碼管
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;
//數(shù)碼管編碼
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0,mode=0;//系統(tǒng)變量
uchar fena=0,fenb=0,flag=0;//分?jǐn)?shù)
uchar start=0;//啟動(dòng)
uchar fen=0,miao=0;//計(jì)時(shí)
uchar beep_time=0;//蜂鳴器計(jì)時(shí)
//延時(shí)
void delay(uint i)
{
while(i--);
}
void main()//主函數(shù)
{
uchar k=0;
beep=0;
TMOD|=0X11;//定時(shí)器設(shè)置
TH0=0X3C;
TL0=0XB0;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
ET1=1;
ET0=1;//打開定時(shí)器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時(shí)器
while(1)
{
//點(diǎn)亮LED
if(start==0)
{
led1=1;
led2=1;
}
if(start==1)
{
led1=0;
led2=1;
}
if(start==2)
{
led1=1;
led2=0;
}
//顯示時(shí)間
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;
//顯示分?jǐn)?shù)
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);
資料借鑒于此紛傳