新手刚学单片机,求大神帮下 怎么在只有开始 暂停 复位的基础上 让秒表实现多(3)次计数并可以查询的 如体育秒表
#include <REGX51.H>#define uchar unsigned char
sbit P20=P2^1;
sbit P21=P2^0;
sbit KS=P2^5; //启动按键
sbit KP=P2^6; //暂停按键
sbit KC=P2^7; //复位按键
int ge,shi;
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(unsigned int ms) //延时
{
uchar a;
while(ms--)
for(a=123;a>0;a--);
}
void display() //显示
{
P20=0;
P0=tab[ge];
delay_ms(1);
P20=1;
P21=0;
P0=tab[shi];
delay_ms(1);
P21=1;
}
void T0_ISR() interrupt 1 //定时器T0中断
{
uchar time;
TH0=(65536-50000)/256; //定时初值
TL0=(65536-50000)%256;
time++;
if(time==20) //0.05s*20=1s
{
time=0;
ge++;
}
}
void main() //主函数
{
TMOD=0x01; //定时器T0方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //总开关
ET0=1; //允许T0溢出中断
while(1) //死循环
{
display();
while(!KS)
{
display();
if(KS)
TR0=1;
}
while(!KP)
{
display();
if(KP)
TR0=0;
}
while(!KC)
{
display();
if(KC)
TR0=0;
shi=0;
ge=0;
}
if(ge==10)
{
ge=0;
shi++;
}
if(shi==10)
{
shi=0;
}
}
}