Ультразвуковое измерение дальности на MSP430


div2

div3 div4

divl cmp.w #0 6,htX100_msw jlo div2

; Сравнить делитель ; со старшим словом ; делимого

; Если меньше - переход ; на div2 sub.w #0 6,htX100_msw ; Вычесть б из старше-

rlc.w DIGITS jc div4 dec.w IRBT j z div3

; го слова

Сдвинуть результат влево через бит переноса Если в carry "1", то завер­шаем

Декремент счётчика цикла Если счётчик = 0:завершение

Делимое X 2

rla.w htX100_lsw rlc.w htXlOOjnsw jnc divl

Если в carry «0» переход

к divl sub.w #0 6,htX100 msw ; Вычесть 6 из старше-

; го слова

setc ; Установить carry в «1»

jmp div2 ; Повтор
clrc ; Очистить carry

ret ; Возврат из подпрограммы


.^■k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k-k г

Hex2bcd ; Подпрограмма перевода 16-битного шестнадцате

; ричного значения

; DIGITS, в двоично-десятичное (BCD) входные

; данные 1б-бит шестнадцатеричные в выходные

; там же в BCD

г * * * * * -,

mov #16,r9
clr r8
clr r7
rla DIGITS
dadd r7,r7
dadd r8,r8
dec r9
jnz L$l
mov r7,DIGITS
ret  

в R9 число бит Обнулить R8 Обнулить R7

L$l rla DIGITS ; Арифметический сдвиг DIGITS

влево

Десятичное сложение source + carry —> destination

Декремент счётчика бит Все 16 бит обработаны? Результат —> DIGITS Возврат из подпрограммы