Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТ_ОРГ_1.doc
Скачиваний:
29
Добавлен:
18.11.2019
Размер:
1.27 Mб
Скачать

Домашняя подготовка

Ознакомиться с теоретической частью лабораторной работы №4.

Изучить режимы работы таймеров, выполняемые ими функции и способы доступа к ним [1,2,5,6, 8, 9].

Подготовить ответы на контрольные вопросы.

В соответствии с вариантом задания, составить программу на языке ассемблера.

Контрольные вопросы

  1. Каким образом/средствами можно обеспечить требуемую длительность заданного временного интервала?

  2. Режимы работы БИС 8254.

  3. Объясните назначение и использование канала 0 таймера в IBM PC?

  4. Объясните назначение и использование канала 1 таймера в IBM PC?

  5. Объясните назначение и использование канала 2 таймера в IBM PC?

  6. Назначение часов реального времени.

  7. Возможные варианты калибровки счётчика тактов TSC.

  8. Назначение команды INT 1Ch в стандартном обработчике прерываний от таймера.

Теоретическая часть

4 Системное время в компьютерах ibm pc

    1. Измерение частоты при помощи rdtsc

Измерение частоты при помощи RDTSC происходит следующим образом:

  1. Маскируются все прерывания кроме прерывания от таймера.

  2. Выполняется команда HLT.

  3. Считывается и сохраняется значение счетчика.

  4. Снова выполняется команда HLT.

  5. Считывается значение счетчика.

  6. Разность значений считанных в пунктах 3 и 5 есть количество тактов за 1 тик таймера (частота прерываний таймера примерно 18,2Гц).

Посмотрим на временную диаграмму.

Рисунок 4.1 – Временная диаграмма

Момент запуска программы обозначен как t0, штрихи на оси – моменты, когда происходит прерывание от таймера. Первый HLT в листинге нужен для того чтобы преодолеть время t1, которое неизвестно заранее, так как программа может быть запущена в произвольное время. Затем, в момент между t1 и t2 считывается значение счетчика, оно сохраняется и снова делается HLT, процессор будет простаивать до первого прерывания, то есть практически ровно период t2, который и равен периоду прерываний от таймера. Таким образом, при известном значении периода таймера 18,2 Гц, а также количества тактов за этот период можно узнать точную тактовую частоту.

mov al,0FEh ;маскируем все прерывания кроме таймера

out 21h,al

hlt

rdtsc

mov esi,eax

hlt

rdtsc

sub eax,esi

;в EAX - количество тактов процессора за 1 тик таймера преобразование в мегагерцы и вывод на экран

mov al,0

out 21h,al

    1. Назначение каналов таймера в ibm pc

Стандартное использование каналов таймера в компьютере поясняется на рисунке 4.2.

Рисунок 4.2 - Схема стандартного использования каналов таймера

Канал 0 таймера используется для отсчета текущего времени. При инициализации компьютера он программируется для работы в режиме 3с двухбайтным начальным значением счетчика равным 0. При таком режиме полный цикл таймера (частота генерации OUT) составляет около 55 миллисекунд. Сигнал GATE всегда установлен в высокий уровень. Сигнал OUT поступает в контроллер прерываний на линию 0 (IRQ0), в результате чего с периодичностью 55 миллисекунд происходит прерывание от таймера.

Стандартный обработчик прерываний от таймера BIOS выполняет следующие функции:

- увеличивает на 1 текущее время, которое содержится в двойном слове по адресу 40h:6Ch; при достижении значения 1800B0h обнуляет это двойное слово и устанавливает байт по адресу 40h:70h в единицу, указывая, что выполнен переход через полночь;

- уменьшает на 1 байт счетчика ожидания выключения мотора дискет по адресу 40h:40h и при достижении нулевого значения выполняет выключение мотора;

- выполняет команду INT 1Ch.

Естественно, нулевой канал таймера может использоваться и для программирования более коротких интервалов времени. При перепрограммировании таймера на меньший интервал необходимо корректно передавать управление базовому обработчику прерываний таймера, чтобы не нарушить отсчет текущего времени и работу других программ.

Канал 1 таймера используется как генератор для схемы регенерации памяти. BIOS программирует его в режиме 2 с однобайтовым счетчиком (младший байт), равным 18. Такой счетчик обеспечивает интервал чуть больший 15 микросекунд. Не рекомендуется перепрограммировать канал 1, так как это нарушит цикл регенерации памяти и приведет к разрушению ее содержимого.

На компьютерах класса AT этот канал таймера можно использовать для отсчета интервалов времени. Для этого следует проверять бит 4 управляющего порта 61h, который меняет свое значение на противоположное каждый цикл первого канала таймера (то есть примерно через 15 микросекунд).

Канал 2 таймера, как правило, используется для генерации звука. Сигнал GATE для второго канала управляется битом 0 порта 61h. Сигнал OUT заведен на динамик. Соединение сигнала OUT с динамиком управляется битом 1 порта 61h.

Второй канал таймера может использоваться для целей отсчета времени. Следует отметить, что средства BIOS используют этот канал таймера только для генерации звука и он не имеет постоянного режима работы и постоянного начального значения счетчика. Поэтому можно использовать этот канал в любом режиме. Тем не менее, рекомендуется после завершения работы со вторым каналом установить третий режим с двухбайтным счетчиком, так как некоторые BIOS не производят инициализацию этого канала перед выдачей звукового сигнала.