39 lines
		
	
	
		
			813 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			813 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "fifo.h"
 | |
| 
 | |
| #ifndef _TIMER_H_
 | |
| #define _TIMER_H_
 | |
| 
 | |
| #define PIT_CTRL 0x0043
 | |
| #define PIT_CNT0 0x0040
 | |
| 
 | |
| #define TIMER_FLAGS_ALLOC 1 // 已配置状态
 | |
| #define TIMER_FLAGS_USING 2 // 定时器运行中
 | |
| 
 | |
| #define MAX_TIMER 500
 | |
| #define TIMER_FIFO_BUF_SIZE 8
 | |
| 
 | |
| struct Timer {
 | |
|   unsigned int flags;
 | |
|   unsigned int timeout;
 | |
|   struct FIFO8 *fifo;
 | |
|   unsigned char data;
 | |
| };
 | |
| 
 | |
| struct TimerCtl {
 | |
|   unsigned int count, next, using;
 | |
|   struct Timer *timers[MAX_TIMER];
 | |
|   struct Timer timers0[MAX_TIMER];
 | |
| };
 | |
| 
 | |
| extern struct TimerCtl timerctl;
 | |
| 
 | |
| void init_pit(void);
 | |
| struct Timer *timer_alloc(void);
 | |
| void timer_free(struct Timer *timer);
 | |
| void timer_init(struct Timer *timer, struct FIFO8 *fifo, unsigned char data);
 | |
| void timer_set_timer(struct Timer *timer, unsigned int timeout);
 | |
| 
 | |
| void int_handler20(int *esp);
 | |
| 
 | |
| #endif // _TIMER_H_
 |