Авторизация


...

Кто на сайте?

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

  • thamohmedsaman

Статистика

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

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

   AV-S2G4B

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

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

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

 

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

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

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

Цикличный таймер задержки включения питания

24-07-2015 Super User

Цикличный таймер задержки включения питания

  В данной статье идет речь о циклическом таймере задержки питания для эррозионно – поршневых станков советского производства. И хотя таймер разрабатывался автором под конкретные задачи, тем не менее с успехом применим и в других проектах. Устройство выдает стабильной сигнал...

Среда программирования.

22-04-2012 Super User

Для написания наших программ  нам понадобится установить на наш компьютер  программное обеспечение. Для PIC микроконтроллеров существует интегрированная  среда разработки MPLAB (IDE) фирмы Microchip Technology Incorporated. MPLAB позволяет писать программы в встроенном текстовом редакторе, ассемблировать и компилировать исходный текст, отлаживать и оптимизировать...

sPlan – удобная программа для вычерчивания принципиальных схем (ч. 3)

22-10-2012 Игорь Безверхний

sPlan – удобная программа для вычерчивания принципиальных схем (ч. 3)

  Практически каждому радиолюбителю и радиоспециалисту приходится хотя бы иногда чертить принципиальные схемы или их фрагменты. Что бы вычертить их аккуратно, можно использовать графические редакторы. Ну, а польза от применения этих программ студентами, учащимися ПТУ и различных курсов очевидна. В...

Flash память программ МК PIC18XXXX

13-05-2011 Super User

Все микроконтроллеры семейства  PIC18XXXX  имеют встроенную  энергонезависимую Flash память программ, доступную для чтения, записи и стирания. В отличии от  EEPROM памяти данных, память программ побайтно можно только считать. Запись можно производить только блочно, по 8 байт т.е. записывать нужно не...


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

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