Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться в коде. преобразование двоичный в двоично-десяти 
:(
    Опции темы
quarz
Дата 24.1.2005, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



Вот код, преобразующий двоичное 2х байтное число в двоично-десятичное. Входные 2 байта - в переменных bin1 и bin2, bin1 - старший байт, bin2 - младший. Выходные данные в байтах bcd1, bcd2, bcd3. После преобразования единицы находятся в младшем полубайте bcd3, десятки - в старшем полубайте bcd3, и т.д.

Вот код:

Код

bin2bcd        
 movlw .16
               movwf ctr
               clrf bcd1
               clrf bcd2
               clrf bcd3
               goto start

adjdec          movlw 0x33
               addwf bcd1,f
               addwf bcd2,f
               addwf bcd3,f

               movlw 0x03
               btfss bcd1,3
               subwf bcd1,f
               btfss bcd2,3
               subwf bcd2,f
               btfss bcd3,3
               subwf bcd3,f

               movlw 0x30
               btfss bcd1,7
               subwf bcd1,f
               btfss bcd2,7
               subwf bcd2,f
               btfss bcd3,7
               subwf bcd3,f

start           rlf bin2,f
               rlf bin1,f
               rlf bcd3,f
               rlf bcd2,f
               rlf bcd1,f
               decfsz ctr,f
               goto adjdec
               
 
 movlw B'00001111'
 andwf bcd3, 0
 movwf ind_1    
 swapf bcd3, 1
 movlw B'00001111'
 andwf bcd3, 0
 movwf ind_2
 movlw B'00001111'
 andwf bcd2, 0
 movwf ind_3
 swapf bcd2, 1
 movlw B'00001111'
 andwf bcd2, 0
 movwf ind_4
 movlw B'00001111'
 andwf bcd1, 0
 movwf ind_5
 
 return

PM MAIL   Вверх
PILOT
Дата 24.1.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



а не проще вычитать 10000, потом 1000, потом 100, потом 10?

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
quarz
Дата 25.1.2005, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



Может и проще, но эта прога тоже работает как то..КАК?
PM MAIL   Вверх
quarz
Дата 27.1.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



Так что, никто не знает как этот код работает??
Тогда как сделать такое преобразование? Вычитанием 100,10,1 ??
smile
PM MAIL   Вверх
PILOT
Дата 28.1.2005, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Вычитаешь 10000, считаешь сколько поместилось 10000. Затем из оставшегося вычитаешь 1000 и считаешь сколько раз вычитал пока не стало отрицательным, затем 100, затем 10, остаток просто считаешь единицами.
Вот и получилось что на каждом этапе ты находишь разряд.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1054 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.