1
МИКРОКОНТРОЛЛЕРЫ
1
снова будем вынуждены брать в
руки калькулятор! Кроме того, что
означает число 3 в старшем байте,
без специального комментария по
этому поводу совершенно непонятно.
Записанная же формула все расстав-
ляет “по своим местам”. В формулах
можно применять знаки арифмети-
ческих действий + (плюс), - (минус),
* (умножить), / (разделить) и круглые
скобки. Единственное правило при
написании формул - все элементы
формулы должны быть известны на
стадии компиляции: нельзя писать
формулу %а5+4, потому что она тре-
бует вычисления во время выполне-
ния программы! Кстати, для нашего
случая есть и еще один способ опре-
деления - применить вместо конст-
рукции .byte конструкцию .word: тог-
да наш описатель будет выглядеть
как .byte 00000001Ь, 00000011Ь, 0 ,0
//.w ord 1000, 0.
2. В описателе автомата мы при-
менили ранее определенные с помо-
щью директив #define терминальные
символы и номера подпрограмм вы-
хода. Смотрите, насколько понятнее
такое описание таблицы, чем набор
конструкций вида .byte 0,01 h, 1 ,02h!
Итак, программа готова. Занеси-
те ее в микроконтроллер и проверь-
те, работает ли она так, как мы этого
хотели. Не забудьте задать регистр
конфигурации равным
/с:0х01 СО.
И, наконец, - еще один экспери-
мент. Подсоедините светодиод к ли-
нии А[4] (именно для управления
этим светодиодом и предназнача-
лись команды bich в начале обработ-
чиков прерываний). По смыслу его
работы он будет гореть тогда, когда
процессор микроконтроллера “про-
хлаждается", и гаснуть, когда он за-
нят полезной работой. Посмотрите
визуально, сколько времени уходит
у микроконтроллера на отработку
автомата, написанную в стиле “от
прерываний”.
<3десь автор предполагает, что
читатель посмотрел>
Итак, скорее всего, вы увидели
едва заметное мигание!-Вот насколь-
ко разгружает процессор микрокон-
троллера стиль программирования
“от прерываний”. А это значит, что все
свободное время микроконтроллера
достанется
фоновому процессу!
Наш фоновый процесс пока ничего
не делает (команда wait), но в даль-
нейших статьях мы разберем при-
мер, где фоновый процесс будет вы-
полнять весьма тяжелую работу.
П о д в е д е м и то г.
..
Первое, что необходимо особо
отметить еще раз - то, что стиль про-
граммирования “от прерываний” иде-
альным образом ложится на авто-
матное программирование, потому
что между терминальными символа-
ми автомата и сигналами прерыва-
ний от внешних устройств, как пра-
вило, существует однозначное соот-
ветствие.
1. Программирование микрокон-
троллера в стиле “от прерываний”
позволяет практически полностью
освободить процессор микроконт-
роллера от работы, связанной с уп-
равлением объектом, и направить
ресурсы микроконтроллера на вы-
полнение длительных вычислений.
Также программирование в стиле “от
прерываний” дает возможность со-
здавать устройства с минимальным
энергопотреблением - в единицы
микроампер (применение команды
sip), что недостижимо никаким дру-
гим образом. Сразу же - небольшое
отступление: во многих других мик-
роконтроллерах для управления
энергопотреблением существуют
специальные регистры, в которых
можно взводить и сбрасывать соот-
ветствующие биты, переводя этим
микроконтроллер в то или иное со-
стояние ожидания. На взгляд автора,
решение, принятое разработчиками
микроконтроллера КР1878ВЕ1, бо-
лее прозрачно и понятно.
2. Наличие всего одного таймера
не является препятствием для напи-
сания задач, где требуется несколько
таймеров, если при программирова-
нии использовать технику виртуаль-
ных таймеров. Вариант с
тиками
мы
разобрали в данной статье, второй
вариант -
с очередью задержек, -
постараемся по возможности разоб-
рать в одной из последующих статей
цикла (необходимость такого спосо-
ба реализации виртуальных тайме-
ров возникает достаточно редко - в
практике автора она встречалась
всего дважды).
3. Наличие сегментной адресации
в микроконтроллере КР1878ВЕ1 по-
зволяет применять в программах тех-
нику
передачи параметров
под-
программам. В “большом” програм-
мировании передача подпрограмме
тех или иных параметров является
самым обыденным делом, более того
- подпрограммы
без
параметров там
встречаются очень и очень редко! К
сожалению, указанный прием.про-
граммирования
не
может быть реа-
лизован на микроконтроллерах, име-
ющих организацию памяти в виде
банков
- там такой прием приводит
к совершенно чудовищному перерас-
ходу памяти. В этом плане сегмент-
ная адресация, реализованная в мик-
роконтроллере КР1878ВЕ1, на самом
деле является не недостатком (авто-
ру частенько приходилось слышать
подобного рода высказывания), а ог-
ромным преимуществом, позволяю-
щим, в частности, реализовать на нем
еще один интересный и мощный при-
ем программирования -
рекурсию
ней речь, по возможности, пойдет в
одной из следующих статей). Под-
программы, использующие парамет-
ры, пишутся
на общий случай
(об-
работка
автомата вообще),
а част-
ности (например, какой именно авто-
мат в данный момент обрабатывает-
ся), учитываются
вызывающей
про-
граммой через механизм параметров
(передачу
именно этого
описателя
автомата). Итогом программирова-
ния с параметрами (в нашем приме-
ре) является существенное сокраще-
ние программного кода-три простых
общих подпрограммы вместо 12 про-
стых частных или трех сложно устро-
енных общих.
4. Техника использования масок.
Маска - байт, в котором интересую-
щие нас биты отмечены лог. 1. Маску
можно накладывать на проверяемый
байт (команда
and)
для того, чтобы
выделить из него интересующие нас
биты. С помощью маски можно ин-
вертировать в обрабатываемом бай-
те заданные биты (команда
хог).
И,
наконец, с помощью маски можно
принудительно устанавливать в об-
рабатываемом байте заданные биты
(команда
or,
которая нам еще не
встречалась). Наряду с командами Ыс,
bis, btg
и
btt,
команды
and, or
и
хог
-------------------- —
-----^ 49
Радиолюбитель - 0 2 /2 0 0 6 |
предыдущая страница 48 Радиолюбитель 2006-02 читать онлайн следующая страница 50 Радиолюбитель 2006-02 читать онлайн Домой Выключить/включить текст