fl
АВТОМАТИКА
[fl
OscCV:
.dw 0x21
/internal RC oscillator calibration
/value. Copy here value from
/high byte of address ,0x0000
/in the signature address space.
По сбросу процессор переходит на вектор сброса, где стоит команда перехода на метку Init. По этой метке
расположен текст начальной инициализации оборудования микроконтроллера. Первым делом калибровочная
константа RC-генератора, которую мы бережно сохранили в памяти программ, заносится в специальный ре-
гистр OSCCAL, в результате чего частота генератора чуть изменяется и принимает желаемое значение:
/Initialization:
Init:
ldi
ZL,bytel(OscCV*2)
/read oscillator calibration value
ldi
ZH,byte2(OscCV*2)
1pm
out
OSCCAL,rO
/calibrate oscillator
Затем отключаем аналоговый компаратор, чтобы “топливо не жрал”:
ldi
temp,(1<<ACD)
/analog comparator disable
out
ACSR,temp
Затем инициализируем регистры портов ввода-вывода константами, которые подготовили ранее:
N
ldi
temp,PUPB
out
PORTB,temp
/init PORTB and on/off pullup
ldi
temp,DIRB
out
DDRB,temp
/set PORTB direction
Затем указываем процессору, что по команде sleep нужно переходить в режим power down, настраиваем и
разрешаем внешнее прерывание:
ldi
temp,(1<<SE) 1 (1<<SM)
/sleep - power down, level INTO
out
MCUCR,temp
ldi
temp,(1<<INT0)
/INTO enable
out
GIMSK,temp
Все, инициализация закончена, дальше идет основная программа в виде бесконечного цикла. Первым де-
лом разрешаем прерывания, чтобы получить возможность пробуждения, и засыпаем:
/Main program:
Main:
sei
/global interupt enable
sleep
/go to power down
С этого момента процессор находится в режиме power down, кода выключен даже тактовый генератор. Но
если нажать кнопку, возникнет внешнее прерывание, которое “разбудит" процессор, и программа начнет вы-
полняться дальше.
Первым делом запрещаем прерывания, чтобы не мешали, и, собственно, Делаем ту работу, для которой все
это затевалось - формируем ИК-посылку:
cli
/global interupt disable
#ifdef Nikon
. -
Pulse(2000)
'
/generate pattern
Pause(27830)
Pulse(390)
Pause(1580)
Радиолюбитель - 0 4 /2 0 0 7 U
предыдущая страница 23 Радиолюбитель 2007-04 читать онлайн следующая страница 25 Радиолюбитель 2007-04 читать онлайн Домой Выключить/включить текст