From 792c8b708222cb8943b3eb508b57dcd708d088b5 Mon Sep 17 00:00:00 2001 From: Yourtion Date: Tue, 19 Apr 2016 11:09:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=BF=AB=E4=B8=AD=E6=96=AD=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=881=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 12_day/timer.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/12_day/timer.c b/12_day/timer.c index 0f384d6..77ad20c 100644 --- a/12_day/timer.c +++ b/12_day/timer.c @@ -49,7 +49,7 @@ void timer_init(struct TIMER *timer, struct FIFO8 *fifo, unsigned char data) void timer_settime(struct TIMER *timer, unsigned int timeout) { - timer->timeout = timeout; + timer->timeout = timeout + timerctl.count; timer->flags = TIMER_FLAGS_USING; return; } @@ -61,8 +61,7 @@ void inthandler20(int *esp) timerctl.count++; for (i = 0; i < MAX_TIMER; i++) { if (timerctl.timer[i].flags == TIMER_FLAGS_USING) { - timerctl.timer[i].timeout--; - if (timerctl.timer[i].timeout == 0) { + if (timerctl.timer[i].timeout <= timerctl.count) { timerctl.timer[i].flags = TIMER_FLAGS_ALLOC; fifo8_put(timerctl.timer[i].fifo, timerctl.timer[i].data); }