做一个有启动暂停重置功能的秒表

#include<reg52.h>
unsigned char x,y;
unsigned char state;   
sbit start_key = P3^0;  //启动按钮
sbit pause_key = P3^1;  //暂停按钮
sbit reset_key = P3^2;  //重置按钮
sbit H=P3^6;
unsigned char LED[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 
void display(x) ;
void delay(unsigned char a)
void Delay1ms(unsigned int n);  //延时1ms
void itn0();
void it0();
void main(){
x=y=0;
state=0;
EA=1; 
EX0=1; 
IT0=1; 
ET0=1; 
TMOD=0X01; 
TH0=(65536-50000)/256; 
TL0=(65536-50000)%256;
TR0=1; 
while(1) {
display(x); 
if(x==59) H=~H; 
 //检测启动、停止按钮
        if(start_key == 0)   //按下了启动、停止按钮
        {
            Delay(10);   //延时消抖
            if(start_key == 0)
            {
                if(state == 0)//之前是未启动,按了按钮要变成已启动
                {
                    state = 1;  //更新状态为已启动
                    x=0;
                    ET0 = 1;        //T0中断允许打开,开始计时
                    
                }else{
                    state = 0;      //更新状态为未启动
                    ET0 = 0;        //关闭T0中断,停止计时
                   
                }
                while(start_key == 0) display(x);    //防止按键重复检测
            }
}
   //检测暂停按钮
        if(state != 0 && pause_key= 0)    //已启动计时,并且暂停按钮按下
        {
            Delay(10);   //延时消抖
            if(pause_key == 0)
            {
                if(state == 2)  //之前是暂停,现在要启动
                {
                    state = 1;      //更新状态为已启动
                    
                    ET0 = 1;        //打开T0中断允许,恢复计时
                }else{
                    state = 2;
                    
                    ET0 = 0;        //关闭T0定时器,暂停计时
                }
                while(pause_key ==0)  display(x);    //防止按键重复检测
            }
        }
        //检测归零按钮
      if(state == 0 && reset_key; == 0)    //已停止计时,并且归零按钮按下
        {
            Delay(10);   //延时消抖
            if(reset_key == 0)
            {
                x = 0;
                while(reset_key == 0)  display(x);    //防止按键重复检测
            }
        }
}
void itn0()interrupt 1
{
y++;
while(y==20) 
{
y=0;
x++;
if(x==60)
x=0;
}
TH0=(65536-50000)/256; 
TL0=(65536-50000)%256; }
void it0() interrupt 0 using 1

T0=~ET0;

void delay(unsigned char a)

unsigned char i;
while(a--)
for(i=115;i>0;i--);
}
void display(x) 
{
P2=0x7f; 
P0=LED[x%10]; 
delay(5); 
P2=0xbf; 
P0=LED[x/10]; 
delay(5);
}
 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

现在程序有什么问题呢?把问题情况说明一下。