I
МИКРОКОНТРОЛЛЕРЫ
і
jnz
$1
; Пока нет - проверить, закончен ли интервал
movl
%a0,2
; Теперь новое состояние автомата - 2
bid
%Ь4,00000001b
; Остановить таймер.
jmp
again
$1:
cmpl
%Ь5,1
; Истекло ли время?
jnz
again
; Пока нет - начать работу автомата сначала.
movl
%a0,4
; Теперь новое состояние автомата — 4
bid
%Ь4,00000001b
; Остановить таймер.
jmp
again
cond 4:
;
и т.д (дальше код подробно не расписан).
cond_5:
cond 6:
cond 7:
end
Вот сколько изменений пришлось нам внести в программу, чтобы она могла адекватно реагировать на дребезг
контактов! Можно только представить себе, во что зто выльется для второго варианты реализации! Давайте
смотреть:
1. Начало программы придется изменить в любом случае - надо тоже инициализировать таймер.
2. Автоматная таблица, разумеется, полностью изменилась, и выглядит теперь следующим образом:
table:
.byte
12
;
Первая строка таблицы:
.byte
О
. word
te s tDown
.byte
1
.word
startT
;
Вторая строка таблицы:
.byte
1
.word
testUp
.byte
0
.word
stopT
;
Третья строка таблицы:
.byte
1
.word
test20
.byte
2
. word
turnOn
;
Четвертая строка таблицы:
.byte
2
.word
testUp
.byte
3
.word
startT
;
Пятая строка таблицы:
.byte
3
. word
testDown
.byte
2
.word
stopT
;
Шестая строка таблицы:
.byte
3
.word ■ test20
.byte
4
.word
stopT
;
Седьмая строка таблицы:
.byte
4
.word
testDown
.byte
5
.word
startT
Число строчек в автоматной таблице.
Текущее состояние = О
Подпрограмма проверки факта нажатия кнопки
Новое состояние = 1
Подпрограмма Запуска таймера
Текущее состояние — 1
Подпрограмма проверки факта отпускания кнопки.
Новое состояние = О
Подпрограмма останова таймера
Текущее состояние — 1
Подпрограмма проверки временного интервала
Новое состояние = 2
Подпрограмма включения лампочки
Текущее состояние = 2
Подпрограмма проверки факта отпускания кнопки
Новое состояние = 3
Подпрограмма Запуска таймера
Текущее состояние - 3
Подпрограмма проверки факта нажатия кнопки
Новое состояние = 2
Подпрограмма останова таймера
Текущее состояние — 3
Подпрограмма проверки временного интервала
Новое состояние = 4
Подпрограмма останова таймера
Текущее состояние = 4
Подпрограмма проверки факта нажатия кнопки
Новое состояние - 5
Подпрограмма запуска таймера
Н 45
Радиолюбитель - 10/2005 |
предыдущая страница 39 Радиолюбитель 2005-10 читать онлайн следующая страница 41 Радиолюбитель 2005-10 читать онлайн Домой Выключить/включить текст