下面的程序中 key1按下,分钟自增1,key2按下,分钟自减1,我现在设置好了key3,按键一按下小时就自增1 ,请问怎么设置使key3有切换时与分的功能,也就是使key3 能控制时与分
#include<reg52.h> //引用标准库的头文件
#define uint unsigned int
#define uchar unsigned char
void keys();
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sbit key1=P3^5;
sbit key2=P3^4;
sbit key3=P3^3;
uchar code table [10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar hour=00,minute=00,second=00;
uint a,b,dd,ee,gg,ii,hh,jj;
static char count=0;
void delay(uint z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void int1() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //延时50ms常数
count++;
}
void main()
{
TMOD=0x01; //置T1为方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //延时50ms的时间常数
EA=1; //开中断
ET0=1;
TR0=1;
for(;;)
{
a=hour/10;
b=hour%10;
ee=minute/10;
gg=minute%10;
ii=second/10;
jj=second%10;
keys();
P2=0X00;
P1=table[a];
P27=1;
delay(1);
P2=0X00;
P1=table[b];
P26=1;
delay(1);
P2=0X00;
P1=0xbf;
P25=1;
delay(1);
P2=0X00;
P1=table[ee];
P24=1;
delay(1);
P2=0X00;
P1=table[gg];
P23=1;
delay(1);
P2=0X00;
P1=0xbf;
P22=1;
delay(1);
P2=0X00;
P1=table[hh];
P21=1;
delay(1);
P2=0X00;
P1=table[jj];
P20=1;
delay(1);
if(count==20)
{
count=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
hour=0;
}
}
}
}
}
void keys()
{
if(key1==0)
{
delay(5);
if(key1==0)
{
while(!key1);
delay(5);
minute++;
if(minute==60)
{
minute=0;
delay(10);
}
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
while(!key2);
delay(5);
minute--;
if(minute==0)
{
minute=59;
delay(10);
}
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
while(!key3);
delay(10);
hour++;
if(hour==24)
{
hour=0;
delay(10);
}
}
}
}
|