要求:按键1功能是开始   停止 ;按键2功能是暂停,为的是能让计数员计数,暂停时间为5秒,5秒之后计时又开始,但时间得加上前面暂停的5秒, 
按键3功能清零!我只写出了下面这一段。哪位高手帮改下!!!时间从00.00到99.99. 
 
#include <reg51.h> 
 
unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92, 
                            0x82,0xf8,0x80,0x90,0x7f};   //共阳接法数码管0~9对应代码 
unsigned char second; 
unsigned char tcount ,t; 
sbit d1=P0^7; 
void delay(unsigned int c); 
void main() 
{ 
          TMOD=0x01;        //定时器0工作在工作方式1下 
        TH0=0Xd8;        //设置50ms定时时计数器的初值,TH0=(65536-50000)/256 
        TL0=0Xf0;        //                            TL0=(65536-50000)/256 
        EA=1;                //CPU开总中断 
        ET0=1;                //T0开中断 
        TR0=1;                //启动T0 
          tcount=0; 
          second=0; 
        t=0; 
  while(1)                        //本段程序功能为显示 
  { 
   P0=dispcode[second/10];    //段选,显示十位数字 
 
  P2=0X40; 
                  //位选 
   delay(5);                        //动态扫描 
   P0=0xff; 
    
 
   P0=dispcode[second%10];        //段选,显示个位数字 
   P2=0x80;                        //位选 
   delay(5);                        //动态扫描 
   P0=0xff; 
 
 
 
   P0=dispcode[t/10];    //段选,显示十位数字 
 
  P2=0X10; 
          //位选 
   delay(5);                        //动态扫描 
   P0=0xff; 
    
 
   P0=dispcode[t%10];        //段选,显示个位数字 
   P2=0x20;                        //位选 
   d1=0; 
   delay(5);                        //动态扫描 
   P0=0xff; 
  } 
} 
 
void t0() interrupt 1 using 0 
{ 
  TH0=0Xd8;                //重装50ms初值,TH0=(65536-50000)/256 
  TL0=0Xf0;                //              TL0=(65536-50000)/256 
  tcount++; 
  if(tcount==1)        //是否1S到了的判断。1S=50ms*20 
    { 
      tcount=0; 
      second++;                //数码管显示的内容加1 
      if(second==100)    //是否显示到20的判断 
        { 
          second=0;     //当数码管显示到20后,返回显示0 
                  t++;  
                  if(t==100) 
                  { 
                  second=99; 
                  t=99; 
                  } 
                   
        }              
    } 
         
} 
void delay(unsigned int c) 
{ 
unsigned int x,y; 
for(x=c;x>0;x--) 
   for(y=110;y>0;y--); 
} 
 |