Четверг, 02 февраля 2012 22:54

ADDWFC

Written by
Rate this item
(0 votes)
ADDWFC Сложение W и f с использованием флага переноса
Синтаксис: [label] ADDWFC f,d,a
Операнды: 0 <= f <= 255
d Е [0,1]
a Е [0,1]
Операция: (W) + (f) + (C) -> (dest)
Изменяет флаги: C, DC, Z, OV, N
Код: 0010 00da ffff ffff
Описание: Сложение содержимого регистров W , f и флага переноса. Если d=0 - то результат сохраняется в регистре W, если d=1, то в регистре f (по умолчанию). Значение бита доступа к памяти a обрабатывается стандартным образом (по умолчанию a=1)
Слов: 1
Циклов: 1

 

 

Пример:

            list          p=18F252 ; Используется микроконтроллер PIC18F252.
            #include   p18F252.inc ; Подключение INC-файла PIC18F252.
;*************************************************************************
; Конфигурирование.
;*************************************************************************
            CONFIG      OSC=XT     ; кварц.резонатор
            CONFIG      BOR=OFF    ; Сброс по снижению питания выключен
            CONFIG      WDT=OFF    ; WDT выключен.
            CONFIG      LVP=OFF    ; Режим низковол. программирования выкл.
;************************************
; Регистры общ. назначения
;************************************
            cblock             20h ;
            Temp                   ;      
            endc                   ;
;*******************************************************************
            org                  0 ;
            goto             START ;
;===================================================================
; Начало программы.
;===================================================================
START       movlw             .255 ; записываем десятичное число 255
            movwf             Temp ; в регистр Temp
            movlw               .7 ; записываем дес.число 7 в  W (аккумулятор)
            ADDWFC            Temp ; и складываем его с Temp, результат в Temp
            movlw               .0 ; записываем дес.число 0 в  W
            ADDWFC            Temp ; и складываем его с Temp, результат в Temp
         ; ADDWFC             Temp,0 ; или складываем его с Temp, результат в w
            nop                    ; нужен для точки остановки программы 
;===========================================
            end

Разъяснение:

Результат выполнения данной программы виден после того, как поднят флаг переноса "С". Первое выполнение команды ADDWFC в результате сложения чисел 255 и 7  (максимум в байте 255 ) произошло переполнение, (т.е. произошло поднятие флага переполнения) , в результате, при выполнении второй  команды ADDWFC флаг уже был поднят  и хотя мы и складывали с 0 (перед выполнением команды  записали в аккумулятор 0),  регистр увеличился на единицу  за счет флага переноса "С".

 Если d=0 результат сохраняется в аккумуляторе W

 

 

 

Read 1898 times Last modified on Суббота, 13 сентября 2014 05:35
More in this category: « ANDWF ADDWF »

Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru