На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 5 / Система упорядоченного опроса Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Система упорядоченного опроса

Система упорядоченного опроса состоит из главного цикла, в течение которого все устройства последовательно опрашиваются (или вызываются нужные процедуры) по одному. Программа для упрощенной системы домашнего контроля использует эту структуру, что демонстрируется программой в системе 5-5.


В этой программе слова "wait_loop" обозначают программный цикл, в котором происходит ожидание в течение некоторого времени. В общем случае может потребоваться вводить "передышки" в системы опроса. Для того, чтобы понять необходимость введения таких "передышек", рассмотрим пример управления управляемой компьютером автомашины. Предположим, что компьютер решил повернуть машину в право и выдал команду: "поворот направо". Колеса начали выполнять поворот, но в этот момент, предположим, компьютер продолжает проверять и оценивать входные данные с все большей скоростью. И компьютер продолжает считать, что машина еще не поворачивает и повторно посылает команду поворота вправо. Прежде чем осознать, что машина уже поворачивает, компьютер успевает выдать несколько команд "поворота вправо", что приведет к заносу машины. Чтобы избежать подобной ситуации компьютер должен быть так запрограммирован, чтобы он имел возможность делать паузы после выдачи команд для их выполнения. Но в случае управления домашним хозяйством такие паузы недопустимы, так как обнаружение пожара требует немедленных, а не "отложенных" действий, как уже было упомянуто выше.


                         Листинг 5-5. Программа ref_level
         ----------------------------------------------------------------
                   ; ref_level - опасный уровень дыма
            forever:
                   call    adjust_temp     ;вызов стандартной подпрог-
                                           ;раммы
                   in      al, smoke_port  ;получить значение уровня
                                           ;дыма
                   cmp     al, ref_level   ;проверка наличия опасности
                   jl      no_danger
                   call    initiate_alarm  ;включить сигнал тревоги
            no_danger:
                   call    water_lawn      ;вызов стандартной подпрог-
                                           ;раммы
                   call    wait_loop       ;пауза (отсутствие действий)
                   jmp     forever
            wait_loop:
                   mov     cx, 0ffh        ;значение в cx определяет
                                           ;время ожидания
            wait:
                   loop    wait
                   ret
         ----------------------------------------------------------------

Преимуществами описанного метода являются:


. простая конструкция системы


. быстрое время ответа.


Недостатками же являются следующие:


. процессор всегда находится в занятом состоянии, поскольку он полностью посвящен опросу портов


. время циклов может стать чрезмерным по мере возрастания количества опрашиваемых устройств


. время тратится на опрос портов, большую часть времени находящихся в неактивном состоянии, например, датчиков дыма в нашем примере.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz