pit.cc.svn-base
来自「德国Erlangen大学教学操作系统源码。」· SVN-BASE 代码 · 共 56 行
SVN-BASE
56 行
#include "machine/pit.h"PIT::PIT() : cmd_port(PIT_ports::cmd1), data_port(PIT_ports::data10), _interval(PIT_Attrib::max_interval){ interval(PIT_Attrib::max_interval);}PIT::PIT(int us) : cmd_port(PIT_ports::cmd1), data_port(PIT_ports::data10), _interval(us){ interval(us);}PIT::PIT(PIT &pit) : cmd_port(PIT_ports::cmd1), data_port(PIT_ports::data10), _interval(pit._interval){}PIT::~PIT(){}void PIT::interval(int us){ if (us > PIT_Attrib::max_interval) us = PIT_Attrib::max_interval; else if (us < 0) us = 0; int counter = convert(us); _interval = us; cmd_port.outb(PIT_Attrib::timer0 | PIT_Attrib::low_high | PIT_Attrib::mode2 | PIT_Attrib::bin); data_port.outb(counter & 0xff); data_port.outb( (counter>>8) & 0xff);}int PIT::interval(){ return _interval;}int PIT::convert(int us) const{ int counter = PIT_Attrib::freqence/1000*us/1000; if(counter > PIT_Attrib::max_counter) counter = PIT_Attrib::max_counter; else if(counter < 1) counter = 1; return counter;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?