/Подпрограмма перевода времени вправо -IFF time: nop
ldi tmp, SOI
sub tmp3, tmp
cln
ldi tmp, $ FF
sub tmp2, tmp cln ret
.•Подпрограмма перевода времени влево -3FF timo: nop
ldi tmp,
sub tmp3, tmp
cln
ldi tmp, $FF
sub tmp2, tmp cln ret
Управление шаговым двигателем
73
Листинг 3.1. Продолжение
/Подпрограмма арифметических действий
fku:
plus :
|
: nop |
||
|
mov |
Hbt, tmp3 |
;старший разряд |
|
mov |
Lot, tmp2 |
/младший разряд |
|
грка на |
плюс |
|
|
cln |
||
|
cpi |
Hbt, |
|
|
breq |
fku |
;равно |
|
brge |
plus |
/больше, равно |
|
nop |
||
|
els |
/сброс знака |
|
|
cpi |
Lbt, |
|
|
brge |
plus |
/больше, равно |
|
nop |
||
|
rjmp |
minus |
|
|
nop |
||
|
ldi |
D, |
;положительный результат |
|
rjmp |
gop |
|
|
nop |
||
|
mov |
Hbt, tmp3 |
/старший разряд |
|
mov |
Lbt, tmp2 |
/младший разряд |
|
■рка на |
минус |
|
|
cln |
||
|
els |
||
|
cpi |
Hbt, |
|
|
brge |
nol |
/больше, равно |
|
nop |
||
|
cln |
||
|
els |
/сброс знака |
|
|
cpi |
Lbt, $F6 |
|
|
brge |
nol |
/больше, равно |
|
nop |
||
|
лор |
||
|
ldi |
D, |
/отрицательный результат |
|
rjmp |
gop |
|
|
nop |
||
|
clr |
D |
nol:
пор
gop: пор ret
/Подпрограмма "Влево".
vlevo: пор
clr tmp
ldi tmp, content>A
clr par
Полный шаг
/десять шагов
74
Глава 3
Листинг 3.1. Продолжение
|
els |
|
|
пор |
|
|
cpi |
par, |
|
breq |
prn2 |
|
ldi |
ZH, high (2*progl) |
|
ldi |
ZL, Low(2*progl) |
|
Add |
ZL, par |
|
LPM |
|
|
mov |
prgl, adr |
|
out |
PORTB, prgl |
|
rcall |
zader |
|
inc |
par |
|
rjmp |
sfg |
|
nop |
|
|
clr |
par |
|
cln |
|
|
dec |
tmp |
|
brmi |
hkj |
|
rjmp |
sfg |
|
nop |
|
|
ret |
.•Подпрограмма "Вправо". Полный шаг
|
nop |
|
|
clr |
tmp |
|
ldi |
tmp, content>A |
|
clr |
par |
|
cln |
|
|
els |
|
|
nop |
|
|
cpi |
par, |
|
breq |
prv |
|
ldi |
ZH, high(2*prog2) |
|
ldi |
ZL, Low(2*prog2) |
|
Add |
ZL, par |
|
LPM |
|
|
mov |
prg2, adr |
|
out |
PORTB, prg2 |
|
rcall |
zader |
|
inc |
par |
|
rjmp |
sld |
|
nop |
|
|
clr |
par |
|
cln |
|
|
dec |
tmp |
|
brmi |
nert |
|
rjmp |
sld |
Управление шаговым двигателем
75
Листинг 3.1. Продолжение
nert: пор
ret
/Подпрограмма "Стоп" stop: пор
clr tmp
out DDRB, tmp
out PORTB, tmp /обнулить порт В
nop
ret
;Подпрограмма задержки включения zader:
goo: dm:
goq: dv:
|
nop |
||
|
wdr |
||
|
clr |
M |
|
|
clr |
Y |
|
|
ldi |
Y, |
$AF |
|
cpi |
tmp3, content> |
|
|
brne |
goo |
|
|
ldi |
M, |
|
|
add |
M, |
tmp3 |
|
nop |
||
|
nop |
||
|
mov |
M, |
tmp3 |
|
nop |
||
|
cpi |
tmp2, content> |
|
|
brne |
goq |
|
|
ldi |
X, |
|
|
add |
X, |
tmp2 |
|
nop |
||
|
nop |
||
|
mov |
x, |
tmp2 |
|
nop |
||
|
wdr |
||
|
nop |
||
|
dec |
Y |
|
|
brpi |
dx |
|
|
cln |
||
|
dec |
X |
|
|
brpl |
dv |
|
|
cln |
||
|
dec |
M |
|
|
brne |
dm |
|
|
ret |
||
/Код дзкжения по часовой стрелке .org 0 progl:
| НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |