Применение микроконтроллеров в системах управления и контроля. Иванов Н.М - 14 стр.

UptoLike

Составители: 

14
В начале программы определяются значения используемых пере
менных, т. е. задается распределение оперативной памяти. Оператор
ORG фиксирует начальный адрес размещения кодов программы в по
стоянной памяти.
Как упоминалось ранее, загрузочный модуль передает управление
на метку Start и подпрограмма ConstInit выполняет настройку асин
хронного канала на скорость 9600 бод. На метке Priem программа
ожидает прихода байта из ПЭВМ. Принятый подпрограммой Receiv
байт записывается в ячейку RxBuf, переключается светодиод коман
дой XORWF PORTA, f и начальный адрес Buf1 загружается в регистр
FSR. Устанавливается бит переноса C в регистре STATUS, и в счет
чик цикла Cnt загружается число 3. Эта часть программы идентична
для всех вариантов.
С метки Beg1 начинается конкретный вариант программы. В ак
кумулятор W загружается начальное значение, и цикл из несколь
ких команд повторяется 3 раза. Содержимое аккумулятора W и яче
ек ОЗУ при каждом проходе цикла следует указать в поле коммента
рия. В цикле выполняются сдвиги, арифметические и логические ко
манды. Следует учитывать, что бит переноса формируется арифме
тическими командами и включается в кольцо сдвига при выполнении
команд RLF, RRF.
После выхода из цикла содержимое W и регистра STATUS записы
вается в ячейки 23, 24 и в поле комментария отмечаются заключи
тельные значения всех переменных. Далее для контроля эти значения
в цикле Tra передаются в ПЭВМ по последовательному каналу и отра
жаются на экране дисплея. Управление возвращается на метку Priem.
В заключение остановимся несколько подробнее на используемых
подпрограммах. Для загрузки регистров SPBRG и TXSTA в подпрог
рамме Init сначала устанавливается первый регистровый банк. В ре
гистре TXSTA задается 8битовый формат, разрешение выдачи, асин
хронный режим и повышенная скорость (табл. П2.3). При частоте
кварца 20 МГц и повышенной скорости загрузка десятичного числа
d129 в регистр SPBRG обеспечивает асинхронную передачу со ско
ростью 9600 бод. Затем устанавливается нулевой регистровый банк
и в регистре RCSTA задается разрешение приема и 8битовый фор
мат. Сброс регистра INTCON запрещает прерывания.
Прием байта подпрограммой Receiv начинается с цикла ожидания
готовности на метке RecA до установки флага готовности RCIF в ре
гистре PIR1. Затем байт переписывается из буфера приема RCREG
в ячейку RxBuf. При выдаче байта подпрограммой Transm он снача
ла загружается в буфер выдачи TXREG, затем сбрасывается флаг вы