(1
МИКРОКОНТРОЛЛЕРЫ
І
Итак:
Автоматы и программы выхода для них.
; <1> Загрузка данных из таблицы автомата и переход к следующему адресу,
next :
1pm
inc
гЗО
ret
; <2>Автомат кнопки. Текущее состояние+терминал передаются через регистр г11, там же окажется
; и новое состояние автомата.
; В регистре г13 после отработки окажется терминал для основного автомата.
ЬиЬЬАиЬо:
ЬА_0:
ЬА 3:
ЬА 1:
ldi
r30,low(2*forButton)
ldi
r31,high(2*forButton)
ldi
rl6,17
; <3> Загрузить число строк в автоматной таблице.
mov
rl2,rl6
; Переслать ее в рабочую ячейку.
rcall
next
cp
rO,rll
; <4>Совпадает ли текущее состояние автомата и терминал
; с ожидаемым.
brne
ЬА_1
; Нет.
..
rcall
next
; <5>
mov
rll,r0
; Заменить состояние автомата новым.
sbr
rl7,0x02
; Отметить факт изменения состояния автомата.
rcall
next
; <6>
mov
rl2,r0
; Переписать биты действий в г12.
sbrc
rl2,0
; Отработка программ выхода.
rcall
bA STOP DT
; Останов виртуального таймера.
sbrc
rl2,1
rcall
bA START DTI
; Запуск виртуального таймера на задержку 20 мсек.
sbrc
rl2,2
rcall
bA START_DT2
; Запуск виртуального таймера на Задержку 1 сек.
sbrc
rl2,3
rcall
bA ON
; Занесение символа "Кнопка нажата".
sbrc
rl2,4
rcall
bA REPEAT
; Занесение символа "Автоповтор".
sbrc
rl2,5
rcall
bA DBLCLK
; Занесение символа "Двойной щелчок".
sbrc
rl2,6
rcall
bA_0FF
; Занесение символа "Кнопка отпущена".
sbrc
rl2,7
rcall
ЬМ Save
; Сохранение конфигурации часов.
rcall
next
mov
rl2,rO
; Переписать биты действий в г12.
sbrc
rl2,0
rcall
ЬМ_Т01
; Переход к изменению часов.
sbrc
rl2,1
rcall
ЬМ_Т02
; Переход к изменению минут.
sbrc
rl2,2
rcall
bM_INCl
; Изменение часов.
sbrc
rl2,3
rcall
ЬМ INC2
; Изменение минут.
ret
rcall
next
; <7> Фиктивный сдвиг указателя автоматной таблицы.
rcall
next
rcall
next
dec
rl2
; Закончился ли цикл просмотра автоматной таблицы?
^Радиолюбитель - I 1/2 00
7
предыдущая страница 32 Радиолюбитель 2007-11 читать онлайн следующая страница 34 Радиолюбитель 2007-11 читать онлайн Домой Выключить/включить текст