:настройка программного стека
Управление вентилятором в помещении
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 ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |