紧急求助啊,附源代码和电路图,其中少做一个按键清空计时值,还有具备锁存功能是什么意思?

题目:倒计时器设计
设计要求:
倒计时器用于定时,设置初值后,启动倒计时,即可开始工作,当计时结束后,用蜂鸣器报警。
1) 可设置计时初值十进制数00-59;
2) 采用两位数码管显示定时值,并具备锁存功能;
3) 采用一个按键设置计时初值;
4) 采用一个按键控制倒计时开始;
5) 采用一个按键控制计时停止;
6) 采用一个按键清空计时值。
按键清空做不出来,帮帮忙吧,马上要到期了,附源代码和电路图,求解答,谢谢了。答得好有加分的。

#include <reg51.h>
sbit K1=P2^0;//加1
sbit K2=P2^1;//减1
sbit K3=P2^2;//暂停
sbit K4=P2^3;//启动
sbit S0=P3^6;
sbit S1=P3^7;
sbit F=P2^5; //蜂鸣器
sbit LED=P2^4;
void disp (unsigned char n);
unsigned char m=0;
unsigned char n=59;
unsigned char code
D[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(unsigned int a)
{ unsigned char b;
while(--a)
{for(b=0;b<125;b++);}
}
void main()
{EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=0;
while(1)
{disp(n);
if(K1==0){while(K1==0);disp(++n);}
if(K2==0){while(K2==0);disp(--n);}
if(K3==0){while(K3==0);TR0=0;disp(n);}
if(K4==0){while(K4==0);TR0=1;disp(n);}
if(n==0){F=~F;}}
}
void disp (unsigned char n)
{unsigned char i,j;
i=n/10;
j=n%10;
P1=D[i];
S0=0;
delay(20);
P3=0xff;
P1=D[j];
S1=0;
delay(20);
P3=0xff;
}
void ds() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++m>19)
{n--;
if(n==0){LED=0;F=0;while(1) disp(0);m=0;}
m=0;}
}
望大神看看哪里不符合要求就帮忙改改吧,十分感谢的!

第1个回答  推荐于2016-07-28
虽然不难,但都写出来,挺麻烦,说个思路吧
1.锁存功能,我理解是用锁存器

main()
{

初始化。。。。
while(1)
{
if(设初值)
{
初值_mark=1;
}
if(加 and 初值_mark )
{
初值++;
if(初值>59)
初值=0;
LED显示:初值
}
if(减 and 初值_mark)
{
初值--;
if(初值<0)
初值=59;
LED显示:初值
}
if(计时开始)
开启定时器//定时器中断中对初值减一
if(清除)
初值=0;
}
}追问

啥,要按键清零的,图没画啊,程序什么的能接上我的么?谢谢咯

本回答被提问者采纳