这样的按键部分不正常,求教

#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit K0 = P3^2;
sbit K1 = P1^1;
sbit K2 = P1^2;
sbit K3 = P1^3;
sbit LW = P1^5;
sbit LD = P1^4;
uint t50ms = 0,second = 0,minute = 0,hour = 0;
static char code SEGduan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
static char code SEGwei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay10ms()
{
uint i,j,k;
for(k=5;k>0;k++)
for(j=4;j>0;j++)
for(i=248;i>0;i++);
}
void init()
{
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TR0 = 1;
ET0 = 1;
IT0 = 1;
EX0 = 1;
EA = 1;
}
void main()
{
uint n,m;
init();
while(1)
{
for(n=0;n<8;n++)
{
P0 = 0x00;
LW = 1;
P0 = SEGwei[n];
LW = 0;
LD = 1;
switch(n)
{
case 0: P0 = SEGduan[hour/10]; break;
case 1: P0 = SEGduan[hour%10]; break;
case 2: P0 = 0xbf; break;
case 3: P0 = SEGduan[minute/10]; break;
case 4: P0 = SEGduan[minute%10]; break;
case 5: P0 = 0xbf; break;
case 6: P0 = SEGduan[second/10]; break;
case 7: P0 = SEGduan[second%10]; break;
default: break;
}
LD = 0;
for(m=0;m<200;m++);
}
}
}
void int0() interrupt 0
{
if(K0 == 0)
{
delay10ms();
TR0 = 0;
while(K0 == 0);
if(K1 == 0)
{
delay10ms();
hour++;
while(K1 == 0);
}
if(K2 == 0)
{
delay10ms();
minute++;
while(K2 == 0);
}
if(K3 == 0)
{
delay10ms();
second++;
while(K3 == 0);
}
if(K0 == 0)
{
delay10ms();
TR0 = 1;
while(K0 == 0);
}
}
}
void int1() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
t50ms++;
if(t50ms ==20)
{
t50ms = 0;
second++;
if(second == 60)
{
second= 0;
minute++;
if(minute == 60)
{
minute = 0;
hour++;
if(hour == 24) hour = 0;
}
}
}
}



#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit K0 = P3^2;
sbit K1 = P1^1;
sbit K2 = P1^2;
sbit K3 = P1^3;
sbit LW = P1^5;
sbit LD = P1^4;
uint t50ms = 0,second = 0,minute = 0,hour = 0;
static char code SEGduan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
static char code SEGwei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay10ms()
{
uint i,j,k;
for(k=5;k>0;k++)
for(j=4;j>0;j++)
for(i=248;i>0;i++);
}
void init()
{
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TR0 = 1;
ET0 = 1;
IT0 = 1;
EX0 = 1;
EA = 1;
}
void main()
{
uint n,m;
init();
while(1)
{
for(n=0;n<8;n++)
{
P0 = 0x00;
LW = 1;
P0 = SEGwei[n];
LW = 0;
LD = 1;
switch(n)
{
case 0: P0 = SEGduan[hour/10]; break;
case 1: P0 = SEGduan[hour%10]; break;
case 2: P0 = 0xbf; break;
case 3: P0 = SEGduan[minute/10]; break;
case 4: P0 = SEGduan[minute%10]; break;
case 5: P0 = 0xbf; break;
case 6: P0 = SEGduan[second/10]; break;
case 7: P0 = SEGduan[second%10]; break;
default: break;
}
LD = 0;
for(m=0;m<200;m++);
}
}
}
void int0() interrupt 0
{
if(K0 == 0)
{
delay10ms();
TR0 = 0;
while(K0 == 0);
if(K1 == 0)
{
delay10ms();
hour++;
while(K1 == 0);
}
if(K2 == 0)
{
delay10ms();
minute++;
while(K2 == 0);
}
if(K3 == 0)
{
delay10ms();
second++;
while(K3 == 0);
}
if(K0 == 0)
{
delay10ms();
TR0 = 1;
while(K0 == 0);
}
}
}
void int1() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
t50ms++;
if(t50ms ==20)
{
t50ms = 0;
second++;
if(second == 60)
{
second= 0;
minute++;
if(minute == 60)
{
minute = 0;
hour++;
if(hour == 24) hour = 0;
}
}
}
}
