И
МИКРОКОНТРОЛЛЕРЫ
|}
ЬМ INC1:
ЬМ_Х11: ері
ЬМ_112: ret
ЬМ INC2:
ЬМ 121: ret'
ret
; <11>Изменение показаний часов.
ІПС
r25
; Увеличить единицы часов.
ldi
rl6,OxOF
; Проверить, не вышли ли мы за 2!
and
rl6,r2 5
ері
rl6,0x0A
; Дошли ли мы до десятка часов?
brne
ЬМ_І11 ,
; Пока нет.
..
subi
r25,-6
; Да - перенести часы в старший разряд
r25,0x24
; Добрались до 24 часов?
brne
ЬМ_І12
; Пока нет.
..
clr
r25
; Да - сбросить часы.
; Изменение показаний минут.
ІПС
r26
; Увеличить единицы минут.
ldi
г16,OxOF
; Проверить, не вышли ли мы за 2!
and
rl6,r26
ері
rl6,OxOA
; Дошли ли мы до десятка минут?
brne
ЬМ_І21
; Пока нет.
..
subi
r2 6,-6
; Да - перенести минуты в старший разряд
cpi
r26,0x60
; Добрались до 60 минут?
brne
ЬМ_І21
; Пока нет.
..
clr
r26
; Да - сбросить минуты.
Пояснения по программному
коду:
1. Это - подпрограмма-паразит.
Она нужна исключительно из-за
того, что в микроконтроллере
АТТту15 не предусмотрено режи-
мов автоинкремента при работе с
регистром косвенной адресации.
Именно этот автоинкремент эта
подпрограмма и реализует.
2. Начало автомата кнопки, т.е.
загрузка в регистр косвенной ад-
ресации адреса соответствующей
автоматной таблицы. Обратите
внимание на конструкции 1сш(.
..) и
ЫдИ(.
..) - с помощью них произво-
дится вычисление младшей и стар-
шей части адреса автоматной таб-
лицы соответственно. Умножение
адреса на 2 здесь необходимо - ад-
реса здесь, как и в КР1878ВЁ1, вы-
числяются в словах, а не в байтах.
На взгляд автора - глупость, кочу-
ющая из системы в систему.
3. Загрузка размера таблицы в
рабочую ячейку (регистр г12). Если
в
реализации
автоматов
для
КР1878ВЕ1 мы всегда хранили раз-
мер таблицы вместе с самой табли-
цей, здесь этот размер загружает-
ся в явном виде - в виде констан-
ты. Мера эта вынужденная, потому
что загрузка байта размера из об-
ласти таблицы получится намного
длиннее - мы вынуждены будем
после загрузки обязательно выз-
вать подпрограмму next, причем -
дважды (вспомните предыдущую
статью).
4. Это - сравнение текущего со-
стояния и текущего терминала с
данными из соответствующей
строки автоматной таблицы.
5. Сравнение успешно - изме-
нить состояние автомата и отме-
тить факт этого изменения (бит 1
регистра г17).
6. А вот - реализация “вычис-
ляемого перехода”.
7. Это - пропуск до конца строки
автоматной таблицы и переход на но-
вую строку. Реализацию автомата на
ATTinyl 5 мы подробно рассматрива-
ли в предыдущей статье, так что она,
по возможности, краткая.
8. Реализации основного авто-
мата. Отличие - в другой загружа-
емой таблице и в ее размере. Весь
остальной код просто использует-
ся повторно.
9. Подпрограммы выхода. В
силу очевидности выполняемых
ими действий предлагаем разоб-
раться в них самостоятельно.
10. Вот - та особенность, про
которую мы говорили при описании
фонового процесса. Мы только от-
мечаем факт необходимости со-
хранения показаний часов (бит 7
регистра П 7), но не выполняем его.
11. Это - подпрограммы цикли-
ческого изменения показаний ча-
сов. Обратите внимание, каким об-
разом осуществляется инкремент
двоично-десятичных цифр - сложе-
нием его с числом 6 при достиже-
нии десятки в младшем разряде
(подумайте, почему).
РХ
Окончание в №12/2007
34
U Радиолюбитель - I I /2 0 0
7
предыдущая страница 34 Радиолюбитель 2007-11 читать онлайн следующая страница 36 Радиолюбитель 2007-11 читать онлайн Домой Выключить/включить текст