Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на ассемблере для PIC2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.27 Mб
Скачать

Циклическая концепция программы

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

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

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

Модульная структура программы

Под модульной структурой понимается составление программы из функциональных модулей (кусков, фрагментов, сегментов, подпрограмм). Модули могут выполнять самые разнообразные функции и использовать в самых разнообразных проектах.

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

Другое преимущество модулей – это возможность локализованной отладки. Под локализованной отладкой понимается вынос этого сегмента в отдельный проект, где он обкатывается, обсчитывается, проверяется на работоспособность на демо-плате (об этом далее).

На практике мы научимся базовым приемам использования модулей. Научится этому сможет каждый, а умение оптимизировать и выделять главное придёт с опытом.

Понятие о времени исполнения программы

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

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

1 сек = 1000 мс (миллисекунд) = 1000000 мкс (микросекунд)

В МК одна команда (точнее один машинный цикл) выполняется за 4 такта опорного генератора.

При частоте кварца в 4МГц на выполнение одной команды уйдет

(4 такта / 4000000 Гц) = 1 мкс. Оцените – 1 млн. операций в 1 сек!

С кварцем большей частоты соответственно быстрее.

А теперь смоделируем работу простейшей мигалки. Сначала нам надо установить сигнал на выходе, затем убрать сигнал с выхода, затем зациклить программу. На выполнение этой задачи понадобиться около 10 команд. Вопрос – сколько уйдёт времени на выполнение одного полного цикла? Ответ – 10 микросекунд. Это так быстро, что вместо мигания мы получим непрерывное свечение. А если нам нужны фиксированная длительность свечения и фиксированная длительность в выключенном состоянии? Для этого применяются задержки.