From 6da34e7cbe25765767f446191a30d810f6a418a0 Mon Sep 17 00:00:00 2001 From: Yourtion Date: Wed, 20 Apr 2016 11:56:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=B0=83=E6=95=B4FIFO?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E5=8C=BA=EF=BC=881=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 13_day/bootpack.c | 56 ++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/13_day/bootpack.c b/13_day/bootpack.c index 986040b..837bffb 100644 --- a/13_day/bootpack.c +++ b/13_day/bootpack.c @@ -29,18 +29,16 @@ void HariMain(void) io_out8(PIC0_IMR, 0xf8); /* PIT和PIC1和键盘设置为许可(11111000) */ io_out8(PIC1_IMR, 0xef); /* 开放鼠标中断(11101111) */ - fifo8_init(&timerfifo, 8, timerbuf); - timer = timer_alloc(); - timer_init(timer, &timerfifo, 1); - timer_settime(timer, 1000); - fifo8_init(&timerfifo2, 8, timerbuf2); - timer2 = timer_alloc(); - timer_init(timer2, &timerfifo2, 1); - timer_settime(timer2, 300); - fifo8_init(&timerfifo3, 8, timerbuf3); - timer3 = timer_alloc(); - timer_init(timer3, &timerfifo3, 1); - timer_settime(timer3, 50); + fifo8_init(&timerfifo, 8, timerbuf); + timer = timer_alloc(); + timer_init(timer, &timerfifo, 10); + timer_settime(timer, 1000); + timer2 = timer_alloc(); + timer_init(timer2, &timerfifo, 3); + timer_settime(timer2, 300); + timer3 = timer_alloc(); + timer_init(timer3, &timerfifo, 1); + timer_settime(timer3, 50); init_keyboard(); enable_mouse(&mdec); @@ -81,8 +79,7 @@ void HariMain(void) putfonts8_asc_sht(sht_win, 40, 28, COL8_000000, COL8_C6C6C6, s, 10); io_cli(); - if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) + fifo8_status(&timerfifo) - + fifo8_status(&timerfifo2) + fifo8_status(&timerfifo3) == 0) { + if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) + fifo8_status(&timerfifo) == 0) { io_sti(); } else { if (fifo8_status(&keyfifo) != 0) { @@ -126,25 +123,24 @@ void HariMain(void) sheet_slide(sht_mouse, mx, my);/* 包含sheet_refresh含sheet_refresh */ } } else if (fifo8_status(&timerfifo) != 0) { - i = fifo8_get(&timerfifo); /* 首先读入(为了设定起始点) */ + i = fifo8_get(&timerfifo); /*超时的是哪个呢? */ io_sti(); - putfonts8_asc_sht(sht_back, 0, 64, COL8_FFFFFF, COL8_008484, "10[sec]", 7); - } else if (fifo8_status(&timerfifo2) != 0) { - i = fifo8_get(&timerfifo2); /* 首先读入(为了设定起始点) */ - io_sti(); - putfonts8_asc_sht(sht_back, 0, 80, COL8_FFFFFF, COL8_008484, "3[sec]", 6); - } else if (fifo8_status(&timerfifo3) != 0) { - i = fifo8_get(&timerfifo3); - io_sti(); - if (i != 0) { - timer_init(timer3, &timerfifo3, 0); /* 然后设置0 */ - boxfill8(buf_back, binfo->scrnx, COL8_FFFFFF, 8, 96, 15, 111); + if (i == 10) { + putfonts8_asc_sht(sht_back, 0, 64, COL8_FFFFFF, COL8_008484, "10[sec]", 7); + } else if (i == 3) { + putfonts8_asc_sht(sht_back, 0, 80, COL8_FFFFFF, COL8_008484, "3[sec]", 6); } else { - timer_init(timer3, &timerfifo3, 1); /* 然后设置1 */ - boxfill8(buf_back, binfo->scrnx, COL8_008484, 8, 96, 15, 111); + /* 0还是1 */ + if (i != 0) { + timer_init(timer3, &timerfifo, 0); /*下面是设定为0 */ + boxfill8(buf_back, binfo->scrnx, COL8_FFFFFF, 8, 96, 15, 111); + } else { + timer_init(timer3, &timerfifo, 1); /*下面是设定为1*/ + boxfill8(buf_back, binfo->scrnx, COL8_008484, 8, 96, 15, 111); + } + timer_settime(timer3, 50); + sheet_refresh(sht_back, 8, 96, 16, 112); } - timer_settime(timer3, 50); - sheet_refresh(sht_back, 8, 96, 16, 112); } } }