Преобразование BIN -->BCD

Иногда при создании собственных библиотек или, нестандартных схем необходимо полученные данные в виде двоичного числа преобразоать его в двоично- десятичное с размещением в массиве или просто впеременных.
данный код программы преобразует числа до 1 000 000

#include “arduino.h”
unsigned long a =0;
unsigned long x=0;
unsigned long y=0;
unsigned long c=0;
unsigned long b=0;
unsigned long d=0;
unsigned long e=0;
unsigned long f=0;
//==============================

//=================================
void setup() {
Serial.begin (9600);
unsigned long val =964827;//48
x=val;
if(x>100000){
a=x/100000;
x=x-(a100000);
};
if(x>10000){
b=x/10000;
x=x-(b
10000);
};
if(x>1000){
c=x/1000;
x=x-(c1000);
};
if(x>100){
d=x/100;
x=x-(d
100);
};
if(x>10){
e=x/10;
x=x-(e*10);
};

Serial.println (a,DEC);
Serial.println (b,DEC);
Serial.println (c,DEC);
Serial.println (d,DEC);
Serial.println (e,DEC);
Serial.println (x,DEC);

}

void loop() {
// put your main code here, to run repeatedly:

}

ты бы хоть в гугле поискал как это делается

1 лайк

нет. данный код это тест на идиотию.

1 лайк

Молодец!Сам давно всему научился? Мне 70 лет пытаюсь для интереса что-то освоить.
Хотел подключить дисплей со сдвиговыми регистрами и передавать по очереди числа…
Но в инете BIN–> BCD не нашел.Нашел это только на англиском саите.

Унсигнед лонг для для одного сегмента? Сильно.

1 лайк

Это не двоично-десятичное, а просто выделение разрядов. И это можно сделать примерно в пять раз короче.

Попробуйте изучить тему циклов в языке С

2 лайка

а как разместиь 984627 в int

по времени тоже на тоже

По времени может, но код короче и подходит для чисел с любым числом цифр, а не только шестизначных

uint8_t seg7_write(uint16_t n,uint8_t digits,uint8_t align)
{
	for (uint8_t c=(digits+align);c>(0+align);c--)
	{
		buf[c-1]=n%10;
		n/=10;
	}
	return 0;

Примерно так. Число до 9999 раскидываю в буфер поразрядно.

BCD - это упаковка дес.разрядов в 4х битном коде

Т.е когда один байт данных содержит два числа от 0 до 9.

Еще раз - код не мой -с другого сайта.
Меня устроил и для новичков на первое время подойдет пока не освоят все профессионально.

@Kirovskiy53
Поймите, никто не против того, что вы учитесь. Но выкладывать это на форум рано, этот код не образец даже для новичков

4 лайка

:slight_smile:
Почитал что такое двоично-десятичное. Сразу захотелось двоично-шестнадцатиричного и т.д.

Спасибо попробую.

Тем более непонятно, Нафига он тут

1 лайк

Согласен.

А форум только для профессионалов-?

1 лайк

Даже после 70?

Деление на AVR - ЗЛО !