Например TDA7294

Форум РадиоКот • Просмотр темы - Двоично-десятичная система
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пн дек 16, 2019 00:55:55

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Двоично-десятичная система
СообщениеДобавлено: Сб ноя 09, 2019 15:06:09 
Родился

Зарегистрирован: Сб ноя 09, 2019 14:56:38
Сообщений: 8
Рейтинг сообщения: 0
Здравствуйте, Задание такое: "Заполнить РОН банка №0 двоично-десятичными числами"
Код:
     #include p16f873a.inc
     __CONFIG _HS_OSC & _WDT_OFF;
     ORG      H'005'            ;вектор сброса
CNT  EQU      H'A0'             ;определение регистра счётчика
                                ;с адресом А0(банк 1)

;запись возрастающих чисел в ОЗУ
     BCF      STATUS,RP1        ;выбираем банк регистров 1
     BSF      STATUS,RP0        ;
     MOVLW    H'20'             ;загрузка в рабочий регистр адреса           
                                ;первого POH в банке 0
     MOVWF    FSR               ;записываем начальный адрес
                                ;в регистр косв.адресации
     CLRF     CNT               ;обнуляем регистр счетчика
M10: MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     MOVWF    INDF              ;сохраняем очередной отсчет в косвенно адресуемый POH
     INCF     FSR,F             ;увеличение адреса POH
                                ;в регистре косвенной адресации
     MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     MOVWF    INDF              ;сохраняем очередной отсчет в косвенно адресуемый POH
     INCF     CNT,F             ;увеличение счетчика на 1
     INCF     CNT,F             ;увеличение счетчика на 1
     MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     MOVWF    INDF              ;сохраняем очередной отсчет в косвенно адресуемый POH
     ANDLW      h'0F'            ; побитное И с 0A
    XORLW      h'0A'            ; сравнение с 0A
    BTFSS      STATUS,Z         ; если не совпадают, скачок через команду
     GOTO     M2            ; вызов подпрограммы М2   
    MOVF     CNT,W            ; загружаем счетчик в W
    ADDLW     H'6'
     MOVWF    CNT
M2:
     MOVF     CNT,W
     MOVWF    INDF
     INCF     FSR,F             ;увеличение адреса POH на 1
     MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     MOVWF    INDF              ;сохраняем очередной отсчет в косвенно адресуемый POH
     DECF     CNT,F             ;уменьшение счетчика на 1
     MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     MOVWF    INDF              ;сохраняем очередной отсчет в косвенно адресуемый POH
     ANDLW      h'0F'            ; побитное И с 0A
    XORLW      h'0F'            ; сравнение с 0A
    BTFSS      STATUS,Z         ; если не совпадают, скачок через команду
     GOTO     M3            ; вызов подпрограммы М2   
    MOVF     CNT,W            ; загружаем счетчик в W
    ADDLW     H'FA'
M3:     
     MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     MOVF     FSR,W
     XORLW    H'80'             ;сравниваем его с последним значение +1
     BTFSS    STATUS,Z          ;если не совпадают, то скачек через одну команду
     GOTO     M10               ;если не совпадают, то возврат
                                ;к записи следующей ячейки
END

Как видно на фотографии, он переводит в двоично-десятичный код, но у меня не получается сделать вычитание константы(в File Registre выдаёт 0F,1F,3F, эти числа нужно перевести).Помогите пожалуйста


Вложения:
112.png [19.74 KiB]
Скачиваний: 51
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Двоично-десятичная система
СообщениеДобавлено: Пн ноя 11, 2019 14:42:51 
Друг Кота
Аватар пользователя

Карма: 83
Рейтинг сообщений: 820
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 9838
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0
А если просто взять два регистра считающих от 0 до 9.
Переполнение первого дает инкремент второго, затем смещаем
старшую тетраду, собираем по "ИЛИ" и запихиваем в нужное место.
Второй способ - табличка с retlw....
8)


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Двоично-десятичная система
СообщениеДобавлено: Ср ноя 13, 2019 19:00:30 
Потрогал лапой паяльник

Карма: 8
Рейтинг сообщений: 17
Зарегистрирован: Чт авг 10, 2017 20:57:51
Сообщений: 311
Рейтинг сообщения: 0
А можно и так
Код:
    LIST p=16F873A
   #include  P16F873A.inc
   errorlevel -302

   __CONFIG  _CP_OFF &  _FOSC_HS
   CBLOCK 0x20      ;96 byte      00
      arr         ;здесь пишем
   endc

    CBLOCK 0xA0      ;80 byte      01
      CNT      ;
   endc

   CBLOCK 0x120      ;80+16 byte      10  0x100-0x17F
   endc
 

   CBLOCK 0x1A0      ; 80+16 byte      11  0x100-0x17F
   endc

    org 0x0000
      clrf STATUS
       goto    start


   org 0x0004
interrupt
;
      retfie


start
;запись возрастающих чисел в ОЗУ
           BCF      STATUS,RP1        ;
          BSF      STATUS,RP0        ; для CNT
           MOVLW    0x20             ;загрузка в рабочий регистр адреса   
         
                                ;первого POH в банке 0
           MOVWF    FSR               ;записываем начальный адрес
                                ;в регистр косв.адресации
      CLRF     CNT               ;обнуляем регистр счетчика
next      BCF    STATUS,IRP
      BCF      FSR,7   ;bank 0 for FSR;INDF

       MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
      call   bin_to_dec
      MOVWF    INDF              ;сохраняем очередной отсчет в косвенно адресуемый POH
           INCF     FSR,F             ;увеличение адреса POH
      incf      CNT,f
      btfsc   FSR,7   ;value 0x8x после 0b01111111 следует 0b100000000 a там не пишем
      goto   done
      goto   next
 
 
;by: Scott Dattalo
bin_to_dec:   
        SWAPF   CNT, W      ; swap the nibbles
        ADDWF   CNT, W      ; so we can add the upper to the lower
        ANDLW   B'00001111' ; lose the upper nibble (W is in BCD from now on)
        BTFSC STATUS, DC              ; if we carried a one (upper + lower > 16)
         ADDLW  0x16        ; add 16 (the place value) (1s + 16 * 10s)
        BTFSC STATUS, DC               ; did that cause a carry from the 1's place?
         ADDLW  0x06        ; if so, add the missing 6 (carry is only worth 10)
        ADDLW   0x06        ; fix max digit value by adding 6
        BTFSS STATUS, DC               ; if was greater than 9, DC will be set
         ADDLW  -0x06       ; if if it wasn't, get rid of that extra 6
       
        BTFSC   CNT,4       ; 16's place
         ADDLW  0x16 - 1 + 0x6  ; add 16 - 1 and check for digit carry
   BTFSS STATUS, DC
         ADDLW  -0x06       ; if nothing carried, get rid of that 6
       
        BTFSC   CNT, 5      ; 32nd's place
        ADDLW  0x30        ; add 32 - 2
       
        BTFSC   CNT, 6      ; 64th's place
         ADDLW  0x60        ; add 64 - 4
       
;        BTFSC   FSR, 7      ; 128th's place
;         ADDLW  0x20        ; add 128 - 8 % 100
       
        RETURN              ; all done!

done
   nop
    end


Изображение

_________________
Телекот - Я "недоуч"
Starichok51
- Я "в танке"
- Я "Моська лающая на слона"
Про "язык в жопу" - из его уст - и не говорю. Вопрос вкуса.

И если ето не нарушение п 2.3 наших правил!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y