Аппаратное обеспечение IBM PC


         

Для чего вам может понадобиться


Для чего вам может понадобиться перепрограммирование каналов таймера?

Если вам надо повысить точность измерения времени, выполняемого с помощью канала 0 таймера, вы можете увеличить частоту генерируемых этим каналом импульсов (стандартно 18,2 Гц). По окончании измерений режим работы канала необходимо восстановить для правильного функционирования системы.

Канал 2, подключенный к громкоговорителю, вы можете использовать для генерации различных звуков или музыки, о чем мы расскажем немного позже. Этот же канал может быть использован для генерации случайных чисел.

Приведем пример программы, отображающей слово состояния и содержимое счетчика для всех трех каналов таймера:

#include <stdio.h> #include <conio.h>

main() {

unsigned i;

printf("\n\nКанал 0" "\n-------" "\n");

// Читаем слово состояния канала, // команда 0xe2 = 11100010B

outp(0x43, 0xe2);

printf("\nСлово состояния канала: %02.2X", inp(0x40));

// Читаем текущее состояние регистра счетчика // канала. Для этого вначале выдаем команду CLC // для канала 0. Код этой команды - 0x00

outp(0x43, 0x00);

// Вводим младший и старший байты счетчика // и отображаем его.

i = inp(0x40); i = (inp(0x40) << 8) + i;

printf("\nРегистр счетчика: %04.4X",i);

// Повторяем те же действия для 1 и 2 каналов.

printf("\n\nКанал 1" "\n-------" "\n");

outp(0x43, 0xe4); printf("\nСлово состояния канала: %02.2X",inp(0x41));

outp(0x43, 0x40);

i = inp(0x41); i = (inp(0x41) << 8) + i;

printf("\nРегистр счетчика: %04.4X",i);

printf("\n\nКанал 2" "\n-------");

outp(0x43, 0xe8); printf("\nСлово состояния канала: %02.2X",inp(0x42));

outp(0x43, 0x80);

i = inp(0x42); i = (inp(0x42) << 8) + i;

printf("\nРегистр счетчика: %04.4X",i);

exit(0);

}


Содержание  Назад  Вперед