📄 新建 文本文档.txt
字号:
#include"reg51.h"
unsigned char i;//显示抢答路数
int k ,s;
sbit set=P3^7;
sbit beeper=P3^6;
sbit time=P3^4;
sbit dp=P0^6;
sbit w1=P2^7;
sbit w2=P2^6;
sbit w3=P2^5;
sbit w4=P2^4;
unsigned char code table[]={
0xC0,/*0*/
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/};
void init(void);
void t0init(void);
void mode1(void);//有线模式
void mode2(void);//无线模式
unsigned char mode1readkeys(void);
unsigned char mode2readkeys(void);
void display1(void);
void display2(void);
void displaytime(int k);
time0()interrupt 1 using 1//T0中断服务程序(50ms)
{ unsigned char a;
a++;
TH0=-50000/256;
TL0=-50000%256;
if(a>20)
{
a=0;
k++;
}
if(k>99)
k=0;
}
void t0init(void)//T0初始化
{TMOD=0x61;
TH0=-50000/256;
TL0=-50000%256;
TH1=-10;
TH0=-10;
EA=1;
ET0=1;
TR0=1;
k=0;
}
void delay(void)//延时
{
for(s=0;s<700;s++)
;
}
void displaytime(int k)//LED显示时间
{unsigned char n,m;
w3=0;
n=k%10;
P0=table[n];
delay();
delay();
w3=1;
delay();
w4=0;
m=k/10;
P0=table[m];
delay();
delay();
w4=1;
delay();
}
void clock(void)//
{ w1=1;
w2=1;
t0init();
displaytime( k);
}
void main(void)
{
init();//系统初始化
t0init();//T0初始化
if(set==1)//默认为有线模式
mode2();
else
mode1();
}
void init(void)//系统初始化
{
set=0;
P2=0xF0;
P0=0xFF;
P1=0xFF;
w1=1;
w2=1;
w3=1;
w4=1;
i=0;
}
/*unsigned char mode1readkeys(void)
{
unsigned char j;
int k;
P1=0xFE;
for(j=0;j<3;j++)
{
if((P1&0xF0)!=0xF0)
{
switch (P1)
{
case 0xEE:
i=1;
break;
case 0xDE:
i=2;
break;
case 0xBE:
i=3;
break;
case 0xED:
i=4;
break;
case 0xDD:
i=8;
break;
case 0xBD:
i=7;
break;
case 0xEB:
i=6;
break;
case 0xDB:
i=5;
break;
default:
return 0;
break;
}
return i;
}
k=P1;
k=~k;
k=k<<1;
k=~k;
P1=k;
}
}*/
unsigned char mode1readkeys(void)//模式1读取按键
{
P1=0xFE;
if((P1&0xFE)!=0xFE)
{
switch (P1)
{
case 0xEE:
i=1;
break;
case 0xDE:
i=2;
break;
case 0xBE:
i=3;
break;
default:
return 0;
break;
}
return i;
}
P1=0xFD;
if((P1&0xFD)!=0xFD)
{
switch (P1)
{
case 0xED:
i=4;
break;
case 0xDD:
i=8;
break;
case 0xBD:
i=7;
break;
default:
return 0;
break;
}
return i;
}
P1=0xFB;
if((P1&0xFB)!=0xFB)
{
switch (P1)
{
case 0xEB:
i=6;
break;
case 0xDB:
i=5;
break;
default:
return 0;
break;
}
return i;
}
}
unsigned char mode2readkeys(void)//模式2读取按键
{
unsigned char n;
n=P2;
n=(n&0x0F);
i=n;
return i;
}
void display1(void)
{
w1=0;
P0=table[i];
}
void display2(void)
{
w2=0;
P0=table[i];
}
void mode1(void)//模式1
{
w1=0;
dp=0;
i=0;
time=0;
if(time==1)
while(1)
{
clock();
}
while(i==0||i>8)
{
mode1readkeys();
}
P1=0xFF;
beeper=0;
display1();
beeper=0;
for( ; ; )
;
}
void mode2(void)//模式2
{
w2=0;
dp=0;
i=0;
time=0;
if(time==1)
while(1)
{
clock();
}
while(i==0||i>8)
{
mode2readkeys();
}
P1=0xFF;
beeper=0;
display2();
beeper=0;
for( ; ; )
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -