F40-43a (1041604), страница 49
Текст из файла (страница 49)
имп-в)ПРИЕМ В РЕЖИМЕ 0RX (вход данных)D0D1D2D3D4D5D6D7TX (выход такт. имп-в)Рисунок 21.3. Пример использования УАПП0 в режиме 0TXCLKRXDATAC8051FxxxРегистрсдвига8 дополнительных выходовРед. 1.3254C8051F040/1/2/321.1.2. Режим 1: 8-разрядный УАПП0, изменяемая скорость передачи данныхРежим 1 обеспечивает стандартный асинхронный полнодуплексный обмен данными с использованием10 бит для передачи одного байта данных: один стартовый бит, восемь бит данных (МЗР вперед) и одинстоповый бит. Данные передаются через внешний вывод TX0 и принимаются через внешний вывод RX0. Приприеме в регистре SBUF0 сохраняются восемь бит данных, а бит RB80 (SCON0.2) принимает значениестопового бита.Передача данных начинается, когда происходит запись байта данных в регистр SBUF0.
Флагпрерывания от передатчика TI0 (SCON0.1) устанавливается в 1 в конце передачи (в начале передачи стоповогобита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN0(SCON0.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF0, еслисоблюдаются следующие условия: RI0 должен быть равен лог.0, и, если SM20 равен лог.1, то стоповый битдолжен быть равен лог.1.Если эти условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF0, стоповый битсохраняется в бите RB80 и устанавливается в 1 флаг RI0. Если эти условия не соблюдаются, то SBUF0 и RB80не будут загружаться и флаг RI0 не устанавливается.
При установке флагов TI0 или RI0 будет сгенерированопрерывание, если оно разрешено.Рисунок 21.4. Временные диаграммы УАПП0 в режиме 1Лог.1Лог.0БитСТАРТD0D1D2D3D4D5D6D7БитСТОПБИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТАСкорость передачи данных в режиме 1 определяется функцией от переполнения таймера, как показанов уравнениях 21.2 и 21.3. Для задания скорости передачи данных УАПП0 может использоваться либо Таймер 1,работающий в режиме 8-разрядного таймера/счетчика с автоперезагрузкой, либо Таймеры 2, 3 или 4,работающие в таймера/счетчика с автоперезагрузкой (следует иметь ввиду, что источники тактовыхимпульсов для передатчика (ТХ0) и приемника (RX0) выбираются по отдельности). При каждом переполнениитаймера (при переходе от всех единиц - 0xFF для Таймера 1 и 0xFFFF для Таймера 2 – к нулю) тактовыйимпульс посылается схеме генератора скорости передачи данных.Таймеры 1, 2, 3 или 4 выбираются в качестве генератора скорости передачи данных с помощьюрегистра SSTA0 (см.
рис.21.9). Скорость передатчика определяется битами S0TCLK1 и S0TCLK0. Скоростьприемника определяется битами S0RCLK1 и S0RCLK0.Таймер 2 выбирается в качестве генератора скорости передачи данных для передатчика (ТХ) и/илиприемника (RX) установкой в 1 бит TCLK0 (T2CON.4) и/или RCLK0 (T2CON.5) соответственно (подробнаяинформация о настройке таймеров приведена в разделе 22).
Когда либо TCLK0, либо RCLK0 установлены в 1,Таймер 2 переводится в режим генератора скорости передачи данных и настраивается на использованиесигнала SYSCLK/2 в качестве источника тактового сигнала. Если биты TCLK0 и/или RCLK0 сброшены в 0, тоТаймер 1 функционирует в качестве генератора скорости передачи данных для схем передатчика (ТХ) и/илиприемника (RX) соответственно.Ниже приведены уравнения, определяющие скорость передачи данных в режиме 1:Уравнение 21.2.
Скорость передачи данных в режиме 1, задаваемая с помощью Таймера 1.Mode 1 Baud Rate = (2SMOD0 / 32) * SYSCLK*(12(T1M – 1) / (256 – TH1)).Уравнение 20.2. Скорость передачи данных в режиме 1, задаваемая с помощью Таймеров 2, 3, 4.Mode 1 Baud Rate = SYSCLK / [16 * (65536 – [RCAPnH:RCAPnL]) ].255Ред. 1.3C8051F040/1/2/3В этих уравнениях используются следующие обозначения:Т1М – бит выбора коэффициента деления системной тактовой частоты для Таймера 1 (бит 4 регистраCKCON).TH1 – 8-разрядное значение регистра перезагрузки Таймера 1.SMOD0 – бит удвоения скорости передачи данных УАПП0 (в регистре PCON).RCAPnH:RCAPnL – 16-разрядное значение регистра перезагрузки Таймеров 2, 3 или 4.21.1.3. Режим 2: 9-разрядный УАПП0, фиксированная скорость передачи данныхРежим 2 обеспечивает асинхронный полнодуплексный обмен данными с использованием 11 бит дляпередачи одного байта: один стартовый бит, восемь бит данных (МЗР вперед), программируемый девятый битданных и один стоповый бит.
Режим 2 поддерживает организацию связи с несколькими МК и аппаратноераспознавание адреса (см. раздел 21.2). При передаче значение девятого бита данных определяется значениембита TB80 (SCON0.3). Оно может соответствовать значению флага четности Р регистра PSW илииспользоваться для организации связи с несколькими МК. При приеме значение девятого бита сохраняется вбите RB80 (SCON0.2), а стоповый бит игнорируется.Передача данных начинается, когда происходит запись байта данных в регистр SBUF0.
Флагпрерывания от передатчика TI0 (SCON0.1) устанавливается в 1 в конце передачи (в начале передачи стоповогобита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN0(SCON0.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF0, еслиRI0 = 0 и если соблюдается одно из следующих условий:1.2.SM20 = 0SM20 = 1, принятый 9-й бит равен лог. ‘1’, принятый адрес соответствует адресу УАПП0, какописано в разделе 21.2.Если описанные выше условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF0,девятый бит данных сохраняется в бите RB80 и устанавливается в 1 флаг RI0. Если эти условия несоблюдаются, то SBUF0 и RB80 не будут загружаться и флаг RI0 не будет устанавливаться.
При установкефлагов TI0 или RI0 будет сгенерировано прерывание, если оно разрешено.Скорость передачи данных в режиме 2 будет равна SYSCLK/32 или SYSCLK/64 в зависимости отзначения бита SMOD0 регистра SSTA0:Уравнение 21.4. Скорость передачи данных в режиме 2Mode 2 Baud Rate = 2SMOD0 * (SYSCLK / 64).Рисунок 21.5.
Временные диаграммы УАПП в режимах 2 и 3Лог.1Лог.0БитСТАРТD0D1D2D3D4D5D6D7D8БитСТОПБИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТАРед. 1.3256C8051F040/1/2/3Рисунок 21.6. Пример использования УАПП в режимах 1, 2 и 3RS-232LEVELXLTRRS-232TXRXC8051FxxxORTXTXRXRXMCUC8051Fxxx21.1.4. Режим 3: 9- разрядный УАПП, различная скорость передачи данныхВ режиме 3 используется протокол передачи данных, как в режиме 2, и генерация скорости передачиданных, как в режиме 1. В режиме 3 передаются 11 бит: один стартовый бит, восемь бит данных (МЗР вперед),программируемый девятый бит данных и один стоповый бит.
Скорость передачи данных определяетсяпереполнением Таймера 1 или Таймеров 2, 3 или 4 в соответствии с уравнениями 21.2. и 21.3. Поддерживаютсяаппаратное распознавание адреса и организация связи с несколькими МК, как описано в разделе 21.2.21.2. Поддержка связи с несколькими МКРежимы 2 и 3 поддерживают мультимикроконтроллерный обмен данными между ведущим МК иодним или несколькими ведомыми МК, для чего применяется встроенная схема аппаратного распознаванияадреса и особым образом используется девятый бит данных.
Когда ведущий МК хочет передать данные одномуили нескольким ведомым МК, он прежде всего посылает байт адреса, чтобы выбрать конкретное(-ые)устройство(-а). Адресный байт отличается от байта данных тем, что его девятый бит равен лог.1; в байтеданных девятый бит всегда равен лог.0. УАПП0 будет считать”действительными” (т.е. способными вызватьпрерывание) два типа адресов: (1) маскированный адрес и (2) широковещательный адрес в любой моментвремени.
Оба типа адресов описаны ниже.21.3. Установка маскированного адресаАдрес УАПП0 определяется двумя SFR регистрами: SADDR0 (адрес последовательного порта) иSADEN0 (разрешение адреса последовательного порта). Регистр SADEN0 устанавливает битовую маску дляадреса, хранимого в регистре SADDR0: биты, установленные в 1 в регистре SADEN0, соответствуют битамрегистра SADDR0, которые участвуют в сравнении с принятым байтом адреса; биты, сброшенные в 0 врегистре SADEN0, соответствуют битам регистра SADDR0, состояние которых «не имеет значения» присравнении с принятым байтом адреса.Пример 1, Ведомый №1Пример 2, Ведомый №2Пример 3, Ведомый №3SADDR0= 00110101SADEN0= 00001111Адрес УАПП0 = хххх0101SADDR0= 00110101SADEN0= 11110011Адрес УАПП0 = 0011хх01SADDR0= 00110101SADEN0= 11000000Адрес УАПП0 = 00ххххххУстановка в 1 бита SM20 (SCON0.5) настраивает модуль УАПП0 таким образом, что при получениистопового бита УАПП0 будет генерировать прерывание только в том случае, если девятый бит равен лог.1(RB80 = 1) и принятый байт данных соответствует адресу ведомого УАПП0.