Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Как выполняется деление на 2 в МК PIC16F87x



Отрывок из программы:

RRFR1,w;деление на 2 без очистки бита С регистра STATUS. После выполнения;сдвига вправо сдвигаемый бит 0 из регистра R1 переместился в бит С регистра STATUS, а;единица из бита С регистра STATUS добавилась слева к значению регистра R1 и;сохранилась в аккумуляторе W.

; сохранить окно

BCF STATUS,C

RRF R1,w

MOVWF REZ

; сохранить окно

END; конец программы.

Т.е. деление на число 2 можно производить с помощью сдвига содержимого регистра вправо и влево соответственно, с помощью команд RRF, а также RLF. Сдвиг происходит через флаг C регистра STATUS, при сдвиге вправо, младший бит передается в C, а значение бита C передается в старший бит сдвигаемого регистра, при сдвиге влево все наоборот. Поэтому при применении команд сдвига для деления и умножения необходимо предварительно очистить бит C регистра STATUS.

Для сдвига вправо числа со знаком используется так называемый арифметический сдвиг, при которомзначение знакового разряда не меняется, поэтому результат сдвига отрицательного числа будет числотакже отрицательное.

Корректно делятся на 2 числа от -128 до +127 (включая -1).

Чтобы корректно разделить отрицательное число на 2 с помощью сдвига надо сделать
так:

RLF делимое,W; взяли в "С" знак делимого числа

INCFSZ делимое,W; а не "-1" ли случайно делится на 2?

RRF делимое,W; поделим с учетом знака, если конечно не "-1"

MOVWF делимое; сохраним результат округленный до меньшего значения

Деление на 2 нечетных чисел выполняется с погрешностью.

54.Какое значение 4-го бита будет после выполнения этой команды: BCF





Дата публикования: 2015-02-03; Прочитано: 244 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.065 с)...