Аппаратное обеспечение персонального компьютера

       

Программа TIMERST


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

Листинг 5.1. Файл timerst\timerst.с

// =====================================================

// Просмотр слова состояния и содержимого

// счетчиков таймера

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =====================================================



#include <stdio.h>

#include <conio.h>

int 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-------\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);

  return 0;

}



Содержание раздела