Assembler для начинающих


         

таймера отмечается переход от низкого


    таймера отмечается переход от низкого к высокому уровню. Программа
    рследит именно за переходом; если бы она регистрировала только
    высокий уровень, было бы неизвестно, стал ли сигнал высоким только
    что или уже готов стать низким. Подпрограмма посылает нуль в
    управляющий регистр таймера (порт 43H), чтобы "заморозить" текущее
    значение канала 0. Это позволяет ей прочитать текущее значение
    таймера, продолжающего счет. Если бы программа временно не
    зафиксировала таймер, она не смогла бы прочитать без ошибки его
    16-битовое значение.
 
      Обратим внимание на то, что подпрограмма на Фиг. 8.5 содержит
    несколько команд NOP. Эти команды записаны в программе для выдержки
    временных соотношений. Если очень внимательно прочитать инструкции
    по микросхеме 8253, мы заметим, что между командами IN и OUT,
    выполняемыми этой микросхемой, проходит не меньше 1 микросекунды.
    Команда NOP занимает как раз достаточно времени, чтобы исключить
    нарушение требований микросхемы по времени.
      После возврата из подпрограммы программа сохраняет в регистре
    BX значение счетчика таймера во время первого перехода с низкого
    уровня на высокий. Затем программа снова вызывает подпрограмму,
    чтобы зарегистрировать следующий переход с низкого уровня на
    высокий на выходе канала 2 таймера. Потом она вычитает одно число
    из другого, чтобы определить время цикла канала 2.
 
      Мы уже говорили о том, что загрузка регистра 0 таймера
    значением счета 0 - очень полезна. Данная программа подтверждает
    это, так как она вычитает два значения таймера, не обращая внимания
    на то, какое из них больше, а какое меньше. Так как канал 0 таймера
    работает асинхронно по отношению к этой программе, нет никакой
    гарантии, что первое читаемое из него число больше второго.
    Например, предположим, что первый переход с низкого на высокий
    уровень происходит, когда таймер 0 имеет значение 100H. После 500H
    циклов значение числа в таймере будет 0FC00H. Счетчик таймера 0

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