
- •Установка и подготовка к работе mplab
- •Создание проекта и подключение файла с программой
- •Структура текста программы
- •Правила оформления программы
- •Особенности сопоставления имен и чисел. Прямая и косвенная адресация
- •Циклическая концепция программы
- •Модульная структура программы
- •Понятие о времени исполнения программы
- •Задержки в программе и их расчёт
- •Компиляция и устранение ошибок
- •Глава 4. Макетная плата. Программатор
- •Обозначение ножек микроконтроллера
- •Функциональное назначение ножек
- •Назначение ножек
- •Макетная плата и её назначение
- •Инструкция по прошивке микроконтроллера
- •Глава 5. Элементарные базовые проекты
- •Теория и практика работы портов мк
- •1 (Input) – работа на вход
- •0 (Output) – работа на выход
- •Пример 1. Мигающие светодиоды
- •Пример 2. "Бегущий огонь" и "бегущая тень"
- •Пример 3. Включение символов на индикаторе
- •Пример 4. Отслеживание нажатия кнопки
- •Пример 5. Кнопка в режиме переключателя. Антидребезг
Циклическая концепция программы
Мы уже неоднократно говорили, что команды непрерывно и последовательно выполняются одна за другой. МК не может остановить выполнение программы на какой либо команде, да и команд для остановки и для запуска не существует. Выполнив все строчки с командами, МК не сможет снова их выполнить, если не сделать переход к началу.
Под циклической концепцией понимается способность программ непрерывно выполняться. В связи с этим, в более менее серьезных проектах с МК, необходимо тщательно продумывать алгоритм и последовательность выполнения команд.
Нами уже были рассмотрены простейшие примеры зацикливания программ с командами переходов. Дабы заинтриговать вас, на практике мы рассмотрим более сложные и более интересные зацикливания. В целом вы должны понять, что выполнение программы происходит по "кольцам" с переходами из одного в другое.
Модульная структура программы
Под модульной структурой понимается составление программы из функциональных модулей (кусков, фрагментов, сегментов, подпрограмм). Модули могут выполнять самые разнообразные функции и использовать в самых разнообразных проектах.
При написании программы всегда необходимо стремиться к оптимизации исходного кода – однотипные куски кода оформлять в виде модулей, которые можно в любой момент использовать. В нашем случае мы начнем с простейших примеров, которые выполняют примитивные функции, но, тем не менее, из этих примитивов можно составить более сложные и более функциональные модули.
Другое преимущество модулей – это возможность локализованной отладки. Под локализованной отладкой понимается вынос этого сегмента в отдельный проект, где он обкатывается, обсчитывается, проверяется на работоспособность на демо-плате (об этом далее).
На практике мы научимся базовым приемам использования модулей. Научится этому сможет каждый, а умение оптимизировать и выделять главное придёт с опытом.
Понятие о времени исполнения программы
Понятие о времени исполнения программы по важности стоит на втором месте после циклической концепции. Без цикличности не будет работать программа. А без понимания времени выполнения программы нельзя смоделировать правильную работу устройства.
Для начала определимся с цифрами. По нашему опыту скажем, что первоначально у нас очевидные вещи оставались без должного внимания и приводили к ошибочному восприятию скоростных возможностей МК и, как следствие, к ошибкам в программировании.
1 сек = 1000 мс (миллисекунд) = 1000000 мкс (микросекунд)
В МК одна команда (точнее один машинный цикл) выполняется за 4 такта опорного генератора.
При частоте кварца в 4МГц на выполнение одной команды уйдет
(4 такта / 4000000 Гц) = 1 мкс. Оцените – 1 млн. операций в 1 сек!
С кварцем большей частоты соответственно быстрее.
А теперь смоделируем работу простейшей мигалки. Сначала нам надо установить сигнал на выходе, затем убрать сигнал с выхода, затем зациклить программу. На выполнение этой задачи понадобиться около 10 команд. Вопрос – сколько уйдёт времени на выполнение одного полного цикла? Ответ – 10 микросекунд. Это так быстро, что вместо мигания мы получим непрерывное свечение. А если нам нужны фиксированная длительность свечения и фиксированная длительность в выключенном состоянии? Для этого применяются задержки.