kernel/init_8253.c

本文介绍了一个用于设置8253定时器控制时钟中断间隔的代码示例。通过配置8253Counter0并利用模式2,可以实现自定义时钟中断的发生频率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Code:
  1. /*  
  2.     By Marcus Xing  
  3.     kernel/init_8253.c  
  4.     设置8253,控制2次时钟中断发生的间隙  
  5. */  
  6.   
  7. #include "type.h"   
  8. #include "const.h"   
  9. #include "ipc.h"   
  10. #include "console.h"   
  11. #include "tty.h"   
  12. #include "protect.h"   
  13. #include "proc.h"   
  14. #include "proto.h"   
  15.   
  16. /*  
  17.     8253端口  
  18.       
  19.     端口  描述  
  20.     40h     8253Counter0  
  21.     41h     8253Counter1  
  22.     42h     8253Counter2  
  23.     43h     8253模式控制寄存器  
  24.       
  25.     其中Counter0关系到时钟中断发生的间隙,PC的频率为1193180HZ  
  26.     每发生一个时钟周期Counter0值减1,减到0发生一次时钟中断,并  
  27.     且回到最大值,Counter0为16位,所以最大值为65535。  
  28.       
  29.     想设置Counter0,必须先写模式控制寄存器,此处选择模式2,并  
  30.     先读低位,再读高位,选择Counter0,即为0x34   
  31. */  
  32.   
  33. /*---------------------------------------------------------------------Init_8253  
  34.     初始化8253  
  35. */  
  36. void Init_8253()   
  37. {   
  38.     Out_Byte(MODE_CTL,0x34);   
  39.     Out_Byte(COUNTER0,(u8)(PC_FREQ / MY_HZ));   
  40.     Out_Byte(COUNTER0,(u8)((PC_FREQ / MY_HZ) >> 8));   
  41. }   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值