F60-67 (1041605), страница 49
Текст из файла (страница 49)
Прием данных начинается, когдаустанавливается в 1 флаг включения приемника REN0 (SCON0.4), а флаг прерывания от приемника RI0(SCON0.0) сброшен в 0. Спустя один цикл после приема восьмого бита устанавливается флаг RI0 и приемзавершается до программного сброса бита RI0. При установке флагов TI0 или RI0 будет сгенерированопрерывание, если оно разрешено.Скорость передачи данных в режиме 0 равна 1/12 системной тактовой частоты. В режиме 0 вывод RX0настраивается как выход с открытым стоком и обычно требуется подключить к этому выводу внешнийподтягивающий резистор.Ред. 1.2266C8051F060/1/2/3/4/5/6/7Рисунок 22.2.
Временные диаграммы УАПП0 в режиме 0ПЕРЕДАЧА В РЕЖИМЕ 0RX (выход данных)D0D1D2D3D4D5D6D7TX (выход такт. имп-в)ПРИЕМ В РЕЖИМЕ 0RX (вход данных)D0D1D2D3D4D5D6D7TX (выход такт. имп-в)Рисунок 22.3. Пример использования УАПП0 в режиме 0TXCLKRXDATAC8051FxxxРегистрсдвига8 дополнительных выходов22.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 будет сгенерированопрерывание, если оно разрешено.Рисунок 22.4. Временные диаграммы УАПП0 в режиме 1Лог.1Лог.0БитСТАРТD0D1D2D3БИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТА267Ред. 1.2D4D5D6D7БитСТОПC8051F060/1/2/3/4/5/6/7Скорость передачи данных в режиме 1 определяется функцией от переполнения таймера. Для заданияскорости передачи данных УАПП0 может использоваться либо Таймер 1, работающий в режиме 8-разрядноготаймера/счетчика с автоперезагрузкой, либо Таймеры 2, 3 или 4, работающие в таймера/счетчика савтоперезагрузкой (следует иметь ввиду, что источники тактовых импульсов для передатчика (ТХ0) иприемника (RX0) выбираются по отдельности).
При каждом переполнении таймера (при переходе от всехединиц - 0xFF для Таймера 1 и 0xFFFF для Таймеров 2, 3 и 4 – к нулю) схеме генератора скорости передачиданных посылается тактовый импульс.Таймеры 1, 2, 3 или 4 выбираются в качестве генератора скорости передачи данных с помощьюрегистра SSTA0 (см.
рис.22.9). Скорость передатчика определяется битами S0TCLK1 и S0TCLK0. Скоростьприемника определяется битами S0RCLK1 и S0RCLK0.Если в качестве генератора скорости передачи данных выбран Таймер 1, то бит SMOD0 (SSTA0.4)определяет, делить или не делить частоту переполнения таймера 1 на два. При сбросе SMOD0 = 0, такимобразом по умолчанию выбрана пониженная скорость передачи данных. Уравнение 22.1 показываетзависимость частоты передачи данных, генерируемой Таймером 1, от значения бита SMOD0.Уравнение 22.1. Скорость передачи данных в режиме 1, задаваемая с помощью Таймера 1.Если SMOD0 = 0:Mode 1 Baud Rate = 1 / 32 * (Частота переполнения Таймера 1).Если SMOD0 = 1:Mode 1 Baud Rate = 1 / 16 * (Частота переполнения Таймера 1).Частота переполнения Таймера 1 определяется источником тактирования Таймера 1 (T1CLK) изначением перезагрузки (TH1).
Выбор частоты T1CLK описан в разделе 24.1. Частота переполнения Таймера 1рассчитывается в соответствии с уравнением 22.2.Уравнение 22.2. Частота переполнения Таймера 1.Частота переполнения Таймера 1 = T1CLK / (256 – TH1)Если в качестве генератора скорости передачи данных выбраны Таймеры 2, 3 или 4, то скоростьпередачи данных определяется в соответствии с уравнением 22.3.Уравнение 22.3. Скорость передачи данных в режиме 1, задаваемая с помощью Таймеров 2, 3, 4.Mode 1 Baud Rate = 1 / 16 * (Частота переполнения Таймера 2,3,4).Частота переполнения Таймеров 2, 3 или 4 определяется источником тактирования таймера (TnCLK) и16-разрядным значением перезагрузки, содержащимся в регистре RCAPn (n = 2, 3 или 4), в соответствии суравнением 22.4.Уравнение 22.4.
Частота переполнения Таймеров 2, 3 или 4.Частота переполнения Таймеров 2, 3 или 4 = TnCLK / (65536 – RCAPn)Ред. 1.2268C8051F060/1/2/3/4/5/6/722.1.3. Режим 2: 9-разрядный УАПП0, фиксированная скорость передачи данныхРежим 2 обеспечивает асинхронный полнодуплексный обмен данными с использованием 11 бит дляпередачи одного байта: один стартовый бит, восемь бит данных (МЗР вперед), программируемый девятый битданных и один стоповый бит. Режим 2 поддерживает организацию связи с несколькими МК(мультипроцессорное взаимодействие) и аппаратное распознавание адреса (см.
раздел 22.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, какописано в разделе 22.2.Если описанные выше условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF0,девятый бит данных сохраняется в бите RB80 и устанавливается в 1 флаг RI0. Если эти условия несоблюдаются, то SBUF0 и RB80 не будут загружаться и флаг RI0 не будет устанавливаться. При установкефлагов TI0 или RI0 будет сгенерировано прерывание, если оно разрешено.Скорость передачи данных в режиме 2 будет равна SYSCLK/32 или SYSCLK/64 в зависимости отзначения бита SMOD0 регистра SSTA0:Уравнение 22.5.
Скорость передачи данных в режиме 2Mode 2 Baud Rate = 2SMOD0 * (SYSCLK / 64).Рисунок 22.5. Временные диаграммы УАПП в режимах 2 и 3Лог.1Лог.0БитСТАРТD0D1D2D3БИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТА269Ред. 1.2D4D5D6D7D8БитСТОПC8051F060/1/2/3/4/5/6/7Рисунок 22.6. Пример использования УАПП в режимах 1, 2 и 3RS-232LEVELXLTRRS-232TXRXC8051FxxxORTXTXRXRXMCUC8051Fxxx22.1.4. Режим 3: 9- разрядный УАПП, различная скорость передачи данныхВ режиме 3 используется протокол передачи данных, как в режиме 2, и генерация скорости передачиданных, как в режиме 1. В режиме 3 передаются 11 бит: один стартовый бит, восемь бит данных (МЗР вперед),программируемый девятый бит данных и один стоповый бит.
Скорость передачи данных определяетсяпереполнением Таймера 1 или Таймеров 2, 3 или 4 в соответствии с уравнениями 22.1. и 22.3. Поддерживаютсяаппаратное распознавание адреса и организация связи с несколькими МК, как описано в разделе 22.2.Ред. 1.2270C8051F060/1/2/3/4/5/6/722.2. Поддержка связи с несколькими МКРежимы 2 и 3 поддерживают мультимикроконтроллерный обмен данными между ведущим МК иодним или несколькими ведомыми МК, для чего применяется встроенная схема аппаратного распознаванияадреса и особым образом используется девятый бит данных. Когда ведущий МК хочет передать данные одномуили нескольким ведомым МК, он прежде всего посылает байт адреса, чтобы выбрать конкретное(-ые)устройство(-а).
Адресный байт отличается от байта данных тем, что его девятый бит равен лог.1; в байтеданных девятый бит всегда равен лог.0. УАПП0 будет считать ”действительными” (т.е. способными вызватьпрерывание) два типа адресов: (1) маскированный адрес и (2) широковещательный адрес в любой моментвремени. Оба типа адресов описаны ниже.22.2.1. Установка маскированного адресаАдрес УАПП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.
После возникновения такогопрерывания ведомый сбросит в 0 бит SM20, чтобы разрешить генерацию прерываний при полученииследующих байтов данных. После того, как все сообщение получено, адресованный ведомый МК устанавливаетв 1 бит SM20, чтобы игнорировать все посылки до получения следующего адресного байта. Пока SM20 = 1,УАПП0 игнорирует все байты, значение которых не соответствует адресу УАПП0 и 9-й бит которых не равенлог.