А лександр Черном ы рдин
г. Магнитогорск
E-mail:
chav1961
@radioliga.com
--------------------------
D
А
Окончание.
Начало
в
№7/2007
Пояснения по программе:
1. В микроконтроллере ATTinyl 5
существует регистр Z - аналог ре-
гистров
IRO
и
IR1
микроконтролле-
ра КР878ВЕ1. В качестве этого ре-
гистра выступают два последних
регистра - гЗО и г31. В этом есть
как преимущества, так и недостат-
ки. Преимущество такого решения
- не требуются специальные ко-
манды для загрузки регистра нуж-
ными значениями, плюс возмож-
ность выполнения сколь угодно
сложной арифметики над регист-
ром
Z
микроконтроллере
КР1878ВЕ1 для этого требуется
считать значение регистра коман-
дами mfpr, выполнить требуемые
операции, и затем сохранить его
командами mtpr). Недостаток же
такого решения - для регистра Z не
предусмотрено никаких режимов
автоинкремента/автодекремента
(которые требуются в 95% случаев
их использования), что приводит к
необходимости выполнять это
вручную. В нашем примере эти ча-
сто используемые действия над ре-
гистром Z оформлены в виде под-
программы getByte. Младший байт
адреса должен располагаться в
регистре гЗО, старший - в регист-
ре г31. Для определения младшей
и старшей части адреса в ассемб-
лере ATMEL существуют специаль-
ные конструкции low(.
..) и high(
.)
соответственно. В микроконтрол-
лере КР1878ВЕ1 для этого исполь-
зовались две различных мнемони-
ки команд (например mial и miah).
2. Особенность ассемблера
микроконтроллеров ATMEL - ди-
.
ректива
.db,
с помощью которой
определяются константы-байты
(аналог директивы
.byte
микрокон-
троллера КР1878ВЕ1), должна все-
гда содержать четное число бай-
тов. В противном случае ассемб-
лер автоматически дополнит дан-
ные пустым байтом. Организация
Первая программа
для ATTINY15
МИКРОКОНТРОЛЛЕРЫ'
в-
-
-
-
-
автоматной таблицы в нашем при-
мере будет такая же, как в микро-
контроллере КР1878ВЕ1: первый
байт - число строк автоматной таб-
лицы, далее - пустой байт (из-за
особенности ассемблера АТМЕ1_),
а далее - строки таблицы из 4 байт
каждая. Первым байтом в таблице
будет номер текущего состояния
автомата, вторым-терминальный
символ, третьим - номер нового со-
стояния, а четвертым - код про-
граммы выхода.
3. Проверяем,совпадает ли но-
мер состояния автомата из очеред-
ной строки с текущим номером со-
стояния автомата. Обратите внима-
ние на команду
срве
- эта команда
также пропускает следующую ко-
манду при условии равенства опе-
рандов. Именно поэтому здесь и нет
команд условных переходов.
4. Номера состояния совпали -
проверяем, совпадает ли терми-
нальный символ с ожидаемым тер-
миналом.
5. Таким способом мы заменя-
ем номер состояния автомата но-
вым номером.
6. Следующий участок кода - ва-
риант реализации команды вычис-
ляемого перехода, которой в под-
множестве команд А ТТту нет.
Здесь используется комбинация ко-
манд вЬгс и
гсаИ.
В отличие от реа-
лизации автомата на КР1878ВЕ1,
программа выхода представлена в
автоматной таблице не ее номером,
а набором битов: наличие того или
иного бита обозначает необходи-
мость выполнить ту или иную про-
грамму выхода. При таком подхо-
де в одном байте можно закодиро-
вать вызов только 8 программ вы-
хода, но зато у нас появляется но-
вая интересная возможность - ука-
зав несколько взведенных битов,
мы можем выполнить несколько
программ выхода. Такая ситуация
в наших примерах на КР1878ВЕ1
возникала достаточно часто: в од-
ной программе выхода требовалось,
к примеру, остановить таймер, в
другой - остановить таймер и вык-
лючить светодиод. Там этот вопрос
решался написанием программы-
переходника, из которого последо-
вательно вызывались “элементар-
ные” программы только останова
таймера и только отключения све-
тодиода. При способе кодирования,
примененном в нашем примере, не-
обходимость в таких программах-
переходниках отпадает.
7.
Как
и
в
примерах
на
КР1878ВЕ1, этот участок выполня-
ет пропуск данных до конца теку-
щей строки автоматной таблицы.
8. А вот таким кодом должен
обязательно заканчиваться каж-
дый обработчик прерываний. Вос-
становление регистра состояния в
микроконтроллерах АТМЕ1_ не вы-
полняется автоматически, об этом
должен позаботиться сам програм-
мист.
9. А вот как выглядит подпрог-
рамма чтения байта автоматной
таблицы с автоинкрементом. В
примерах на КР1878ВЕ1 это вы-
полнялось даже не одной коман-
дой, а просто упоминанием конст-
рукции
°/о67
в соответствующих
операндах команды. В микроконт-
роллерах АТТту это приходится
выполнять вручную. В старших мо-
делях АТМЕ1_ существуют другие
регистры косвенной адресации, в
которых присутствует режим авто-
инкремента, но необходимость чте-
ния данных из таблицы в какой-
либо регистр в них все равно со-
храняется - это последствия раз-
деления адресных пространств
микроконтроллера.
Как видите, нельзя однозначно
сказать, что микроконтроллер X
однозначно лучше, а микроконт-
роллер У однозначно хуже. Если
бы это было так, микроконтролле-
ры У просто бы не выпускались,
поскольку их никто бы не покупал.
Понятия “лучше” или “хуже” полно-
стью зависят от контекста, в кото-
ром рассматриваются те или иные
микроконтроллеры.
56
У
Радиолюбитель - 0 8 /2 0 0 7
предыдущая страница 56 Радиолюбитель 2007-08 читать онлайн следующая страница 58 Радиолюбитель 2007-08 читать онлайн Домой Выключить/включить текст