Авторизация


...

Кто на сайте?

Сейчас 93 гостей и ни одного зарегистрированного пользователя на сайте

Статистика

-Посетители : 26421
-Материалы : 210

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

  MRF24J40MA-I/RM

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

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

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

 

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

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

Команда производит десятичную коррекцию упакованного результата сложения двух 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

Подключаем LCD SSD1963 к STM32 по FSMC_16bit +Touch

23-05-2016 Александр Беглецов

Подключаем LCD SSD1963  к STM32 по FSMC_16bit +Touch

 В данной статье автор реализовал подключение TFT дисплея диагональю  7” дюймов  на контроллере SSD1963 к микроконтроллеру STM32F407VGT посредством FSMC шириной 16 бит. Скорость заливки экрана одним цветом у автора получилось приблизительно  60 кадров/сек (1000 кадров за 16,518 секунд) при тактовой...

Термостат с нагревателем и охладителем

14-03-2011 Alex

Термостат с нагревателем и охладителем

  Ниже представлена схема термостата с использованием датчика DS18B20 и микроконтроллера PIC16F628A, которое с успехом можно применить для поддержания заданных параметров температуры и др..          

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

20-09-2012 Николай Викторов

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

Первоначально у  многих  программистов пишущих свои программы на ассемблере  и не только у начинающих, возникают трудности с пониманием  команды "DAW", применяемой  в микроконтроллерах 18 серии.  От сюда  наверно и ее  редкое применение, хотя во многих приложениях  необходимость работы с BCD-числами...

Конфигурирование МК 18 серии.

03-08-2011 Super User

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


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

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