Массивы | Программирование микроконтроллеров

0

Массивы данных повсеместно применяются в различных программах. Применение их упрощает работу с большими объемами данных и помогает структурирование кода программ. В программировании микроконтроллеров также очень часто используют массивы.

В данном цикле статей, просвещенных программированию микроконтроллеров, – это наше первое обращение к массивам. Для большей наглядности мы их применим в коде, который отвечает за формирование цифр на семисегментном индикаторе. Принцип работы семисегментных индикаторов и программирование МК ATmega8. Здесь же мы упорядочим код, написанный ранее.

Массивы
Массив представляет собой набор элементов, расположенных в строгой последовательности и имеющих один общий тип данных.

Массивы объявляются следующим образом. Сначала указывается тип данных, затем произвольное имя массива после которого ставятся квадратные скобки.

int go [10]

int – целочисленный тип данных. Можно задавать и другой тип данных, например char;

go – имя массива. Имя может быть любым.

[ ] – квадратные скобки идентифицируют go как массив данных.

Число в квадратных скобках [10] указывает количество элементов, хранящихся в массиве.

Полностью массив данных идентифицируется таким образом:

int go [10] = {5, 6, 7, 15, 24, 67, 17, 0, 1, 5};

Внутри фигурных скобок все элементы отделяются друг от друга пробелом или запятой. А после закрывающей фигурной скобки обязательно ставится точка с запятой.

Нумерация элементов, заданных в фигурных скобках начинается с нуля!

Поэтому следует быть внимательным, так как нулевому элементу присвоено значение 5, а первому элементу 6 и т.д.

int go [0] →5;
int go [1] →6;
int go [2] →7;
int go [3] →15;
.
.
.
int go [9] →5;

Теперь создадим массив для отображения цифр на семисегментных индикаторах.

Элементы массива могут содержать не только десятичные числа, но и двоичные и шстнадцатеричные.

Запишем двоичные числа, которые соответствуют цифрам семисегментного индикатора с общим катодом.

Аналогичный код можно записать, применяя шестнадцатеричные числа. При этом запись кода станет несколько компактней.

Если семисегментный индикатор с общим анодом, то двоичное число нужно инвертировать – вместо нулей записать единицы, а вместо единиц нули.

int go [10] = {
       0b11000000, //0
       0b11111001, //1
       0b10100100, //2
        0b10110000, //3
       0b10011001, //4
       0b10010010, //5
       0b10000010, //6
       0b11111000, //7
       0b10000000, //8
       0b10010000  //9
        };

Естественно изменятся и шестнадцатеричные числа:

Теперь применим массив для программы, алгоритм работы которой следующий. При нажимании одного раза на одну из кнопок значение числа на индикаторе увеличивается на единицу. Вторая кнопка уменьшает текущее значение числа на единицу.

Оператор for
Оператор for в классическом виде состоит из трех составляющих. Все три элемента записываются в круглых скобках и разделяются точкой с запятой. Первым элементом задается начальное значение переменной. Оно выполняется единожды при первом обращении к циклу for.

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

Третий элемент выполняет обновление либо изменение переменной. Такая операция выполняется при каждом заходе в цикл.

Теперь, применяя массивы и оператор for, мы можем упростить написанный нам ранее код и сделать программу более гибкой. Также дополним программу обратным отсчетом цифр. В целом она работает так: с задержкой 1 секунда (1000 мс) происходит увеличение значение числа на 1. При достижении девять выполняется обратный отсчет до нуля.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x