Бібліотека для перекладу двійкових чисел в двійковій-десяткові числа і символи

Іноді при програмуванні мікроконтролерів потрібно виводити на дисплей або термінал якісь числові дані. Це можуть бути свідчення АЦП, значення внутрішнього годинника, коди помилок, стану автомата і т.п. Процедура виведення числа складається з наступних кроків, потрібно перетворити двійкове число в двійковій-десяткове, перевести двійковій-десяткове число в символьне уявлення і після цього передати отриманий результат якоїсь функції виведення. Для виконання цього завдання я написав невелику бібліотеку.

- працює з будь-якими микроконтроллерами і компіляторами,
- швидкий алгоритм без використання операції ділення,
- працює з 8, 16 і 32 розрядними двійковими числами,
- є функції для роботи з десятковими числами заданої розрядності,
- може зберігати результат перетворення у вигляді рядка в буфері,
- якщо визначена зовнішня функція виведення, може відразу передавати результат їй.

1. Переписуємо файли bcd.h і bcd.c в папку проекту.
2. Підключаємо bcd.c до проекту всередині середовища розробки.
3. інклюд заголовки bcd.h до сішному файлу, в якому будуть використовуватися функції перетворення.
4. Налаштовуємо конфігурацію в заголовки bcd.h.
5. Прописуємо в код виклик функцій бібліотеки.

Налаштування конфігурації включає в себе наступні кроки.

2. Перевизначення функції виведення. Якщо цей функціонал не використовується макрос потрібно залишити порожнім.

Загальні функції для перетворення 8, 16 і 32 розрядних двійкових чисел.

void BCD_Uchar (uint8_t value) - перетворює числа від 0 до 255
void BCD_Uint (uint16_t value) - перетворює числа від 0 до 65535
void BCD_Ulong (uint32_t value) - перетворює числа від 0 до 4294967295

Функції для перетворення десяткових чисел заданої розрядності.

void BCD_1 (uint8_t value) - перетворює числа від 0 до 9
void BCD_2 (uint8_t value) - перетворює числа від 0 до 99
void BCD_3 (uint8_t value) - перетворює числа від 0 до 255
void BCD_3Int (uint16_t value) - перетворює числа від 0 до 999
void BCD_4Int (uint16_t value) - перетворює числа від 0 до 9999
void BCD_5Int (uint16_t value) - перетворює числа від 0 до 65535

приклад

Функція для отримання покажчика на буфер, в якому зберігається результат. Якщо буфер не використовується, функція повертає нульовий покажчик.

bcd.rar - бібліотека для перекладу двійкових чисел в двійковій-десяткові і символи

Схожі статті