30天自制操作系统(Mac版)读书笔记(day12)
添加定时器
在haribote.nasm中,LABEL_IDT的第33个终端函数就是系统时钟函数,所以在.021h:上面,添加以下代码:
.020h:
Gate SelectorCode32, timerHandler,0, DA_386IGate
那么CPU上的“晶震”会定时的调用到timerHandler这个c语言函数中,那么我们再在这里做一些操作。当然也需要在init8259A的会变函数中,打开时钟中断的开关。
mov al, 11111001b
out 021h, al
call io_delay
实现TimerHandler
具体的就可以直接参考 代码 ,可以直接把timer.c 和timer.h拷贝到项目中,在main函数中自适当的调用就可以了。