📄 liang.c
字号:
#include <reg51.h>
code unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x86};
unsigned char c;
unsigned char time;
unsigned char keynum;
unsigned char i;
sbit speak=P3^7;
bit keyflag;
bit key=1;
bit b=1;
void delay()
{unsigned int m,n;
for(m=0;m<2;m++)
{
for(n=0;n<200;n++);
}
}
void time0() interrupt 1 using 2
{
if(c==20)
{ c=1;
if(time)
{
--time;
}
else
{
time=0X00;
keyflag=0;
for(i=0;i<50;i++)
{speak=~speak;
delay();}
TR0=0;
}
P1=seg[time/10];
P0=seg[time%10];
}
else
++c;
TH0=15536/256;//T0初值,50ms中断一次
TL0=15536%256;
}
void int0() interrupt 0 using 2
{
keyflag=1;
b=0;
time=30;
for(i=0;i<50;i++)
{speak=~speak;
delay();}
P1=seg[time/10];
P0=seg[time%10];
TR0=1;
}
void main()
{
unsigned char keystatus;
speak=0;
TCON=0X00;
TMOD=0X01;
TH0=15536/256;//T0初值,50ms中断一次
TL0=15536%256;
IE=0X83;
while(1)
{
while(keyflag){
P2=0Xff;
keystatus=P2;
if(~keystatus)
{
for(i=0;i<50;i++)
{speak=~speak;
delay();}
switch (keystatus){
case 0xfe:keynum=1; break;
case 0xfd:keynum=2; break;
case 0xfb:keynum=3; break;
case 0xf7:keynum=4; break;
case 0xef:keynum=5; break;
case 0xdf:keynum=6; break;
case 0xbf:keynum=7; break;
case 0x7f:keynum=8; break;
default : keynum=0;break;
}////switch
if(keynum)
{ TR0=0;
keyflag=0;
P1=seg[keynum/10];
P0=seg[keynum%10];
}////////if(keynum)///////////////////
}/////////if(~keystatus)////////////////
}/////while(ketflag)
while((key=1)&&(b))
{
P2=0Xff;
keystatus=P2;
if(~keystatus)
{
for(i=0;i<50;i++)
{speak=~speak;
delay();}
switch (keystatus){
case 0xfe:keynum=1; break;
case 0xfd:keynum=2; break;
case 0xfb:keynum=3; break;
case 0xf7:keynum=4; break;
case 0xef:keynum=5; break;
case 0xdf:keynum=6; break;
case 0xbf:keynum=7; break;
case 0x7f:keynum=8; break;
default : keynum=0;break;
}////switch
if(keynum)
{ TR0=0;
keyflag=0;
P1=seg[10];
P0=seg[keynum%10];
}////////if(keynum)///////////////////
}/////////if(~keystatus)////////////////
}
}////while(1)
}/////mian
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -