📄 aa.c
字号:
/*8279有键按下中断子程用序INT0*/
void button(void)interrupt 0 using 2
{
uchar key,keyboard,num0;
uchar num1,num2,num3;
COM=0x50;
keyboard=DAT; /*读键值*/
keyboard=keyboard&0x0f;
switch(keyboard) /*代码转化*/
{
case 0x00: key=0; break;
case 0x01: key=1; break;
case 0x02: key=2; break;
case 0x03: key=3; break;
case 0x04: key=4; break;
case 0x05: key=5; break;
case 0x06: key=6; break;
case 0x07: key=7; break;
case 0x08: key=8; break;
case 0x09: key=9; break;
case 0x0A: key=10; break;
case 0x0B: key=11; break;
case 0x0C: key=12; break;
case 0x0D: key=13; break;
case 0x0E: key=14; break;
case 0x0F: key=15; break;
default: break;
}
COM=0x90;
COM=0x80+8;
DAT=num_led[key];
if(key==0) /*按键为功能选择按键*/
{
num1++;
if(num1%2==1)
{
mk=1; /*mk=1时表示对时间的操作*/
}
else
{
num1=0;
mk=0; /*mk=0时表示对得分的操作*/
}
}
if(mk==1)
{
red=0; /*红灯亮,表示对时间的操作*/
flag1=0;
flag2=1;
flag3=0;
if(key==1) /*如果按的是清零键*/
{
hz1[10]=0x30;
hz1[11]=0x30;
hz1[13]=0x30;
hz1[14]=0x30; /*以上四行表示总时间归零*/
hz2[10]=0x30;
hz2[11]=0x30;
hz2[13]=0x30;
hz2[14]=0x30; /*以上四行表示半场时间时间归零*/
hz4[1]=0x30;
hz4[2]=0x30;
hz4[3]=0x30;
hz4[5]=0x30;
hz4[6]=0x30;
hz4[7]=0x30;
hz4[13]=0x32;
hz4[14]=0x34; /*以上七行表示总比分归零24秒归位*/
fulltime1=0;
fulltime0=0;
fulltime=0;
Acount=0;
Bcount=0;
}
if(key==3)
{
fulltime1++; /*按加1键总时间分的个位加一*/
fulltime++; /*比赛总时间加1*/
}
if(key==7) /*按减1键总时间分的个位减一,为了防止误操作*/
{
fulltime1--;
fulltime--; /*比赛总是间减1*/
}
if(key==2) /*按加2键总时间分的十位加一*/
{
fulltime0++;
fulltime=fulltime+10;/*比赛总是间加10*/
}
if(key==6) /*按加3键总时间减一,为了防止误操作*/
{
fulltime0--;
fulltime=fulltime-10;
}
timedevide(); /*调用时间写入lcd显示器函数*/
if(fulltime0<0)
{
fulltime0=9;
}
if(fulltime1<0)
{
fulltime1=9;
}
start4[14]=num_lcd[fulltime0];
start4[15]=num_lcd[fulltime1];
}
if(mk==0)
{ red=1; /*红灯灭,表示对得分的操作*/
flag1=1;
flag2=0;
flag3=0;
if(key==12){TR1=0;}
if(key==13){TR1=1;}
if(key==5) /*24秒复位关蜂鸣器*/
{ speaker=1;
hz4[13]=0x32;
hz4[14]=0x34;
}
if(key==8) /*比分清零*/
{
hz4[1]=0x30;
hz4[2]=0x30;
hz4[3]=0x30;
hz4[5]=0x30;
hz4[6]=0x30;
hz4[7]=0x30;
}
if(key==9) /*24秒复位重新启动定时*/
{
TR1=1;
hz4[13]=0x32;
hz4[14]=0x34;
stop=0;
}
if(key==4)
{ num0++;
if(num0%2==1)
{ dk=1;
green=1;
yellow=0; /*dk=1时按加减分键A队加分*/
}
else
{ num0=0;
dk=0;
yellow=1;
green=0; /*dk=0时按加减分键B队加分*/
}
}
if (dk==1) /*dk=1时按加减分键A队加分*/
{ if(key==3)
{
hz4[3]=hz4[3]+0x01;
}
if(key==2)
{
hz4[3]=hz4[3]+0x02;
}
if(key==6)
{
hz4[3]=hz4[3]+0x03;
}
if(key==7)
{
hz4[3]=hz4[3]-0x01;
}
if(hz4[3]>=0x3A)
{
hz4[3]=hz4[3]-0x0A;
hz4[2]=hz4[2]+0x01;
if(hz4[2]==0x3A)
{
hz4[2]=0x30;
hz4[1]=hz4[1]+0x01;
}
}
if(hz4[3]<0x30)
{
hz4[3]=0x39; hz4[2]=hz4[2]-0x01;
}
}
if (dk==0) /*dk=0时按加减分键B队加分*/
{ if(key==3)
{
hz4[7]=hz4[7]+0x01;
}
if(key==2)
{
hz4[7]=hz4[7]+0x02;
}
if(key==6)
{
hz4[7]=hz4[7]+0x03;
}
if(key==7)
{
hz4[7]=hz4[7]-0x01;
}
if(hz4[7]>=0x3A)
{
hz4[7]=hz4[7]-0x0A;
hz4[6]=hz4[6]+0x01;
if(hz4[6]==0x3A)
{
hz4[6]=0x30;
hz4[5]=hz4[5]+0x01;
}
}
if(hz4[7]<0x30)
{
hz4[7]=0x39;hz4[6]=hz4[6]-0x01;
}
}
if (key==10)
{ num2++;
if(num2%2==1)
{ fgk=1;
}
else
{ num2=0;
fgk=0;
}
}
if (fgk==1) /*屏幕切换到犯规统计*/
{ flag1=0;
flag2=0;
flag3=1;
if(key==14)
{ num3++;
if(num3%2==1)
{ fgk1=1;
green=1;
yellow=0; /*fgk1=1时按加减键A队犯规 次数*/
}
else
{ num3=0;
fgk1=0;
yellow=1;
green=0; /*fgk1=0时按加减分键B队犯规 次数*/
}
}
if (fgk1==1)
{ if(key==11)
{
fg3[3]=fg3[3]+0x01;
}
if(key==15)
{
fg3[3]=fg3[3]-0x01;
}
if(fg3[3]>=0x3A)
{
fg3[3]=fg3[3]-0x0A;
fg3[2]=fg3[2]+0x01;
}
if(fg3[3]<0x30)
{
fg3[3]=0x39; fg3[2]=fg3[2]-0x01;
}
}
if (fgk1==0)
{ if(key==11)
{
fg3[13]=fg3[13]+0x01;
}
if(key==15)
{
fg3[13]=fg3[13]-0x01;
}
if(fg3[13]>=0x3A)
{
fg3[13]=fg3[13]-0x0A;
fg3[12]=fg3[12]+0x01;
}
if(fg3[13]<0x30)
{
fg3[13]=0x39; fg3[12]=fg3[12]-0x01;
}
}
display_lcd();
}
if (fgk==0) /*屏幕切换到记分*/
{ flag1=1;
flag2=0;
flag3=0;
}
}
}
void main(void)
{
TMOD=0x16; /* 000101 定时/计数器0方式2定时状态;定时/计数器1方式1定时状态*/
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TH0=0xff;
TL0=0xff;
IE=0x8b; /* 10001111 CPU开中断,INT0开中断,T0,T1开中断*/
TR0=1;
red=1;
flag2=1;
display_lcd();
COM=0xD1; /*总清除命令*/
do
{
ACC=COM;
}while(clflag==1);
COM=0x00; /*LED显示右入口*/
COM=0x23; /*时钟分频*/
while (1)
{
;
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -