Здравствуйте!
Вопрос больше по принципам программирования для микроконтроллеров.
К примеру, задача получить по UART число, сделать его двоично-десятичное преобразование и вывести на ЖК индикатор.
Как лучше (с точки зрения "правильности" программирования):
1) Объявить глобальную структуру, все функции становятся void Function (void) { }, в обработчике прерывания можно менять содержимое структуры.
2) Объявить локальную структуру в main, в функции передавать указатели на структуру. Вот, к примеру, понятен ли такой код с указателями?
Код
struct b
{
unsigned int number; // число
unsigned int bdcNumber[10]; // число, в двоично-десятичном представлении
unsigned char rIdx; // индекс чтения буфера
unsigned char cntr; // счетчик числа элементов в буфере
};
struct b buff, *pbuff = &buff;
void BDC (struct b *k)
{
if (k->number < 9)
{
k->cntr = 0;
k->bdcNumber[k->cntr] = k->number;
}
else
{
for (k->cntr = 0; k->number > 9; (k->cntr)++)
{
k->bdcNumber[k->cntr] = k->number % 10;
k->number /= 10;
}
k->bdcNumber[k->cntr] = k->number;
}
}
Меня смущают такие конструкции
Код
k->bdcNumber[k->cntr] = k->number % 10;
Это нормально?
До каких размеров программ разумно пользоваться глобальными переменными? А ведь есть контроллеры с 64к флеша.