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

В начале программы опрашиваются DIP-переключатели. В случае нажатия одновременно нескольких DIP-переключателей регистр суммируется. По умолчанию выполняется подпрограмма включения при освещенности помещения и выключения через полчаса после уменьшения-освещенности до минимума. Уровень освещенности проверяется каждые 2,5 мс. Если помещение освещено, то программа переходит к этапу включения вентилятора.

Проверяется нулевое состояние сети и включается семистор, после чего опять проверяется освещенность помещения. В том случае, если ' освещенность упала до минимума, запускается таймер отсчета времени в соответствии с комбинацией DIP-переключателей. Программа переходит в подпрограмму отсчета количества минут.

Минуты устанавливаются как сумма регистров DIP-переключателей. В этот момент вентилятор работает независимо от освещенности комнаты, и отсчитывается время. По окончании отсчета семистор выключает вентилятор. Программа переходит в начало и выполняется заново.

Программа на ассемблере представлена в листинге 5.1, а шестна-дцатеричный код — в листинге 5.2. Соответствующие файлы ventil4 . asm и ventil4 .hex находятся на прилагаемом к книге компакт-диске в папкеПрограммы - Вентилятор. Листинг 5.1. Программа управления вентилятором

.include "C:\Program Files\Atmel\AVR Studio\Appnotes\tn26def. inc"

;Азтор: Кразченко А.З.

;Дата: 25.09.2007

;Версия: 1.1.2

;Имя файла: Ventil.asm

.■Микроконтроллер: AVR tiny26.

/Тактовая частота: 4мГц

104

Глава 5

Листинг 5.1. Продолжение

;Питание: стабилизированное 5 3

list

         

def

digl

=

rl8

Рабочий

регистр

def

dig2

 

r20

Рабочий

регистр

def

tmp

=

r21

Общий регистр

def

tp

=

r22

Регистр

времени

def

tmpl

=

rl6

Рабочий

регистр

def

tmp 2

=

П9

Рабочий

регистр

def

tmp3

=

r2 6

Рабочий

регистр

def

tmp4

=

r27

Рабочий

регистр

def

X

=

r25

Рабочий

регистр

def

Y

=

rl7

Рабочий

регистр

def

M

=

r23

Рабочий

регистр

def

tt2

=

r24

Рабочий

регистр

def

dip

=

r28

Рабочий

регистр

def

coc

=

r2 9

Рабочий

регистр

. cseg . org О

rjmp RESET

nop ;rjmp EXT_INT0 - прерывание не используется

nop ;rjmp EXT_PIN - прерывание не используется

nop ;rjmp TIME_CMPA - прерывание от таймера

nop ;rjmp TIME_CMPB - прерывание от таймера

nop ;гjmp TIME_OVFl - прерывание от таймера

nop ;rjmp TIME_OVF0 - прерывание от таймера

nop ;rjmp UCI_STRT - прерывание от USI

nop ;rjmp UCI_OVF - прерывание от USI

nop ;rjmp EE_RDY - прерывание от таймера

nop ;rjmp ANA_COMP- прерывание от компаратора

nop ;rjmp ADC - прерывание от АЦП

.org 20

;настройка порта В RESET: пор

clr tmp

out DDRB, tmp

out PORTB, tmp ;обнулить порт В

clr tmp

ldi tmp, S08 ;PB3 - выход

out DDRB, tmp

ldi tmp, 0Ы1111100 ;PA2-PA7 резисторы на зход

out PORTA, tmp ;подтяжка A

out DDRA, tmp


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



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz