Предыдущая Следующая

Программа на ассемблере представлена в листинге 4.1, а шестна-дцатеричный код — в листинге 4.2. Соответствующие файлы сире. asm и сире. hex находятся на прилагаемом к книге компакт-диске в папке Программы\04 - Шкаф.

Листинг 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, $0F

;обнулить порт В

;РВО,Р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, $1E

;подтягизаем на зыходах порт

out

DDR3, tmp

     

nop

 

.•начало программы

   

in

tmp, PORTB

;чтение порта

   

clr

tmpl

;очистка регистра

   

;сколько дверей?

     

sbis

PIN3, 4

.■пропустить, если

не

1

rjmp

qqO

.•переход на метку

   

nop

       

ldi

tmp3, $03

;одна дверь, магнит2

активен

rjmp

qql

.•переход на метку

   

qqO: nop

       

clr

tmp3

;магнит2 не актизе

IH

 

qql: nop

       

;женская логика

     

sbis

PINB, 3

.•пропустить, если

не

1

rimp

qq2

;переход на метку

   

nop

       

ldi

tmp5, $05

;"женская" логика

актизна

rjmp

qq3

;переход на метку

   

qq2: nop

       

clr

tmpS

;"женская" логика

не

активна

qq3: nop

       

; проверяем открыта дверь?

     

in

tmp, PORTB

;чтение порта

   

clr

tmpl

;очистка регистра

   

/первая дверь

открыта?

     

sbi с

PIN3, 2

.•пропустить, если

не

1

rjmp

qq6

;переход на метку

   

nop

       

;прозерка условия количества дзерей

   

clz

       

cpi

tmp3, $0 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,$04

     

Автоматическое освещение шкафа


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_36.html on line 1420

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_36.html on line 1420

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book8_36.html on line 1420