На инвертирующий вход усилителя подано фиксированное опорное напряжение. К другому входу подключена интегрирующая цепочка, на которую подается переменный сигнал с выходной обмотки трансформатора источника питания. Как только отключается напряжение питания, потенциал на выходе схемы переключается от высокого уровня к низкому. Это переключение происходит за время полупериода сетевого напряжения, то есть задолго до того, как конденсаторы фильтра источника питания успеют разрядиться. Полученный таким образом управляющий сигнал обеспечит своевременную установку процессора в начальное состояние.
Параметры резисторов входных делителей, приведенные на рис. 4.4, соответствуют напряжению 9 В на выходе трансформатора и напряжению питания Vcc — 5 В. Эти параметры корректируются в зависимости от характеристик реальной схемы.
ТИПОВЫЕ ПОДПРОГРАММЫ
Ниже приводятся листинги нескольких подпрограмм, обеспечивающих взаимодействие между микроконтроллером и распространенными периферийными устройствами. Приведены также примеры протоколов коммуникаций и логических функций. При этом используется язык, разработанный фирмой 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, раздел «Аналого-цифровое преобразование».
Выход компаратора соединен со входом прерывания, в то время как по линии, соответствующей седьмому биту порта А, выдается импульс переменной ширины. Здесь для увеличения ширины импульса снова используется длительность выполнения команд