30天自制操作系统(day12)

第12天:定时器(1)

1、内容1:使用定时器

定时器的意思是每隔一段时间就发送一个中断信号给CPU,这样CPU就不需要自己去计量时间。如果不采用定时器会导致程序对时间的管理难度增大,并且不能再使用HLT指令了。因此很有必要采用定时器中断,当使用定时器后,程序只需要以自己的步调处理问题即可,当需要知道时间时,只需要在中断程序中记录定时器中断发生的次数即可。即使CPU处于HLT状态时,也可以通过中断来唤醒。
那么如何才能管理定时器呢?
对PIT进行设定即可,PIT=可编程的间隔型定时器,通过设定,让定时器每隔多少秒产生一次中断。电脑中的PIT连接IRQ的0号,所以只要设定了PIT就可以设定IRQ0的中断间隔。
在这里插入图片描述
IRQ0的中断周期变更:
D0-D7就是我们的选择模式端
书本上介绍的往0x43中写入0x34对应的控制字格式:
在这里插入图片描述
写入的是0x34对应二进制为00110100,那么选择的模式就是计数器0,选择先低后高两个字节读或写,以方式2进行二进制计数。方式2在上面的文库中找到的模式是频率发生器。往0x40写入的是中断周期,书上的意思是写入的值代表了多少个时钟周期,芯片时钟频率为1193.18KHZ,那么中断频率=(单位时间时钟周期数(主频))/(设定的数值)。如果指定中断周期为0,看作指定为65536,如果设定值是1000,那么中断产生频率就是1.19318KHz,根据比例可以设定不同的值。
在这里插入图片描述
在这里,只需要执行3次OUT指令设定即可完成定时器的设定,如果将中断周期设为11932的话,中断频率即为100HZ,即1s发生100次中断。将11932换算为十六进制0x2e9c来进行设定。a的timer文件与bootpack.c中:
选择模式定义一个init_pit函数:
在这里插入图片描述
主函数中加入:
在这里插入图片描述
这样设定的话ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值