/* * delay.c * * Created: 03.06.2023 12:34:55 * Author: Admin */ #include "func.h" void delay() { for(volatile long i = 0; i < 1000; i++){}; } int count_digits(long number) { int count = 0; if (number == 0) { return 1; } if (number < 0) { number = -number; } while (number > 0) { number /= 10; count++; } return count; } void split_digits(long number, long* digits, int size) { int digit; int index = 0; if (number == 0) { digits[0] = 0; return; } if (number < 0) { number = -number; } while (number > 0 && index < size) { digit = number % 10; digits[index] = digit; number /= 10; index++; } } static char map(char c) { //if (c >= 0 && c <= 9) //return c - 0x27; //else //return 0x01; switch (c) { case 0x30: return 0x09; case 0x31: return 0x0a; case 0x32: return 0x0b; case 0x33: return 0x0c; case 0x34: return 0x0d; case 0x35: return 0x0e; case 0x36: return 0x0f; case 0x37: return 0x10; case 0x38: return 0x11; case 0x39: return 0x12; case 0x2d: return 0x06; } } void map_digits(char* arr, char *digits, int size) { int idx = 0; for (int i = 0; i < size; i++) { arr[idx] = map(digits[i]); idx++; } } void prepare_data(char *arr, long number, int size) { long digits[12]; split_digits(number, digits, size); map_digits(arr, digits, size); }