I)
МИКРОКОНТРОЛЛЕРЫ
|}
. equ
. equ
.equ
. equ
CL0CK_REG=1
_MINUS=10
_GRADUS=11
BLANK=12
Регистр часов, с которого начинается время.
Код знака "минус".
Код "градуса"
Код пробела.
start:
rjmp
start
; <3> Переход на начало программы.
rjmp
ext int
reti
r
pinb int
reti
r
ocrla int
r jmp
ovll int
rjmp
ovlO int
reti
; eeprom int
reti
; compare int
reti
adc int
[ализация контроллера.
ldi
rl6,0x0B
<4> Подготовить регистр направления передачи порта В.
out
DDRB,r16
ldi
rl6,OxlD
; Подготовить значения на линиях порта В.
out
PORTB,rl6
ldi
rl6,0x0B
r
Настроить таймер 1 на делитель 64.
out
TCCR1,rl6
ldi
rl6,0x06
r
Настроить прерывания от таймеров.
out
TIMSK,rl6
ldi
rl6,0x21
t
Разрешить режим sleep и установить способ обработки
; прерывания от термодатчика.
out
MCUCR,rl6
ldi
rl6,0x40
; Настроить прерывания от датчика температуры.
out
GIMSK,rl6
ldi
rl6,0x72
r
Загрузить регистр 0SCCAL
out
0SCCAL,rl6
гализация регистров.
ldi
П 7 ,0x04
; <5> Флаги состояний.
ldi
rl8,0
r
Номер состояния автомата кнопки.
ldi
rl9,0
; Номер состояния основного автомата.
ldi
r24,SWITCH_JTIMB
; Счетчик числа обновлений картинки на экране.
ldi
r29, 0x11
/ Бегущая единица для вывода на индикатор
r
(на самом деле их две - так проще обрабатывать цикл).
ldi
rl6,MXDDLE_ COUNTER
mov
r2,rl6
; Число выборок для усреднения по температуре.
ldi
r23,35
rcall
startSeq
<6> Настройка микросхемы часов.
ldi
rl6,OxDO
r
Команда записи.
mov
rl2,rl6
rcall
outByte
ldi
rl6,0x07
; Адрес - с регистра 7.
mov
rl2,rl6
rcall
outByte
1
ldi
rl6,0x00
/ !!! Запуск счета и калибровка часов.
mov
rl2,rl6
rcall
outByte
rcall
stopSeq
Пояснения по программному коду см. в следующем номере.
<§^(
Продолжение в №10/20071
Радиолюбитель - 0 9 /2 0 0 7 У
37
предыдущая страница 37 Радиолюбитель 2007-09 читать онлайн следующая страница 39 Радиолюбитель 2007-09 читать онлайн Домой Выключить/включить текст