Читайте также: |
|
Укрупненный алгоритм основной программы приведен на рис. 4.5. Алгоритм подпрограммы передачи символа приведен на рис. 4.6, а драйвера прерываний от приемника на рис. 4.7.
Рис. 4.5. Блок-схема алгоритма основной программы
В первом блоке алгоритма подключается текстовый файл с символьными обозначениями РСН. Присваиваются символьные наименования трем регистрам общего назначения, первый из которых предназначен для хранения принятого символа, а еще два для организации программного стека.
Порты А и С, к которым подключены светодиоды, настраиваются на вывод информации, а порт В, к которому подключены контакты кнопок, – на ввод. К выводам порта В подключаются внутренние подтягивающие резисторы.
Разрешается прерывание от приемника USART. USART настраивается на высокоскоростной асинхронный режим работы со скоростью передачи 19200 бит/с.
В блоках со второго по одиннадцатый производится опрос нажатых кнопок, если хотя бы одна из кнопок нажата, то осуществляется вызов подпрограммы передачи символа, соответствующего номеру этой кнопки.
В блоках с двенадцатого по двадцать пятый анализируется принятая через USART информация. При обнаружении символа соответствующего цифрам от 1-го до 6-ти осуществляется включение соответствующего светодиода, а при обнаружении символа «0» – гашение всех светодиодов.
Далее программа возвращается к опросу состояния кнопок.
Рис. 4.6. Блок-схема алгоритма подпрограммы передачи символа
Блоки с двадцать шестого по двадцать девятый реализуют передачу символа, соответствующего номеру нажатой кнопки и проверку окончания передачи.
Рис. 4.7. Блок-схема алгоритма драйвера прерываний
Обработка прерываний, вызываемых приемником USART производится в блоках с тридцатого по тридцать третий. В тридцать первом блоке проверяется отсутствие ошибок, если ошибок нет, то принятый символ сохраняется в ОЗУ, если есть ошибки, то принятый символ игнорируется.
Необходимо обратить внимание на то, что в подпрограмме драйвера прерываний изменяется содержимое рабочего регистра W и флагов признаков, располагающихся в регистре STATUS. Поскольку вызов прерывания происходит в произвольный момент времени, такое изменение может вызвать сбой в работе основной программы. Для предотвращения этого содержимое регистров W и STATUS в начале обработчика прерываний сохраняется в ОЗУ, а к конце считывается обратно.
Дата добавления: 2015-07-08; просмотров: 404 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Трансляция текста программы в машинные коды | | | Написание текста программы на языке Ассемблер |