Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 6. Осваиваем все возможности микроконтроллера ATtiny23 13 475 ; Помещаем младшие разряды данных (из г16) в буфер, ; начинаем передачу данных out UDR, г 16 ret Листинг 6.10. Пример на языке СИ (Code Vision) #define UDRE 5 #define TXB8 0 void USART_Transmit( unsigned int data ) /* Ожидаем, пока очистится буфер передачи */ while ( i( UCSRA & (1«UDRE)) ); /* Копируем 9-й бит в ТХВ8*/ UCSRB &= "(1«ТХВ8); if ( data & 0x0100 ) UCSRB |= (1«ТХВ8), /* Помещаем младшие 8 разрядов данных в буфер, начинаем передачу данных */ UDR = data; } Примечания. 1. Эти функции передачи предназначены для общего использования. Они могут быть упрощены, если содержимое UCSRB не изменяется. Например, если после инициализации из всего регистра UCSRB используется только битТХВв. 2. Данные программные примеры предполагают, что в начале программы выполнено подключение файла описаний. Флаги и прерывания передатчика Существует два флага, индицирующие состояние передатчика USART: ♦ флаг «Регистр данных пуст» (UDRE); ♦ флаг «Передача окончена» (ТХС). Оба флага могут использоваться для генерации прерываний. Флаг «Регистр данных пуст» (UDRE) указывает, готов ли буфер пере ­ дачи к получению новых данных. Этот флаг установлен, если буфер пере ­ дачи пуст. Флаг сброшен, если буфер содержит данные, предназначен ­ ные для передачи, которые еще не перемещены в сдвиговый регистр. Для совместимости с будущими устройствами всегда устанавливайте этот бит в ноль при перезаписи регистра UCSRA. Когда регистр данных пуст, бит разрешения прерывания (UDRIE) в регистре UCSRB устанавливается в единицу. Прерывание по событию «Регистр данных пуст» должно быть выполнено, пока UDRE установлен (при условии, что глобальные прерывания разрешены). Флаг UDRE сбра ­ сывается при записи регистра UDR. Если используется передача данных, управляемая прерыванием по событию «Регистр данных пуст», процедура обработки прерывания должна либо записать новые данные в регистр UDR, чтобы сбросить

RkJQdWJsaXNoZXIy MTExODQxMg==