Ь ///- Интерфейс с внешними устройствами
поступления старт-бита на вход Р2.2. По спадающему фронту на входе Р2.2 текущее значение работающего в свободном режиме таймера timer_A3 (TAR) сохраняется в регистре CCR0. Захват данных осуществляется аппаратными средствами таймера timer_A3 без использования программных средств. Также формируется прерывание для вычислительного ядра. Время задержки обработки прерывания не имеет значения, так как момент появления спадающего фронта точно зафиксирован в регистре CCR0. После обнаружения спадающего фронта старт-бита программное обеспечение перестраивает CCTLO таким образом, чтобы CCR0 сравнивал данные в середине первого информационного бита. Смещение на 1.5 бита осуществляется за счет увеличения содержимого CCR0 на соответствующее значение. Полученные данные защелкиваются в SCCI. SCCI - считываемая защелка регистра CCTLO. При работе UART SCCI синхронно с CCR0 защелкивает логический уровень, присутствующий на входе Р2.2. UART принимает данные, защелкнутые в SCCI. Программное обеспечение не контролирует непосредственно состояние входа Р2.2.
RX_Bit bit.w #SCCI, &CCTL0 /получение бита,
/защелкнутого в SCCI
rrc.b RXTXData /сохранение принятого
; бита
После принятия первого бита содержимое CCR0 увеличивается на величину, позволяющую выполнить захват в середине следующего информационного бита. 8 информационных бит сохраняются программно в регистр RXTXData.
Задача передачи данных более простая, так как MSP430 сам решает, когда передавать данные, и при этом не требуется осуществлять поиск никаких фронтов сигналов. Данные, сохраненные в буферном регистре RXTXData, аппаратно сдвигаются на выход Р1.1 при помощи регистра CCR0 таймера timer_A.
CCR0 перестраивается в режим сравнения для передачи следующего бита при помощи выхода режимно-управлемых битов в CCTLO. Режимно-управля-ющие биты определяют состояние выхода, которое будет установлено аппаратно в момент последующего сравнения. При этом отпадает необходимость программно отслеживать момент установки значения следующего выходного бита и выполнять саму установку. Программно осуществляется только загрузка значения следующего передаваемого бита:
TX_Bit rra.b RXTXData /смещение LSB для
/переноса
j с ТХ Mark / переход если бит = 1 TX_Space bis.w #OUTMOD2, &CCTL0/область ТХ
reti/ TX_Comp bic.w #CCIE, &CCTL0 /все биты приняты,
/блокировка прерывания
TX_Mark bic.w #OUTMOD2, &CCTL0/метка ТХ reti/
170 Библиотека Компэла