fl
АВТОМАТИКА
i
loop:
ldi
temp,LE D_ON_MAS К
1
out
PORTB,temp
1
Delay(MCYC1 - 2)
MCYC1 - 2
ldi
temp,LED_OFF_MASK
1
out
PORTB,temp
1
Delay(MCYCO - 6)
MCYCO - 6
subi
tempL,1
1
sbci
tempH,0
1
. endm
brcc
loop
2(1)
Теперь аналогичным образом напишем макрос формирования заданной паузы в микросекундах:
»•Macro: generate pause @0 [uS]:
.macro Pause
ldi
tempL,bytel((@0 * FCLK / 20
/
100000
-
5)
/ 10)
ldi
tempH,byte2((@0 * FCLK / 20 / 100000
-
5)
/ 10)
loop:
Delay(16)
; 16
subi
tempL,1
;
1
sbci
t empH, 0
;
1
brcc
loop
; 2 ( 1 )
. endm
Все необходимые макросы описаны. В них использовалось несколько регистровых переменных, их тоже
нужно описать:
»•Global Register Variables:
»•temporary register temp
;temporary register tempL
»•temporary register tempH
»•temporary register Cnt
Ну вот и все, начинаем саму программу. Общий алгоритм таков: в исходном состоянии процессор должен
“спать”, т.е. находится в состоянии power down. Это необходимо для минимизации энергопотребления в жду-
щем режиме. Согласно документаций, в режиме power down ATtinyl 2 потребляет ток меньше 1 мкА, что при
емкости батарейки CR2025, равной 165 мА*ч, соответствует работе в ждущем режиме около 20 лет! При нажа-
тии кнопки будет происходить внешнее прерывание по низкому уровню, оно “разбудит” процессор, который
сформирует нужную ИК-посылку. После этого процессор должен снова “уснуть”.
Первым делом расставляем вектора прерываний. У нас будет использоваться вектор сброса, по которому
стартует процессор, и вектор внеш него прерывания, которое будет вызываться нажатием кнопки:
def
temp
= rl6
def
tempL
= rl7
def
tempH
= rl8
def
Cnt
= r 19
. CSEG
;Code segment
»•Interrupt vectors:
.org
0
rjmp
Init
;reset vector
.org
INTOaddr
reti
,-push button interrupt service
Прерывание от кнопки необходимо лишь для того, чтобы “разбудить” процессор. Поэтому обработчик этого
прерывания ничего не делает и состоит из одной команды возврата из прерывания.
Далее в памяти программ определяется калибровочная константа для внутреннего ЯС-генератора. Опреде-
лить ее можно в любом месте, мы пока опустим описание процесса калибровки и вернемся к нему чуть позже.
22
и Радиолюбитель - 0 4 /2 0 0 7
предыдущая страница 22 Радиолюбитель 2007-04 читать онлайн следующая страница 24 Радиолюбитель 2007-04 читать онлайн Домой Выключить/включить текст