Теперь необходимо разделить аппаратную и программную часть схемы часов. В состав генератора эталонных интервалов времени входит делитель частоты, часть которого можно реализовать аппаратно при помощи делителя, входящего в состав одного из таймеров микроконтроллера.
Максимальный коэффициент деления на таймере можно получить 65536. Попробуем необходимый коэффициент деления генератора эталонных интервалов времени равный 12000000 разделить на несколько сомножителей. Прежде всего, выделим сомножитель, равный 12. Это внутренний делитель таймера, который всегда присутствует в составе микросхемы и не может быть нами отключен. То есть нам остаётся реализовать делитель на 1000000.
Выберем коэффициент деления таймера равным 50000. Это число меньше максимально возможного числа, допустимого для шестнадцатиразрядного таймера. В результате деления числа 1000000 на число 50000 остаётся число 20. Этот коэффициент деления можно реализовать программно на одной ячейке внутренней памяти данных.
Как уже обсуждалось ранее, алгоритм и программу можно писать одновременно. Начнём написание программы с организации простейшей программы-монитора. Этот первоначальный вариант программы приведен на рисунке 9.18.
Как видно из приведённого исходного текста программы эта программа пока ничего не делает. Однако в этой программе предусмотрен бесконечный цикл, который не позволит программе когда-либо завершиться до выключения питания устройства. По циклу при подключенном к микроконтроллеру кварцевом резонаторе 12МГц программа будет проходить один раз за 2 мкс.
;-------------СБРОС МИКРОКОНТРОЛЛЕРА--------------------------- ORG 0 Jmp init ;Переход на начало выполнения программы ;-------------ИНИЦИАЛИЗАЦИЯ МИКРОКОНТРОЛЛЕРА------------------- init: ;-------------ОСНОВНАЯ ПРОГРАММА МИКРОКОНТРОЛЛЕРА-------------- Begin: Jmp begin ;Переход на начало выполнения программы endРисунок 9.18. Исходный текст первоначального варианта программы.
Теперь реализуем проход по этому циклу один раз в 50 мс. Как уже упоминалось выше, это мы реализуем при помощи таймера.