Программа на ассемблере представлена в листинге 4.1, а шестна-дцатеричный код — в листинге 4.2. Соответствующие файлы сире. asm и сире. hex находятся на прилагаемом к книге компакт-диске в папке Программы - Шкаф.
Листинг 4.1. Программа управления освещением В шкафу-куле
.include "C:\Program Files\Atmel\AVR Studio\Appnotes\tnl5def. inc"
;Автор: Кравченко А.8.
;Дата: 5.03.2008
;Версия: 1.0.2
;Имя файла: Cupe.asm
/Микроконтроллер: ATtinyl5
/Тактовая частота: 1.бмГц
;Питание: стабилизированное 5 В
. list
***** |
Регистровые |
переменные |
||
def |
M |
= rl7 |
; Рабочий |
регистр |
def |
Y |
= rl8 |
; Рабочий |
регистр |
def |
X |
= rl9 |
; Рабочий |
регистр |
def |
tmp |
= r20 |
; Рабочий |
регистр |
def |
tmpl |
= r21 |
; Рабочий |
регистр |
Автоматическое освещение шкафа
89
Листинг 4.1. Продолжение
def |
tmp2 |
= r22 |
Рабочий |
регистр |
def |
tmp3 |
= r23 |
Рабочий |
регистр |
def |
tmp4 |
= r24 |
Рабочий |
регистр |
def |
tmp5 |
= r25 |
Рабочий |
регистр |
def |
tmp 6 |
= r26 |
Рабочий |
регистр |
def |
i |
= r27 |
Рабочий |
регистр |
. cseg ■org О
rjmp RESET
nop
nop
nop
rjmp TIMSR1
nop
nop
nop
nop
.org 20
;настройка порта В RESET: nop
clr
out
out
clr
ldi
;rjmp EXT_INT0 - внешнее прерывание
;rjmp EXT_PIN - прерывание на зызодах
;rjmp TIMER1_C0MPA - совпадение А, таймер 1
; Переполнение таймера 1
;rjmp TIME_OVF0 - прерывание от таймера
;rimp EE_RDY - прерывание от таймера
;rjmp ANA_COMP - прерывание от компаратора
;rjmp ADC - преобразование АЦП завершено
tmp
DDR3, tmp P0RT3, tmp tmp
tmp, content>F
;обнулить порт В
;РВО,Р31,Р32,РВЗ,Р34 - выходы
out DDRB, tmp ;общее разрешение прерывания ; sei .■Начало программы ;сброс зсех значений
clr i ;Начало программы nStart:
nop |
|
clr |
M |
clr |
Y |
clr |
X |
clr |
tmp |
clr |
tmpl |
clr |
tmp2 |
clr |
tmp3 |
clr |
trnp4 |
clr |
tirp5 |
clr |
tmp 6 |
магкит2 магнит!
"женская" логика
90 Глава 4
Листинг 4 1. Продолжение
ldi |
tmp, E |
;подтягизаем на зыходах порт |
||
out |
DDR3, tmp |
|||
nop |
.•начало программы |
|||
in |
tmp, PORTB |
;чтение порта |
||
clr |
tmpl |
;очистка регистра |
||
;сколько дверей? |
||||
sbis |
PIN3, 4 |
.■пропустить, если |
не |
1 |
rjmp |
qqO |
.•переход на метку |
||
nop |
||||
ldi |
tmp3, |
;одна дверь, магнит2 |
активен |
|
rjmp |
qql |
.•переход на метку |
||
qqO: nop |
||||
clr |
tmp3 |
;магнит2 не актизе |
IH |
|
qql: nop |
||||
;женская логика |
||||
sbis |
PINB, 3 |
.•пропустить, если |
не |
1 |
rimp |
qq2 |
;переход на метку |
||
nop |
||||
ldi |
tmp5, |
;"женская" логика |
актизна |
|
rjmp |
qq3 |
;переход на метку |
||
qq2: nop |
||||
clr |
tmpS |
;"женская" логика |
не |
активна |
qq3: nop |
||||
; проверяем открыта дверь? |
||||
in |
tmp, PORTB |
;чтение порта |
||
clr |
tmpl |
;очистка регистра |
||
/первая дверь |
открыта? |
|||
sbi с |
PIN3, 2 |
.•пропустить, если |
не |
1 |
rjmp |
qq6 |
;переход на метку |
||
nop |
||||
;прозерка условия количества дзерей |
||||
clz |
||||
cpi |
tmp3, content> 3 |
;устакозлен магнит |
2? |
|
breq |
qq6 |
|||
;втора я дзерь |
открыта ? |
|||
sbic |
PINB, 1 |
/пропустить, если |
не |
1 |
rjmp |
qq6 |
;переход на метку |
||
nop |
||||
r]mp |
pof f |
.■переход на метку |
"выключить' |
|
nop |
||||
qq6: nop |
||||
sbi |
porto, С |
;зкл:очить сзет |
||
ldi |
tmp,S04 |
|||
out |
TIER,tmp |
;устанозка флага г. |
ри |
переполу |
ldi |
tmp, |
Автоматическое освещение шкафа
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |