计时计分器想加个暂停键附带30秒倒计时,结果却让时间不动了,最后几行错误在哪


#include<reg51.h>              
#include <intrins.h>
#define uchar unsigned char      
#define uint unsigned int
sbit p1=P2^6;    
sbit p2=P2^5;
sbit p3=P2^4;
sbit p4=P2^3;
sbit p5=P2^2;
sbit p6=P2^1;
sbit p7=P2^0;
sbit p8=P3^5;
sbit p9=P3^6;
sbit p10=P3^7;
sbit k1=P1^4;    
sbit k2=P1^5;
sbit k3=P1^6;
sbit k4=P1^7;
sbit k5=P3^0;
sbit k6=P3^1;
sbit k7=P3^2;
sbit k8=P3^3;
sbit k9=P1^0;
sbit k10=P1^1;
sbit k11=P1^2;
sbit k12=P1^3;
sbit dp=P0^7;
sbit ts=P3^4;    
int fen=12;miao=0;fenshu=0;fenshu1=0;shezhi=0;mSec;a1;a2;a3;a4;kaishi=0;fs;sjd=0;shanshuo=0;tishi=1;xxx;xx=0,dd=0;        
uchar data_7seg[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; 
int count;count1;count2;         
//void key();        
void qudou(void)   
{ int i;
   for(i=0;i<2400;i++);
}
void Delay1ms(unsigned int xs)    
{    unsigned int i,j;
    for(i=0;i<xs;i++)
    for(j=0;j<0;j++);
}
void interrupt_0_initial()
{
        IT0=0;
        EX0=1;
        EA=1;
}
void time1_initial() 
{
        TMOD=0x10;
        TH0=(65535-5000)/256; 
        TL0=(65535-5000)%256;
        EA=1;
}
void xianshi()      
{  p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;  
   if(shezhi==1)     
   {if(shanshuo==1)       
   P0=data_7seg[10]; 
   else
   P0=data_7seg[fen/10];}    
   else
   P0=data_7seg[fen/10];
   p1=1;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   Delay1ms(10);    

   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   if(shezhi==2)    
   {if(shanshuo==1)     
   P0=data_7seg[10]; 
   else
   P0=data_7seg[fen%10];}  
   else
   P0=data_7seg[fen%10];   
   dp=dd;
   p1=0;p2=1;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;
   Delay1ms(10);

   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;
   if(shezhi==3)
   {if(shanshuo==1)    
   P0=data_7seg[10]; 
   else
   P0=data_7seg[miao/10];}    
   else
   P0=data_7seg[miao/10];    
   p1=0;p2=0;p3=1;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;
   Delay1ms(10);    
   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;
   if(shezhi==4)    
   {if(shanshuo==1)      
   P0=data_7seg[10];  
   else
   P0=data_7seg[miao%10];}
   else
   P0=data_7seg[miao%10];
   p1=0;p2=0;p3=0;p4=1;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   Delay1ms(10);    

   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   if(fenshu/100==0)    
   P0=data_7seg[10];    
   else P0=data_7seg[fenshu/100];    
   p1=0;p2=0;p3=0;p4=0;p5=1;p6=0;p7=0;p8=0;p9=0;p10=0;    
   Delay1ms(10);     

   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   if(fenshu%100/10==0)
   if(fenshu/100==0)     
   P0=data_7seg[10];    
   else P0=data_7seg[fenshu%100/10]; 
   else P0=data_7seg[fenshu%100/10];
   p1=0;p2=0;p3=0;p4=0;p5=0;p6=1;p7=0;p8=0;p9=0;p10=0;    
   Delay1ms(10);     

   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;
   P0=data_7seg[fenshu%100%10];      
   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=1;p8=0;p9=0;p10=0;    
   Delay1ms(10);    

   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   if(fenshu1/100==0)  
   P0=data_7seg[10];    
   else P0=data_7seg[fenshu1/100];    
   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=1;p9=0;p10=0;
   Delay1ms(10);    

   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   if(fenshu1%100/10==0)
   if(fenshu1/100==0)     
   P0=data_7seg[10];    
   else P0=data_7seg[fenshu1%100/10];
   else P0=data_7seg[fenshu1%100/10]; 
   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=1;p10=0;    
   Delay1ms(10);     
   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=0;    
   P0=data_7seg[fenshu1%100%10];
   p1=0;p2=0;p3=0;p4=0;p5=0;p6=0;p7=0;p8=0;p9=0;p10=1;
   Delay1ms(10);     
}
void key()    
{ k1=1;             
  if(k1==0)           
   { qudou();   
     if(k1==0)      
    {if(kaishi==0) 
     {shezhi++;      
     if(shezhi==5) shezhi=0; 
    }while(k1==0);
    }

  k2=1;         
  if(k2==0)       
   { qudou();    
     if(k2==0)    
    {a1=fen/10;
       a2=fen%10;    
     a3=miao/10; 
     a4=miao%10; 
     switch(shezhi)    
     {case 0:        
      kaishi=!kaishi; 
      break;
             
        case 1:           
      a1=a1+1;    
        if(a1>=10) a1=9; 
      break;
            
        case 2:        
      a2=a2+1;        
        if(a2>=10) a2=9;
      break;
            
        case 3:         
      a3=a3+1;         
        if(a3>=6) a3=5;  
      break;
            
        case 4:        
      a4=a4+1;        
        if(a4>=10) a4=9;
      break;
     } 
     fen=a1*10+a2;    
     miao=a3*10+a4;  
    }while(k2==0);
    }

  k3=1;           
  if(k3==0)     
   { qudou();      
     if(k3==0)    
    {a1=fen/10;    
     a2=fen%10;     
     a3=miao/10;
     a4=miao%10; 
     switch(shezhi)    
     {case 0:          
      if(kaishi==0)     
      {fs=fenshu;      
      fenshu=fenshu1;
      fenshu1=fs;}
      break;
      case 1:          
      a1=a1-1;         
      if(a1<=0) a1=0;
      break;
      case 2:         
      a2=a2-1;        
      if(a2<=0) a2=0; 
      break;
      case 3:          
      a3=a3-1;          
      if(a3<=0) a3=0;
      break;
      case 4:         
      a4=a4-1;        
      if(a4<=0) a4=0;
      break;
     } 
     fen=a1*10+a2;    
     miao=a3*10+a4;  
    }while(k3==0);
    }

  k4=1;            
  if(k4==0)      
   { qudou();    
     if(k4==0)    
    {if(shezhi>0)   shezhi=0;    
     else if(kaishi==0){fenshu=0;fenshu1=0;}    
    }while(k4==0);
    }

  k5=1;         
  if(k5==0)     
   { qudou(); 
     if(k5==0) 
    { fenshu=fenshu+1; 
    }while(k5==0);
    }

  k6=1;        
  if(k6==0)       
   { qudou(); 
     if(k6==0) 
    { fenshu=fenshu+2;
    }while(k6==0);
    }
  
//  k7=1;          
//  if(k7==0)         
//   { qudou();  
//     if(k7==0) 
//    { fenshu=fenshu+3; 
//    }while(k7==0);
//    }
  
  k8=1;           
  if(k8==0)           
   { qudou();  
     if(k8==0) 
    { fenshu=fenshu-1;
    }while(k8==0);
    }

  k9=1;           
  if(k9==0)           
   { qudou();  
     if(k9==0) 
    { fenshu1=fenshu1+1; 
    }while(k9==0);
    }

  k10=1;       
  if(k10==0)     
   { qudou();  
     if(k10==0)
    { fenshu1=fenshu1+2; 
    }while(k10==0);
    }
  
  k11=1;       
  if(k11==0)               
   { qudou();  
     if(k11==0)
    { fenshu1=fenshu1+3; 
    }while(k11==0);
    }
  
  k12=1;      
  if(k12==0)              
   { qudou();  
     if(k12==0)
    { fenshu1=fenshu1-1;   
}while(k12==0);
    }
if(fenshu<=0) fenshu=0;       
if(fenshu1<=0) fenshu1=0;  
if(fenshu>=999) fenshu=999;      
if(fenshu1>=999) fenshu1=999; 
}
void bisai()
{ k4=1;            
  if(k4==0)           
   { qudou();    
     if(k4==0)    
    {fen=12;miao=0;kaishi=0;shezhi=0;tishi=1;ts=1;shanshuo=0;count=0;count1=0;count2=0;fenshu=0;fenshu1=0;sjd=0;
    }while(k4==0);
    }
}
void main()         
{      interrupt_0_initial(); 
       time1_initial();
       TMOD=0x1; 
       TH0=0xb1; 
       TL0=0xe0;
       TR0=1;      
       ET0=1;                                
       EA=1;  
//       interrupt_0_initial(); 
//       time1_initial();    
       while(1)    //ÎÞÏÞÑ­»·              
       { xianshi();       //ÏÔʾ
         if(kaishi==0) dd=0;  
         if(sjd==0)    
         key();     
         else
bisai();
         if(kaishi==0)
         ts=1;
         else
         ts=tishi;    
         if(xx==1)     
         {for(xxx=0;xxx<1000;xxx++)     
          {ts=0;dd=0;xianshi();}   
          ts=1;xx=0;}     
       }
}
void time0(void) interrupt 1    

{     TH0=0xb1;
      TL0=0xe0;
      if(shezhi==0)         
      {if(kaishi==1)       
     { if(sjd==0)           
      {count++;          
       if(count==50)     
       { count=0;          
         miao--;         
         if(fen>0)        
         {if(miao<0){miao=59;fen--;}} 
         else           
         {if(miao<=0)    
          {sjd=1;kaishi=0;fen=0;miao=0;dd=1;xx=1;tishi=1; 
          }}
       } }}    }
     
      if(shezhi==0)        
      {if(kaishi==1)    
     { if(sjd==0)        
      {count1++;         
       if(count1==25)      
 { count1=0;    
          if(fen==0)    
          if(miao<=10)    
         tishi=!tishi;    
         dd=!dd;    
       } }}    }

       if(shezhi==0)    
           shanshuo=0;    
       else                
       {count2++;         
       if(count2==10)      
       { count2=0;        
         shanshuo=!shanshuo;}}    
         
//       k7=1;         
//   { qudou();  
//     if(k7==0) 
//    { fen=0;
//            miao=30;
//            {count++;            
//       if(count==50)      
//       { count=0;     
//                 miao--;
//       }
//             if(miao==0)
//             {tishi=!tishi;    
//         dd=!dd;    }
//             while(k7==0);
//    }
//}
//        }
}
void time1() interrupt 3
{    TH0=0xb1;
      TL0=0xe0;
               k7=1;        
   { qudou();  
     if(k7==0) 
    { fen=0;
            miao=30;
            {count++;            
       if(count==50)      
       { count=0;     
                 miao--;
       }
             if(miao==0)
             {tishi=!tishi;    
         dd=!dd;    }
             while(k7==0);
    }
}
        }
             }
void interrupt_0() interrupt 0
{
do
{
ET0=1;
TR0=1;
}while(k7==0);
ET0=0;
TR0=0;
count=mSec;
mSec=0;
}

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。