Авторизация


...

Кто на сайте?

Сейчас 140 гостей и 2 зарегистрированных пользователей на сайте

  • inmiernikwesto

Статистика

-Посетители : 23739
-Материалы : 209

Пользователь сайта продает...

  MRF24J40MA-I/RM

Пользователь сайта покупает...

Применение команды DAW в МК 18 серии.

Автор: Николай Викторов Просмотров: 3686

 

Так что же это за команда?

Из официального источника :

Команда производит десятичную коррекцию упакованного результата сложения двух BCD-чисел в упакованном формате.

Как мы помним BCD-формат это форма записи целых чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного кода. Под понятием упакованный подразумевается, что в одном байте записано две цифры, т.е. в каждом полубайте по цифре от 0 до 9.  После выполнения команды DAW производится коррекция  суммы для получения допустимого BCD числа WREG, а именно :

  • если самый правый полубайт WREG  больше 9 или флаг DC=1, то добавляется  число 0x06.
  • если самый левый  полубайт WREG  больше 9 или флаг C=1, то добавляется  число 0x60.

В итоге после выполнения DAW добавляется к WREG числа  0х00, 0х60, 0х06 или 0х66  для коррекции результата после сложения чисел упакованных  BCD формате. Если после выполнение команды  DAW результат получается  100 и более в BCD, то в этом случае  устанавливается флаг переноса (С).

Рассмотрим пример сложения числа "1"  и регистра Temp в BCD формате (первоначально  в "0"):



            List        P=P18F46K20
            #Include    P18F46K20_28.INC
            
;************************************
; Регистры общ. назначения
;************************************
            cblock             
            temp
            endc
;*******************************************************************
            org                  0 ;
            goto             START ;
;===================================================================
; Начало программы.
;===================================================================             
START       movlw               .1 ;
            addwf           temp,0 ;
            DAW                    
            movwf             temp ;  
            bra              START ;
end

После каждого сложения в регистре  "temp"  младший разряд будет увеличиваться на единицу   (0-9 ), как только младший разряд (полубайт) будет больше 9  произойдет перенос в старший  и в результате в старшем разряде будет число 1 в младшем 0 ,  (10 в BCD формате). Так до 99, потом будет число 00 и установится флаг переноса. 

Рассмотрим  работу команды на примере ПП 5-разрядного таймера  :

 

 
             List        P=P18F46K20
            #Include    P18F46K20_28.INC
            
;************************************
; Регистры общ. назначения
;************************************
            cblock
            Razr_G
            Razr_H            
            Razr_L
            endc
;*******************************************************************
            org                  0 ;
            goto             START ;
;===================================================================
; Начало программы.
;===================================================================             
START       movlw               .1 ; +1
            addwf         Razr_L,0 ; = счет двух разрядов
            DAW                       
            movwf         Razr_L   ; до 99 =
            
            movlw                0 ; = счет флага переноса
            addwfc        Razr_H,0 ; два старших разряда
            DAW
            movwf           Razr_H ; до  99ХХ =

            clrf            Razr_G ; главный разряд 1хххх
            bc                 DDD ;
            bra              START ;
            
DDD         incf            Razr_G ;
            nop
Stop        bra               Stop ; стоп  результат 10.000

end

 

В этой подпрограмме счет происходит до 10.000  в привычной нам форме исчисления.

Здесь показывается один из способов применение команды DAW, на самом деле она может применяться в различных приложениях. Хотя программисты не так часто ее используют.

 Смотреть видео примера...

 

               

 

 Скачать проект

Ссылка для скачивания доступна только авторизованным пользователям сайта !

 

Случайные статьи....

Prev Next

Применение Base64-кодирования в МК.

17-12-2012 Николай Викторов

Применение Base64-кодирования в МК.

Кодирование Base64  в микроконтроллерах хоть и не так часто, но все-таки применяется. По этому и было принято решение написать данную статью в надежде что эта информация кому нибудь поможет в реализации задуманного.  Самому  пришлось столкнуться  с  кодировкой  Base64  когда появилась...

Быстрое Преобразование Фурье

23-04-2011 Алексей

Быстрое Преобразование Фурье

АЛГОРИТМ БЫСТРОГО ВЫЧИСЛЕНИЯ ДИСКРЕТНОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ. Очень важно понимать, что БПФ, это не самостоятельное вычисление, а всего лишь быстрый алгоритм вычисления Дискретного преобразования Фурье. К примеру, для вычисления ДПФ в лоб, вектора длиной 8, необходимо 64 комплексных умножения. Для его же...

Пишем первую программу.

19-04-2011 Super User

Пишем первую программу.

Вот мы  и подошли к написанию программы. Сейчас не нужно вникать в тонкости и пытаться разобраться во всем. Просто принять как должное. Мы не раз будем в процессе написания программ возвращаться к той и иной части пройденного материала, в том...

Простое объяснение битовых логических операций

17-01-2012 Александр Милевский

Простое объяснение битовых логических операций

Несколько раз сталкивался с необходимостью объяснить стандартные логические битовые операции применительно к командам среднего семейства Microchip. Если человек хочет научиться основам программирования мк, но не сталкивался никогда с электроникой и цифровой техникой, это тяжелый случай.  Эта статья для такой категории...


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

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