Например TDA7294

Форум РадиоКот • Просмотр темы - Запись чисел больше 255 и преобразование их в 10й вид.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 22, 2025 21:05:52

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


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



Начать новую тему Ответить на тему  [ Сообщений: 21 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 10:34:43 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
Я недавно начал изучать программирование на ассемблере для PIC.
Даже спаял для этого дела простой JDM, потом экстра пик.
Дрыгать ногами научился, с прерываниями разобрался, циклами задержек и т.п.
Но не догоняю, как инкрементировать счетчик в двоичном виде до числа более 255. Знаний не хватает из-за нехватки времени на изучение без помощи.
Понимаю, что для этого нужно от 2-х байт и более. Пусть будет 2 байта к примеру мне нужен счетчик до 10 000.

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

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

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

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Вернуться наверх
 
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 10:53:20 
http://kazus.ru/forums/showthread.php?t=48634

:tea:


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 11:52:19 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
Спасибо за ссылку, кое-что начало проясняться.

Но там не особо разжевано.
Вопрос такой:
Мне нужно записать число, к примеру 557, в регистры bin1 и bin2.
Как объединить эти 2 регистра в 16 бит?

допустим я указал в шапке эти регистры

bin1 equ 0dh;
bin2 equ 0ch;

Дальше мне нужно записать в них 557.
Какой код будет?

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 12:19:21 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7321
Откуда: 845-й км.
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Если пишешь на ассемблере, то никак - просто резервируй две ячейки памяти.
Severrr писал(а):
Дальше мне нужно записать в них 557.

Код:
movlw  low 557
movwf  bin2
movlw  high 557
movwf  bin1    ; просто обычно принято младший байт расмещать в младшем адресе, но не принципиально
; теперь инкремент
incf      bin2, f  ; увеличиваем младший байт
btfsc    status, c  ; если не произошло переполнение, то следующую операцию пропускаем
incf      bin1, f   ; если младший переполнился, то и старший
disclaimer: в приведённом коде могут быть ошибки, так как не проверялось, но идея, надеюсь понятна.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 12:40:59 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
uldemir писал(а):
не проверялось, но идея, надеюсь понятна.


а low и high - это что такое?

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 12:48:36 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
Псмотрел инкремментирование на калькуляторе в бинарном виде, опираясь на предоставленный код и вкурил сразу. Идея на самом деле стала ясной и понятной. Огромное спасибо uldemir!

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Последний раз редактировалось AlekseyEnergo Сб дек 27, 2014 20:53:35, всего редактировалось 1 раз.
Нарушение пункта 2.2 правил форума. Предупрежден!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 13:00:11 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
uldemir писал(а):
Код:
movlw  low 557
movwf  bin2
movlw  high 557
movwf  bin1    ; просто обычно принято младший байт расмещать в младшем адресе, но не принципиально
disclaimer: в приведённом коде могут быть ошибки, так как не проверялось, но идея, надеюсь понятна.


Это не просто ошибки это вопиющий бред .
Максимальное значения для 8ми бит ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 13:09:14 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7321
Откуда: 845-й км.
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
low и high директивы выделяющие из числа младший и старший байт. Можно самому написать
Код:
movlw 2
movwf bin1
movlw 45
movwf bin2
Но это не наглядно. Не понятно откуда взялись эти числа.

Можно писать по-иному:
Код:
movlw 557 >> 8 ; число сдвигаем вправо на 8 позиций (или делим на 256)
...
movlw 557 & 0xff ; маской выбираем только младшие 8 бит
...
Но все эти вычисления выполняются только на этапе компиляции и код генерят абсолютно одинаковый.

dosikus писал(а):
Это не просто ошибки это вопиющий бред .
Пруф? Возможно, я не правильно назвал эти функции - недавно сменил MPLAB c 8-го на Х и не умею быстро сделать пустой проект для проверки. Возможно надо писать low(557) и high(557), но суть от этого не меняется.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 13:14:17 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
uldemir , не прибавляй минусов к своей карме ламера.
Это не функции а команды ассемблера - это раз , максимально в ячейку памяти влезет число 255( 0xFF) -это два...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 13:27:30 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7321
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Можешь мне добавить к карме ламера своих минусов. Возможно, я немного ошибаюсь в терминологии, что считать директивами, что функциями итп. Но суть не меняется - речь как раз и идёт о том как работать с числами больше 255, т.е. как их раскидать по двум байтам.

И в чем ошибка? Неужели число high(557) больше чем 255?
Вот листинг из первого попавшегося проекта:
Код:
0157   3040           00606         MOVLW   LOW(CHAR3IMG)
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0158   008D           00607         MOVWF   EEADRL
0159   300F           00608         MOVLW   HIGH(CHAR3IMG)
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
015A   008F           00609         MOVWF   EEADRH
......

0F40                  01702 CHAR3IMG:
....
Errors   :     0
Warnings :     0 reported,     0 suppressed
Messages :   172 reported,     0 suppressed

Как видите, сообщений об ошибке нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 13:28:05 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Цитата:
Это не функции а команды ассемблера

Всю жизнь были директивами препроцессора.
Цитата:
максимально в ячейку памяти влезет число 255( 0xFF) -это два

У пиков всего одна ячейка памяти? :shock:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 13:31:05 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
Ну главное я понял, а о назначении старшего и младшего байтов можно разобраться и самому. Про low и High я догадался, не смотря на неверное написание кода. Кстати нашел и то как переводить двоичный код в двоично-десятичный. Так, что ответ uldemir оказался полезным в любом случае.

Поправлюсь. Написание кода скорее всего наоборот верное. Проверить нет пока возможности.

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Последний раз редактировалось AlekseyEnergo Пн дек 29, 2014 16:29:45, всего редактировалось 1 раз.
Нарушение пункта 2.2 правил форума. Подредактировал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Чт дек 25, 2014 14:21:29 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1494
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15313
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
На данную тему существует целая куча юзерс гвиде от микрошипа, огромное количество приложений по двоичной/двоично - десятичной математике и море вариантов преобразоваий. Притом, что все варианты будут верными...
Просто нужно выбрать наиболее оптимальный для конкретного случая (обусловленно системой команд, временем исполнения и наличным ресурсом ОЗУ)
8)
С ассемблером могу помочь - но только под конкретную схему и/или задачку с конкретной схемкой - остальное есть "перемалывание в ступе" предположений... :beer:

Ну и dosiKUS как всегда "КУСЬ!" 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Пт дек 26, 2014 06:25:16 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
BOB51 писал(а):
Притом, что все варианты будут верными...
Просто нужно выбрать наиболее оптимальный для конкретного случая (обусловленно системой команд, временем исполнения и наличным ресурсом ОЗУ)


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

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Пт дек 26, 2014 08:03:10 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7321
Откуда: 845-й км.
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Есть (там дальше и сама ссылка) в 526-й аппноте от микрочипа. Там, кстати, есть и многие другие примеры операций с 8-ми и 16-ти битными числами. Принцип прост: в БКД логике производится умножение на 2 по маске аргумента.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Пт дек 26, 2014 10:08:48 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
uldemir писал(а):
умножение на 2 по маске аргумента.


Как раз этот код Eddy71 в первом же ответе скинул. Только я пока въехать в этот принцип до конца не могу. Разбираюсь потихоньку.
Спасибо всем огромное. Вы сократили мне время на поиски истины в разы. Еще один кирпичик почти освоен.

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Пт дек 26, 2014 10:54:09 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7321
Откуда: 845-й км.
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Тот код все приводят и иногда даётся ссылка на источник. Но нигде не написан принцип работы. В своё время удалось найти по ключевому слову "метод левого сдвига". Ну это если хочется разобраться. А если использовать, то лучше использовать готовую подпрограмму - там уже все такты вылизаны и что-нибудь оптимальнее придумать сложно.


Вернуться наверх
 
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Пт дек 26, 2014 13:43:56 
Присоединюсь к совету использовать вылизаные библиотеки. Вот тут просто клад из них. Из разных областей полезности.

http://www.piclist.com/techref/microchip/routines.htm


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Сб дек 27, 2014 08:13:25 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 4
Зарегистрирован: Ср ноя 26, 2014 08:42:24
Сообщений: 124
Откуда: г. Уфа
Рейтинг сообщения: 0
Eddy71 писал(а):
Вот тут просто клад из них


Офигенная ссылка! Коды с пояснениями и искать нужный код очень просто - красота!
Одно из самых дорогих вещей в жизни - это время. Спасибо всем на форуме, что Вы его находите чтобы помочь другим! :))

_________________
Если у вас что-то не получается, надо притвориться, что вы умеете это делать. Если дурить себе голову достаточно долго, то когда-нибудь у вас начнет получаться, и тогда можно забыть, что вы притворялись. /Юрий Мороз


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Запись чисел больше 255 и преобразование их в 10й вид.
СообщениеДобавлено: Сб дек 27, 2014 08:34:05 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Извиняюсь, если эти библиотеки - "повтор".


Вложения:
Match.rar [86.7 KiB]
Скачиваний: 168

_________________
С Уважением, Альберт (Albert_V).
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  1,  

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


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

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


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

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


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