F20-23 (1041603), страница 44
Текст из файла (страница 44)
Врежимах 0 и 1 этот бит не используется. Бит TB80 устанавливается и сбрасываетсяпрограммно.Бит 2:RB80: Девятый бит принимаемых данных.Этот бит принимает значение девятого бита данных, полученного в режимах 2 и 3. В режиме1, если SM20 = 0, бит RB80 принимает значение полученного стопового бита.
В режиме 0 битRB80 не используется.Бит 1:TI0: Флаг прерывания от передатчика УАПП0.Устанавливается в 1 аппаратно при окончании передачи байта данных (после передачи 8-гобита в режиме 0, или в начале передачи стопового бита в остальных режимах). Еслипрерывание от УАПП0 разрешено, то установка этого бита вызовет переход на процедуруобслуживания прерывания от УАПП0. Этот бит должен сбрасываться программно.Бит 0:RI0: Флаг прерывания от приемника УАПП0.Устанавливается в 1 аппаратно при приеме байта данных (после 8-го бита в режиме 0, илипосле стопового бита в остальных режимах, за исключением случаев, указанных в описаниибита SM20). Если прерывание от УАПП0 разрешено, то установка этого бита вызовет переходна процедуру обслуживания прерывания от УАПП0. Этот бит должен сбрасыватьсяпрограммно.213Ред. 1.4C8051F020/1/2/3Рисунок 20.9.
SBUF0: Регистр буфера данных УАПП0R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0x99Биты 7-0: SBUF0.[7:0]: Биты (7-0) буфера данных УАПП0 (СЗР - МЗР)На самом деле именем SBUF0 обозначаются два регистра: буфер передатчика и буферприемника. Когда данные помещаются в регистр SBUF0, они записываются в буферпередатчика и сохраняются для последовательной передачи.
Запись данных в SBUF0инициирует передачу. Когда данные извлекаются из регистра SBUF0, они считываются избуфера приемника.Рисунок 20.10. SADDR0: Регистр адреса ведомого УАПП0R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xА9Биты 7-0: SADDR0.[7:0]: Адрес ведомого УАПП0.Содержимое этого регистра используется для определения адреса ведомого УАПП0.
РегистрSADEN0 является битовой маской, которая определяет, какие биты регистра SADDR0 будутучаствовать в сравнении с принятым адресом: в сравнении участвуют только те биты регистраSADDR0, которым соответствуют биты регистра SADEN0, установленные в 1; состояниеостальных бит регистра SADDR0 «не имеет значения» и в сравнении они не участвуют.Рисунок 20.11. SADEN0: Регистр разрешения адреса ведомого УАПП0R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xВ9Биты 7-0: SADEN0.[7:0]: Биты разрешения адреса ведомого УАПП0.Биты этого регистра разрешают соответствующим битам регистра SADDR0 участвовать вопределении адреса ведомого УАПП0.0: Соответствующий бит регистра SADDR0 «не имеет значения».1: Соответствующий бит регистра SADDR0 участвует в сравнении с принятым адресом.Ред.
1.4214C8051F020/1/2/321. УАПП1УАПП1 (универсальный асинхронный приемопередатчик) представляет собой усовершенствованныйпоследовательный порт, обеспечивающий определение ошибок формата и аппаратное распознавание адреса.УАПП1 может функционировать в полнодуплексном асинхронном или полудуплексном синхронном режимах,а также полностью поддерживает организацию связи с несколькими МК. Во всех режимах принимаемыеданные буферизуются в регистре временного хранения. Это позволяет УАПП1 начать прием второго входящегобайта данных до того, как программа закончит чтение предыдущего байта данных. Флаг переполненияприемника устанавливается в 1, если следующий принятый байт данных фиксируется в буфере приемника доокончания чтения ранее принятого байта.С работой УАПП1 связаны следующие регистры специального назначения: регистр управленияУАПП1 (SCON1) и буфер данных УАПП1 (SBUF1).
Одна и та же ячейка памяти, адресуемая как SBUF1,обеспечивает доступ и к регистру передатчика, и к регистру приемника. Операция чтения обращается крегистру приемника, а операция записи обращается к регистру передатчика автоматически.С модулем УАПП1 можно работать как в режиме опроса, так и с использованием прерываний. УАПП1имеет два источника прерываний:- флаг прерываний от передатчика TI1 (SCON1.1), устанавливается, когда передача байта данных завершена;- флаг прерываний от приемника RI1 (SCON1.0), устанавливается, когда завершен прием байта данных.Флаги прерываний от УАПП1 не сбрасываются аппаратно при переходе к процедуре обслуживанияпрерывания.
Они должны сбрасываться программно. Это позволяет программе определить причину,вызвавшую прерывание от УАПП1 (завершение передачи или завершение приема).Рисунок 21.1. Структурная схема УАПП1SFR шинаЗаписьв SBUFTB8SBUFSETD(сдвиговый регистрпередатчика)QCLRTXМатрицаДетектор нуляГенерациябита STOPСтартСдвигДанныеУправление передатчиком (Tx)Тактирование TxЛогикагенератораскоростипередачиданныхУАПППередачаПрерывание TxSCONTIПрерывание отпоследовательногопорта (УАПП0/1)S S S R T R T RM M M E B B I I0 1 2 N 8 8RIТактирование RxВключение Прерывание RxУправление приемником (Rx)СтартСдвигОпределениеошибки форматаЗагрузкаSBUFСовпадениеадресаПортввода/вывода0x1FFВходной регистрсдвига (9 бит)Загрузка SBUFRB8ДетекторсовпаденияSBUF(Защелка приемника)SADDRSADENЧтениеSBUFSFR шина215RXРед.
1.4МатрицаC8051F020/1/2/321.1. Режимы работы УАПП1УАПП1 поддерживает четыре режима работы (один синхронный и три асинхронных), задаваемыебитами конфигурации в регистре SCON1. Эти четыре режима различаются скоростью передачи данных ипротоколом обмена. В табл.21.1 приведены основные характеристики режимов работы УАПП1.Таблица 21.1. Режимы работы УАПП1РежимСинхронизацияСкорость передачи данных0123СинхронныйАсинхронныйАсинхронныйАсинхронныйSYSCLK/12Переполнение Таймера 1 или Таймера 4SYSCLK/32 или SYSCLK/64Переполнение Таймера 1 или Таймера 4Битыданных8899БитыСтарт/СтопНет1 Старт, 1 Стоп1 Старт, 1 Стоп1 Старт, 1 Стоп21.1.1. Режим 0: Синхронный режимРежим 0 обеспечивает синхронный, полудуплексный обмен данными. Последовательные данныепередаются и принимаются через внешний вывод RX1. Через внешний вывод TX1 выдаются импульсы сдвигакак для передачи, так и для приема данных.
МК должен быть ведущим, т.к. он генерирует импульсы сдвига дляпередачи данных в обоих направлениях (см. рис.21.2).Передача данных начинается, когда происходит запись байта данных в регистр SBUF1. Передаютсявосемь бит данных, МЗР вперед (см. временные диаграммы на рис.21.3). Флаг прерывания от передатчика TI1(SCON1.1) устанавливается в 1 в конце восьмого битового интервала. Прием данных начинается, когдаустанавливается в 1 флаг включения приемника REN1 (SCON1.4) и сбрасывается флаг прерывания отприемника RI1 (SCON1.0). Спустя один цикл после приема восьмого бита устанавливается флаг RI1 и приемзавершается до программного сброса бита RI1.
При установке флагов TI1 или RI1 будет сгенерированопрерывание, если оно разрешено.Скорость передачи данных в режиме 0 равна 1/12 системной тактовой частоты. В режиме 0 вывод RX1настраивается как выход с открытым стоком и обычно требуется подключить к этому выводу внешнийподтягивающий резистор.Рисунок 21.2. Пример использования УАПП1 в режиме 0TXCLKRXDATAC8051FxxxРегистрсдвига8 дополнительных выходовРисунок 21.3. Временные диаграммы УАПП1 в режиме 0ПЕРЕДАЧА В РЕЖИМЕ 0RX (выход данных)D0D1D2D3D4D5D6D7TX (выход такт. имп-в)ПРИЕМ В РЕЖИМЕ 0RX (вход данных)D0D1D2D3D4D5D6D7TX (выход такт. имп-в)Ред.
1.4216C8051F020/1/2/321.1.2. Режим 1: 8-разрядный УАПП0, изменяемая скорость передачи данныхРежим 1 обеспечивает стандартный асинхронный полнодуплексный обмен данными с использованием10 бит для передачи одного байта данных: один стартовый бит, восемь бит данных (МЗР вперед) и одинстоповый бит. Данные передаются через внешний вывод TX1 и принимаются через внешний вывод RX1. Приприеме в регистре SBUF1 сохраняются восемь бит данных, а бит RB81 (SCON1.2) принимает значениестопового бита.Передача данных начинается, когда происходит запись байта данных в регистр SBUF1. Флагпрерывания от передатчика TI1 (SCON1.1) устанавливается в 1 в конце передачи (в начале передачи стоповогобита).
Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN1(SCON1.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF1, еслисоблюдаются следующие условия: RI1 должен быть равен лог.0, и, если SM21 равен лог.1, то стоповый битдолжен быть равен лог.1.Если эти условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF1, стоповый битсохраняется в бите RB81 и устанавливается в 1 флаг RI1. Если эти условия не соблюдаются, то SBUF1 и RB81не будут загружаться и флаг RI1 не устанавливается. При установке флагов TI1 или RI1 будет сгенерированопрерывание, если оно разрешено.Рисунок 21.4. Временные диаграммы УАПП1 в режиме 1Лог.1Лог.0БитСТАРТD0D1D2D3D4D5D6D7БитСТОПБИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТАСкорость передачи данных в режиме 1 определяется функцией от переполнения таймера, как показанов уравнениях 21.1 и 21.2.
Для задания скорости передачи данных УАПП1 может использоваться либо Таймер 1,работающий в режиме 8-разрядного таймера/счетчика с автоперезагрузкой, либо Таймер 4, работающий врежиме генератора скорости передачи данных (следует иметь ввиду, что источники тактовых импульсов дляпередатчика (ТХ1) и приемника (RX1) выбираются по отдельности). При каждом переполнении таймера (припереходе от всех единиц - 0xFF для Таймера 1 и 0xFFFF для Таймера 4 – к нулю) тактовый импульс посылаетсясхеме генератора скорости передачи данных.Таймер 4 выбирается в качестве генератора скорости передачи данных для передатчика (ТХ) и/илиприемника (RX) установкой в 1 бит TCLK1 (T4CON.4) и/или RCLK1 (T4CON.5) соответственно (подробнаяинформация о настройке таймеров приведена в разделе 22). Когда либо TCLK1, либо RCLK1 установлены в 1,Таймер 4 переводится в режим генератора скорости передачи данных и настраивается на использованиесигнала SYSCLK/2 в качестве источника тактового сигнала.
Если биты TCLK1 и/или RCLK1 сброшены в 0, тоТаймер 1 функционирует в качестве генератора скорости передачи данных для схем передатчика (ТХ) и/илиприемника (RX) соответственно.Ниже приведены уравнения, определяющие скорость передачи данных в режиме 1:Уравнение 21.1. Скорость передачи данных в режиме 1, задаваемая с помощью Таймера 1.Mode 1 Baud Rate = (2SMOD1 / 32) * SYSCLK*(12(T1M – 1) / (256 – TH1)).Уравнение 21.2. Скорость передачи данных в режиме 1, задаваемая с помощью Таймера 4.Mode 1 Baud Rate = SYSCLK / [32 * (65536 – [RCAP4H:RCAP4L]) ].В этих уравнениях используются следующие обозначения:Т1М – бит выбора коэффициента деления системной тактовой частоты для Таймера 1 (в регистреCKCON).217Ред. 1.4C8051F020/1/2/3TH1 – 8-разрядное значение регистра перезагрузки Таймера 1.SMOD1 – бит удвоения скорости передачи данных УАПП1 (в регистре PCON).RCAP4H:RCAP4L – 16-разрядное значение регистра перезагрузки Таймера 4.21.1.3.