НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 117118119120121122123 ... 159


ГЛАВА 12

16 разрядные числа



ОПРЕДЕЛЕНИЕ 16-РАЗРЯДНЫХ ЧИСЕЛ

Адреса 16-разрядных чисел могут быть заданы следующим образом-

, Начало ОЗУ микроконтроллера

Reg 8

, Определение 8-разрядного

, регистра

Reg 16

RAM + 1

, Определение первого

, 16-разрядного регистра

Reg 16

RAM + 3

, Определение второго

15-разрядного регистра

Есть и другой способ, основанный на иснользовании директивы CBLOCK макроассемблера MPASM:

CBLOCK 12 , Начало ОЗУ PIC-микроконтроллера

16С71

Определение 8-разрядного регистра

Определение первого 15-разрядного регистра Определение второго 15-разрядного регистра

Reg 8 Reg 15 2 Reg2 16 2 ENDC

ИНКРЕМЕНТИРОВАНИЕ И ДЕКРЕМЕНТИРОВАНИЕ

Инкрементирование 16-разрядной величины для PIC-микроконтроллеров младшего и среднего подсемейств выполняется следующим образом:

incf Reg, f , Инкрементирование младшего байта

btfsc STATUS, Z , Если он равен О,

incf Reg + 1, f , инкрементируется старший байт

В случае PIC l7Cxx и PIC ISCxx для упрощения операции инкрементирования 16-разрядной величины используется команда infsnz:

infsnz Reg f , Инкрементирование младшего байта

, и пропуск следующей команды,

, когда результат не равен О

incf Reg + 1, f , Инкрементирование старшего байта

Декрементирование 16-разрядной величины в Р1С-микрокон-троллере требует четырех команд (командных циклов):

movf Reg, f , Установка флага Z,

, если младший байт равен О



Utfsc STATUS, Z

decf Reg + 1, f

decf

Reg, f

Если младший байт равен О, декрементируется старший Декрементирование младшего байта

СЛОЖЕНИЕ/ВЫЧИТАНИЕ

Прибавление константы к 16-разрядному числу в РТС-микроконтроллерах младшего и среднего подсемейств имеет вид:

Reg = Reg+ 0x01234

и выполняется следующим образом:

, Сначала прибавляется старший байт

, Затем прибавляется младший байт

, Если перенос установлен, , то старший байт не , инкрементируется

movlw

HIGH 0x01234

addwf

Reg + 1, f

movlw

LOW 0x01234

addwf

Reg, f

btfsc

STATUS, С

incf

Reg + 1, f

В случае PIC 17Cxx и PIC 18Cxx для упрощения операции можно использовать команду addwfc:

movlw LOW 0x01234

addwf movlw addwfc

Reg, f

HIGH 0x01234 Reg + 1, f

Сначала модифицируется младший байт

Затем модифицируется старший байт

Соответственно подпрограмма вычитания

Reg = Reg-0x01234

для PIC-микроконтроллеров младшего и среднего подсемейств выглядит так:

movlw

HIGH 0x01234

, Сначала вычитается старший байт

subwf

Reg + 1, f

movlw

LOW 0x01234

, Затем вычитается младший байт

subwf

Reg, f

btfss

STATUS, С

, Если перенос установлен.

, то старший байт

, не декрементируется

decf

Reg + 1, f



0 ... 117118119120121122123 ... 159