|
|
|
|
Система упорядоченного опроса
Система упорядоченного опроса состоит из главного цикла, в течение которого все устройства последовательно опрашиваются (или
вызываются нужные процедуры) по одному. Программа для упрощенной
системы домашнего контроля использует эту структуру, что демонстрируется программой в системе 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
----------------------------------------------------------------
|
Преимуществами описанного метода являются:
. простая конструкция системы
. быстрое время ответа.
Недостатками же являются следующие:
. процессор всегда находится в занятом состоянии, поскольку он полностью посвящен опросу портов
. время циклов может стать чрезмерным по мере возрастания количества опрашиваемых устройств
. время тратится на опрос портов, большую часть времени находящихся в неактивном состоянии, например, датчиков дыма в нашем примере.
|
|