МИКРОКОНТРОЛЛЕРЫ
о-
clr
г22
ldi
г16,64
; Обновить счетчик числа выборок.
mov
г2,г16
ldi
г16,4
; Вьшолнить сдвиг на 4 разряда (умножение на 16)
fp_31:
rcall
1э1г20
dec
г16
; Вычесть счетчик цикла.
bene
£р_31
; Цикл еще не закончен.
mov
г11,г20
; Копируем данные для дальнейшей работы.
mov
г12,г21
mov
г13,г22
ldi
г16,3
; Теперь - умножение на 25 = 16 + 8 + 1.
;
Делаем сдвиг скопированных данных на 3 разряда (умножаем на 8).
fp_32:
rcall
1з1г11
dec ■
г16
; Вычесть счетчик цикла.
brne
£р_32
; Цикл еще не закончен.
rcall
аУ(±г20г11
rcall
1э1г11
rcall
addr20rll
;
Реализация арифметики (деление).
clr
rll
; <5> Подготовить делитель в "приличном" формате
mov
г12,г14
mov
г13,г15
rcall
lslrll
clr
г14
; В этих регистрах будет храниться результат.
clr
П5
ldi
г16,10
; Будет 9 циклов деления, и еще 1 лишний,
; т.к. сдвиг результата выполняется ДО
; определения значения очередного бита.
fp_42:
lsl
г14
; Сдвинуть результат под новые данные
rol
П5
sub
r20,rll
; Вычесть делимое и делитель.
..
sbe
г21,г12
sbe
г22,г13
brpl
fp_41
; Делитель меньше делимого.
..
rcall
addr20rll •
; Делитель больше делимого - вернуть
; делимое в прежний вид.
dec
rl4
; Антикоманда для следующей команды.
fp_41:
inc
rl4
; Отметить факт удачного деления.
..
asr
ПЗ
,- Поделить делитель на 2.
ror
rl2
ror
rll
dec
ГІ6
; Вычесть счетчик циклов деления.
brne
fp_42
; Цикл еще не закончен.
;
Реализация арифметики - вычитание
ldi
r20,235
; Подгрузить константу, из которой будет
/
; делаться вычитание.
ldi
r21,0
sub
r20,rl4
; Вычесть частное из константы.
sbe
r21,rl5
mov
r23,r20
; <б> Сохранить результат для дальнейшей работы.
;
Операции no смене показаний на дисплее.
skip:
sbre
г17,5
; <7> Не заблокирован ли в данный момент
; вывод времени и температуры?
rjmp
fp_57
; Заблокирован.
..
30
У Радиолюбитель - 1 0 /20 0 7
предыдущая страница 30 Радиолюбитель 2007-10 читать онлайн следующая страница 32 Радиолюбитель 2007-10 читать онлайн Домой Выключить/включить текст