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

5b2236240b140e097a79308badc98305.png

#include

#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

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;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值