单片机 C语言秒表程序 求修改!倒计时结束后又开始计时了怎么停下来?

#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharseg[]={0x3f,0x06,... #include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0-9段码
uchar count,time;
sbit start=P3^4;
sbit stop=P3^5;
sbit reset=P3^6;
/*****延时函数*****/
void delay(uchar k)
{
uchar i,j;
for(i=0;i<k;i++)
for(j=0;j<200;j++);
}
void main()
{
TMOD=0x01; //设置为定时器模式1
TH0=0x3c; //晶振6MHz,定时时间100ms
TL0=0xb0;
IE=0x82; //开全局中断和定时中断
time=24;
count=0;

while(1)
{
if(start==0) TR0=1; //启动开关
if(stop==0) TR0=0; //停止开关
if(reset==0) time=24;//复位开关

P2=0xfe; //显示个位
P0=seg[time%10]; //取计时值个位送P0口
delay(2);
P2=0xfd; //显示十位
P0=seg[time/10]; //取计时值十位送P0口
delay(2);
}
}
void timer0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
count++;
if(count==10) //中断10次即1s=10×100ms
{
count=0; //计数次数清0
time--; //计时值减1
if(time==0) time=24; //计时值减到0则回初值
}
}
展开
 我来答
百度网友2744c94
推荐于2017-08-25 · TA获得超过143个赞
知道小有建树答主
回答量:234
采纳率:100%
帮助的人:153万
展开全部

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0-9段码

uchar count,time;

sbit start=P3^4;

sbit stop=P3^5;

sbit reset=P3^6;

/*****延时函数*****/

void delay(uchar k)

{

    uchar i,j;  

    for(i=0;i<k;i++)  

      for(j=0;j<200;j++);

}

void main()

{

 TMOD=0x01; //设置为定时器模式1

 TH0=0x3c; //晶振6MHz,定时时间100ms

 TL0=0xb0;

 IE=0x82;   //开全局中断和定时中断

time=24;

 count=0;


 while(1)

 {

   if(start==0) TR0=1; //启动开关

   if(stop==0) TR0=0;   //停止开关

   if(reset==0) time=24;//复位开关


   P2=0xfe;          //显示个位

   P0=seg[time%10]; //取计时值个位送P0口

   delay(2);

   P2=0xfd;          //显示十位

   P0=seg[time/10]; //取计时值十位送P0口

   delay(2);

}

}

void timer0() interrupt 1

{

 TH0=0x3c;

 TL0=0xb0;

 count++;

 if(count==10) //中断10次即1s=10×100ms

    {

   count=0;   //计数次数清0

   time--;    //计时值减1

   if(time==0) 

   {

   time=24; //计时值减到0则回初值

   TR0=0;

   }  

}

}

maiboxintiao
2014-05-16 · TA获得超过102个赞
知道答主
回答量:51
采纳率:0%
帮助的人:39.6万
展开全部
while(1);改成while(time<=0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式