fl
МИКРОКОНТРОЛЛЕРЫ
fr
ldi
rl6,BÙTTON_ON
,
mov
r2,rl6
; Загрузить терминальный символ а отведенный
rjmp
automat
; для него регистр.
ovl0_int:
; <4> - обработчик прерывания по переполнению таймера 0.
in
r4, SREG
; Сохранить регистр состояния.
ldi
rl6,l
; <5> - Вычитаем 1 из виртуального таймера.
sub
r5,rl6
sbc
r6, r7
CP
r5,r7
; <6> - Сравнить значение таймера с нулем.
cpc
r6, r7
brne
blockZero
; Таймер ненулевой!
ldi
г16,TIMEOUT
; Загрузить терминальный символ в отведенный
mov
r2,rl6
; для него регистр.
rjmp
automat
-
blockZero:
brpl
exit
; Таймер пока еще больше нуля - -
clr
r5
; дополнительных усилий не требуется.
..
; Таймер уже меньше нуля - снова сбросить его
clr
r6
; в нулевое Значение, т.к. вычли лишнее.
rjmp
exit:
П ояснения по этом у уч астку
программы:
1. Это - обычный цикл ожидания
прерываний, который мы неоднок-
ратно реализовывали в микроконт-
роллере К Р 1878В Е 1. В A TTiny15
этот цикл практически ничем не от-
л и ч ается .
Т а к
ж е,
к а к
и
в
К Р 1 8 7 8 В Е ‘1, внутри этого цикла
можно организовать работу фоно-
вого процесса.
2. А вот, собственно, - обработ-
чик прерываний от кнопки. О бра-
тите внимание: первое, что необ-
ходимо сделать в обработчике, -
сохранить регистр состояния, ина-
че после завершения работы обра-
ботчика мы не смржем корректно
продолжить выполнение прерван-
ной программы.
3. Интересная особенность си-
стемы команд микроконтроллеров
ATMEL - в ней существует ряд ко-
манд, которые позволяют пропус-
кать выполнение следую щ ей за
ней команды при выполнении оп-
ределенного условия. Одна из та-
ких команд - команда sbis. О на
проверит содержимое указанного
бита указанного регистра порта В
и, если он равен лог.1, пропустит
следующую команду. В результате
выполнения последовательности
из этих трех команд у нас в регист-
ре М б окаж ется либо константа
BUTTO N_O N, если кнопка нажата,
либо B U TTO N _O FF, если кнопка
отп ущ ен а. В м икроконтроллере
КР1878В Е1 в этом случае не обо-
шлось бы без команд перехода, а
как они влияют на производитель-
ность процессора, было сказано
неоднократно. Ещ е обратите осо-
бое внимание - считывают данные
портов не из регистра PORTB, как
это им ело м есто при р аб о те с
К Р 1878В Е 1, а из регистра PINB!
Это - общ ее правило для всех мик-
роконтроллеров ATM EL: запись
данны х в порт всегда ведется в
регистры PORTx, чтение данны х-
всегда из регистров PINx.
4. Это - обработчик прерыва-
ний по переполнению тайм ера 0.
Тех самых тиков, с помощью кото-
рых мы будем реализовы вать в
программе виртуальный таймер.
5. Здесь мы видим одновремен-
но и плюсы, и минусы системы ко-
манд ATTiny - операции с констан-
тами не могут выполняться для ре-
гистров с номерами, меньшими 16
(и з-за этого требуется дополни-
тельная команда ldi), но зато в си-
стеме команд существуют коман-
ды, оперирующие двумя операнда-
ми и флагом переноса (ком анда
s b c ).
В
м и кр о ко н тр о л л е р е
КР1878В Е1 вместо этой команды
пришлось выполнять бы две (ко-
манды subi и sbc). Для двухбайт-
ных чисел это, может б.ыть, и не
слишком много, но на четырехбай-
тных числах экономия достигает 8
(!) команд. В целом ариф метика
микроконтроллеров ATM EL оказы-
в ается
б о л ее
б о га то й ,
чем
КР 1878В Е 1.
6.
А вот это - “чистый" плюс си-
стемы команд ATM EL - сравнение
с учетом признака переноса. Таких
ком анд нет даж е в процессорах
Intel! Они весьма существенно уп-
рощ аю т работу по сравнению мно-
гобайтных чисел.
Поскольку реализацию вирту-
ального таймера средствами мик-
роконтроллера мы уж е разбирали
в предыдущем цикле статей, под-
робно на ней останавливаться не
будем - они мало чем отличаются
друг от друга.
Далее приведен участок кода,
реализую щ ий автом ат на микро-
контроллерах ATTiny
(см. следую-
щую страницу
):
Радиолюбитель - 0 7 /2 0 0 7
У
29
предыдущая страница 29 Радиолюбитель 2007-07 читать онлайн следующая страница 31 Радиолюбитель 2007-07 читать онлайн Домой Выключить/включить текст