96 lines
1.3 KiB
C
96 lines
1.3 KiB
C
/*
|
|
* 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);
|
|
} |