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



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

В данном цикле статей, просвещенных программированию микроконтроллеров, — это наше первое обращение к массивам. Для большей наглядности мы их применим в коде, который отвечает за формирование цифр на семисегментном индикаторе. Принцип работы семисегментных индикаторов и программирование МК 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

        };

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

Массив шестнадцатеричных чисел для семисегментного индикатора с общим анодом

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

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

Оператор for

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

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

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

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

оператор for | программирование микроконтроллеров

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

Скачать программы

One Comment

Комментировать

Ваш e-mail не будет опубликован. Обязательные поля помечены *