/Подпрограмма перевода времени вправо -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 ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |