Читаем Как проектировать электронные схемы полностью

Ниже приводятся листинги нескольких подпрограмм, обеспечивающих взаимодействие между микроконтроллером и распространенными периферийными устройствами. Приведены также примеры протоколов коммуникаций и логических функций. При этом используется язык, разработанный фирмой Motorola. Он имеет высокую степень совместимости с программным обеспечением микроконтроллеров типа 6805 и 68НС11. Рекомендуется обратиться к справочному изданию производителя, что поможет лучше понять используемые команды.

Существуют эквивалентные команды и для других микроконтроллеров, что дает возможность «подгонять» программы для устройств различных типов. Для управления встроенными устройствами входа/выхода при необходимости применяются специальные команды в двоичных кодах. При использовании независимых периферийных устройств эти команды заменяются эквивалентными инструкциями, хранящимися в ячейках памяти по определенному адресу. Такие инструкции обычно представляют собой подпрограммы, заканчивающиеся командой возврата в точку основной программы, которая следует за точкой вызова.

Используемые переменные, указанные в начале листинга подпрограммы, должны быть объявлены в основной программе, как и функции управления для коммуникационных портов. Тактовая частота кварцевого генератора для модели 6805 составляет, как правило, 4 МГц.

Последовательный ввод данных

Приведенная ниже подпрограмма позволяет принять байт информации в формате RS232, приведенном к уровню сигнала 0–5 В (5 В в режиме отсутствия сигнала), со скоростью 9600 бод. Особенности последовательной передачи данных также рассматриваются в главе 2, раздел «Последовательный интерфейс».

Слово поступает на вход прерывания микроконтроллера, используемый в данном случае для считывания информации (при отключенном режиме прерывания). Результат операции содержится в переменной <pushrs>. Подпрограмма начинается с цикла ожидания (rsin 1), из которого невозможно выйти без изменения состояния линии прерывания. Основными операциями являются задание длительности выполнения команд и логический сдвиг влево (lsl), позволяющий заполнять байт последовательно, бит за битом, по мере прихода сигналов. Подпрограмма temprs2 осуществляет задержку на 76,5 мкс, откалиброванную с помощью кварцевого генератора с рабочей частотой 4 МГц. Имеется возможность производить подстройку как по частоте кварцевого генератора, так и по скорости передачи данных. Ниже приведен листинг подпрограммы.

Используемые переменные: pushrs и pushrs2.

Следует отметить, что в двух рассмотренных выше случаях подпрограммам не всегда нужна адаптация к уровням напряжения, соответствующим стандарту RS232, особенно когда они должны лишь обеспечить коммуникацию между двумя процессорами, расположенными на одной плате. Однако в этом случае могут понадобиться дополнительные линии для ведения диалога, чтобы четко определить, какой из процессоров ведущий, какой — ведомый или они равноправны.

Аналого-цифровой преобразователь с RC-цепочкой

Эта короткая подпрограмма необходима для работы аналого-цифрового преобразователя, описанного в главе 2, раздел «Аналого-цифровое преобразование».

Выход компаратора соединен со входом прерывания, в то время как по линии, соответствующей седьмому биту порта А, выдается импульс переменной ширины. Здесь для увеличения ширины импульса снова используется длительность выполнения команд add #0 и bra in1. При появлении ошибки измерения (слишком высокое напряжение) выдается сообщение в виде кода FFH. Результат преобразования помещается в регистр А. Ниже приведен листинг подпрограммы.

Используемая переменная: А (имя регистра).

Управление символьным индикатором

Речь идет об управлении алфавитно-цифровым индикатором с одной или двумя строками с помощью восьмибитного сигнала. Различные специальные команды уже рассматривались в главе 2.

Контроль за тремя управляющими сигналами Е, RW и RS обеспечивается по линиям 0, 1 и 2 порта В, в то время как данные проходят через порт А. Последовательность поступления сигналов соответствует инструкциям разработчиков. Для некоторых команд она имеет увеличенную временную задержку. Код отправляемой команды должен быть размещен в регистре А перед вызовом подпрограммы. Ниже приведен листинг подпрограммы.

Используемая переменная: push3.

Эта подпрограмма предназначена для отправки единичного символа, а не команды.

Данная подпрограмма, напротив, нужна для отправки целого слова, в конце которого стоит код FFH.

На данном этапе полезно возвратиться к разделу «Световые индикаторы» главы 2, чтобы просмотреть список наиболее распространенных команд управления алфавитно-цифровым индикатором.

Цифровая система фазовой автоподстройки частоты

Перейти на страницу:

Похожие книги

100 способов избежать аварии. Спецкурс для водителей категории В
100 способов избежать аварии. Спецкурс для водителей категории В

Сколько раз, сидя перед экраном телевизора, вы вздрагивали, услышав визг тормозов? К сожалению, со стороны пассажирского сиденья он звучит еще страшнее. Все мы прекрасно знаем, что, садясь за руль, мы несем ответственность не только за себя и своих спутников, но и за всех участников дорожного движения.Так как же вести себя, если вы понимаете, что ситуация вышла из-под контроля и велика вероятность аварии?Александр Каминский, изучив часто случающиеся аварии, на страницах своей книги поделился опытом и секретами, как их избежать, а также подробно описал экстренные действия во время нештатных ситуаций.Книга написана живым и доступным языком и предназначена для широкого круга автовладельцев с различным стажем вождения. Желаем вам приятного чтения и надеемся, что чужой опыт, описанный в этой интересной книге, никогда не станет вашим!

Александр Юрьевич Каминский

Автомобили и ПДД / Техника