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

:настройка программного стека

Управление вентилятором в помещении

105

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

ldi tmp, low (RAMEND) ;указатель стека out SP, tmp

;Начало программы ;сброс всех значений

пор

     

clr

digl

Рабочий

регистр

clr

dig2

Рабочий

регистр

clr

tmp

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

clr

tp

Регистр

времени

clr

tmpl

Рабочий

регистр

clr

tmp2

Рабочий

регистр

clr

tmp3

Рабочий

регистр

clr

tmp4

Рабочий

регистр

clr

X

Рабочий

регистр

clr

Y

Рабочий

регистр

clr

M

Рабочий

регистр

nStart: пор

 

rcall

DIP

 

;проверка DIP

 

nop

     

;темно

-свет

     
 

ldi tmpl, ObOOOOlOll

/внутренний источник, вход

       

;ADC1, дифференциальный

 

rcall

adcn

 

/проверка АЦП1

 

nop

     
 

rcall

zlms

 

/задержка 2,5 мс

 

nop

     

/проверка уровня фотодатчика, темно-свет

 

ldi

digl,

 
 

ldi

dig2,

content>

 

;неполная операция

вычитания двухбайтных чисел

 

els

   

/сброс флага знака

 

sub

tmp2,

dig2

/вычитаем табличное значение и /нижний уровень

 

brpl

wwr

   
 

dec

digl

 

;заем от старшего байта

wwr:

nop els

   

/сброс флага знака

 

sub

tmp3,

digl

/вычитаем табличное значение и /верхний уровень

 

brmi

uuu

 

/если минус, то выключить семистор

 

rjmp

ert

   

uuu:

nop clr cln

digl

   

Глава 5

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

rjmp nStart nop

ert:

nop

     
 

rcall

UOon

 

;проверка нуля сети

fStart

 

nop

   

;свет-

темно

     
 

ldi

tmpl,

ObOOOOlOll /внутренний источник,

       

/вход ADC1, дифференциальны!

 

rcall

adcn

   
 

nop

     
 

rcall

zlms

 

/задержка 1 мс

 

nop

     

;проверка уровня фотодатчика, темно-езет

 

ldi

digl,

 
 

ldi

dig2,

 

.•неполная операция

вычитания двухбайтных чисел

 

els

   

;сброс флага знака

 

sub

dig2,

tmp2

/вычитаем табличное значение и

       

/нижний уровень

 

brpl

wwe

   
 

dec

digl

 

;заем от старшего байта

wwe: пор

     
 

els

   

/сброс флага знака

 

sub

dig2,

tmp3

;вычитаем табличное значение и

       

/верхний уровень

 

brmi

uuul

 

/если минус, то выключить семистор

 

rjmp

ertl

   

uuul:

nop

     
 

rjmp

fStart

 
 

nop

     

ertl:

nop

     
 

rcall

time

   
 

nop

     
 

rcall

UOof

 

/проверка нуля сети

 

nop

     
 

rjmp

nStart

 

;Подпрограмма

опроса DIP

 

DIP:

nop

     
 

in

tmp,

PORTA

 
 

clr

tp

 

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

 

sbis

PINA,

2

/пропустить, если не нажат DIP1

 

rjmp

qqO

   

si:

nop

     
 

sbis

PINA,

3

/пропустить, если не нажат DIP2

 

rjmp

qql

   

Управление вентилятором в помещении


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



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