Ниже приводятся листинги нескольких подпрограмм, обеспечивающих взаимодействие между микроконтроллером и распространенными периферийными устройствами. Приведены также примеры протоколов коммуникаций и логических функций. При этом используется язык, разработанный фирмой Motorola. Он имеет высокую степень совместимости с программным обеспечением микроконтроллеров типа 6805 и 68НС11. Рекомендуется обратиться к справочному изданию производителя, что поможет лучше понять используемые команды.
Существуют эквивалентные команды и для других микроконтроллеров, что дает возможность «подгонять» программы для устройств различных типов. Для управления встроенными устройствами входа/выхода при необходимости применяются специальные команды в двоичных кодах. При использовании независимых периферийных устройств эти команды заменяются эквивалентными инструкциями, хранящимися в ячейках памяти по определенному адресу. Такие инструкции обычно представляют собой подпрограммы, заканчивающиеся командой возврата в точку основной программы, которая следует за точкой вызова.
Используемые переменные, указанные в начале листинга подпрограммы, должны быть объявлены в основной программе, как и функции управления для коммуникационных портов. Тактовая частота кварцевого генератора для модели 6805 составляет, как правило, 4 МГц.
Последовательный ввод данных
Приведенная ниже подпрограмма позволяет принять байт информации в формате RS232, приведенном к уровню сигнала 0–5 В (5 В в режиме отсутствия сигнала), со скоростью 9600 бод. Особенности последовательной передачи данных также рассматриваются в
Слово поступает на вход прерывания микроконтроллера, используемый в данном случае для считывания информации (при отключенном режиме прерывания). Результат операции содержится в переменной <
Используемые переменные:
Следует отметить, что в двух рассмотренных выше случаях подпрограммам не всегда нужна адаптация к уровням напряжения, соответствующим стандарту RS232, особенно когда они должны лишь обеспечить коммуникацию между двумя процессорами, расположенными на одной плате. Однако в этом случае могут понадобиться дополнительные линии для ведения диалога, чтобы четко определить, какой из процессоров ведущий, какой — ведомый или они равноправны.
Аналого-цифровой преобразователь с RC-цепочкой
Эта короткая подпрограмма необходима для работы аналого-цифрового преобразователя, описанного в
Выход компаратора соединен со входом прерывания, в то время как по линии, соответствующей седьмому биту порта А, выдается импульс переменной ширины. Здесь для увеличения ширины импульса снова используется длительность выполнения команд
Используемая переменная: А (имя регистра).
Управление символьным индикатором
Речь идет об управлении алфавитно-цифровым индикатором с одной или двумя строками с помощью восьмибитного сигнала. Различные специальные команды уже рассматривались в
Контроль за тремя управляющими сигналами Е, RW и RS обеспечивается по линиям 0, 1 и 2 порта В, в то время как данные проходят через порт А. Последовательность поступления сигналов соответствует инструкциям разработчиков. Для некоторых команд она имеет увеличенную временную задержку. Код отправляемой команды должен быть размещен в регистре А перед вызовом подпрограммы. Ниже приведен листинг подпрограммы.
Используемая переменная:
Эта подпрограмма предназначена для отправки единичного символа, а не команды.
Данная подпрограмма, напротив, нужна для отправки целого слова, в конце которого стоит код FFH.
На данном этапе полезно возвратиться к разделу «
Цифровая система фазовой автоподстройки частоты