|
Программируется канал 2 таймера в режим 3 и грузится к-либо делителем X:
outportb(0x43,0xb6);
outportb(0x42,X);
outportb(0x42,X>>8);
Разрешается счет импульсов:
outportb(0x61,inportb(0x61)|1);
После этих мероприятий счетчик начинает крутиться от X до 0 с частотой 1193180*2 Гц, а при достижении 0 снова грузит в себя X и продолжает считать. Соответственно для измерения интервала необходимо считать значения счетчика в начале и конце интервала и отследить все переходы через 0 в промежутках.
Для считывания применяется такая последовательность:
outportb(0x43,0x80);
Y= inportb(0x42); // младший байт
Y+=((unsigned int)inportb(0x42))<<8; // старший байт
Каналы 0 и 1 лучше не трогать, ими система пользуется.
Литература: Библиотека системного программиста, том 2,
А.В.Фролов, Г.В.Фролов. Аппаратное обеспечение IBM PC
в сети где-то есть.
E-mail: info@telesys.ru