
Рис. 6.23.Формат регистра управления питанием
В режиме 2 частота приема/передачи определяется выражением
f = (2 x fрез)/64.
Иными словами, при SMOD = 0 частота передачи равна 1/64 частоты кварцевого резонатора/рез, а при SMOD = 1 частота передачи равна 1/32 частоты кварцевого резонатора/рез.
В режимах 1 и 3 в формировании частоты приема/передачи, кроме управляющего бита SMOD, принимает участие таймер 1. При этом частота приема/передачи f зависит от частоты переполнения таймера fovlT1 и определяется следующим образом:
f = (2 x fovlT1)/32.
При использовании таймера 1 для тактирования последовательного порта прерывания от этого таймера должны быть запрещены. Таймер может быть использован как в режиме 16-разрядного таймера, так и в режиме таймера с автозагрузкой. Обычно используется режим таймера с автозагрузкой (старшая тетрада регистра TMOD = 0010В). При этом скорость передачи последовательного порта определяется выражением:
f = (2 x fрез)/(32 x 12 x (256 - TH1)).
Предельно низких скоростей приема и передачи по последовательному порту можно достичь при использовании таймера в режиме 1 (старший полубайт TMOD = 0001В). Перезагрузка 16-битного таймера должна осуществляться программным путем. При этом для того, чтобы можно было, кроме приема/передачи, выполнять дополнительные задачи, необходимо использовать механизм обработки прерываний и для этого разрешить прерывания от таймера 1.
Отметим, что для старших моделей семейства MCS-51 при использовании для синхронизации последовательного порта таймеров 1 и 2 скорости приема и передачи информации по последовательному порту могут различаться.
Режим 0. Синхронный режим работы последовательного порта
В режиме 0 последовательный порт работает как обыкновенный сдвиговый регистр. Это позволяет использовать его для увеличения количества входов/выходов устройства. Использование сдвиговых регистров для этой цели показано на рис. 6.24 и 6.26. Передача через последовательный порт начинается с записи байта в регистр данных SBUF.

Рис. 6.24.Схема подключения сдвиговых регистров к последовательному порту микроконтроллера для увеличения количества линий вывода устройства
После завершения передачи аппаратно устанавливается флаг прерывания передатчика T1. Временная диаграмма сигнала, вырабатываемого последовательным портом микроконтроллера, при передаче восьми бит данных приведена на рис. 6.25. Прием байта через последовательный порт начинается после обнуления флага готовности приемника R1. Временная диаграмма приема входной информации последовательным портом в режиме 0 приведена на рис. 6.27. Синхронный режим 0 задается записью комбинации 00 в биты SMO, SM1 регистра SCON. В этом режиме информация передается/принимается через вывод входа приемника RxD, т. е. в этом режиме работы последовательный порт работает в симплексном режиме. Через вывод TxD выдаются импульсы синхронизации, которые сопровождают каждый информационный бит. Скорость передачи в этом режиме фиксирована и составляет Fген/12. Это означает, что при частоте задающего генератора 24 МГц обмен данными осуществляется на скорости 2 Мбита/с.

Рис. 6.25. Временная диаграмма работы последовательного порта в режиме 0 после записи передаваемого байта в регистр данных SBUF

Рис. 6.26. Использование режима 0 работы последовательного порта для увеличения количества линий ввода устройства

Рис. 6.27.Временная диаграмма приема входной информации последовательным портом в нулевом режиме после обнуления флага готовности приемника R1
Для осуществления передачи байта данных достаточно занести его в буфер данных SBUF, как это показано в листинге 6.3.

Для осуществления приема байта данных достаточно настроить порт на прием в синхронном режиме (режим 0) и обнулить флаг приема R1, как это показано в примере программы, приведенной в листинге 6.4. Затем можно считывать принятый байт из регистра буфера данных SBUF.

В настоящее время разработано огромное количество микросхем, управление которыми осуществляется по синхронному последовательному порту. Это, например, синтезаторы частоты, микросхемы приемников, блоков цветности телевизоров, памяти. При этом микросхемы обычно реализуют синхронные протоколы обмена SPI или I2C. Последовательный порт микроконтроллеров семейства MCS-51, работающий в режиме 0, позволяет осуществлять обмен с такими микросхемами при минимальных программно-аппаратных затратах. Справедливости ради необходимо отметить, что в современных микросхемах этого семейства присутствуют отдельные последовательные порты, работающие по протоколу SPI или I2C. В качестве примера такой микросхемы можно назвать микроконтроллер ADuC834 фирмы Analog Devices. В таких микросхемах последовательный порт используется исключительно для связи с универсальным компьютером через стандартный последовательный интерфейс RS232 или с любым другим микроконтроллером, обладающим асинхронным последовательным портом.
Режим 1. Асинхронный 8-битовый режим
В режиме 1 последовательный порт работает в асинхронном режиме, принципы работы которого рассматривались ранее. Временная диаграмма передаваемых через последовательный порт сигналов в асинхронном последовательном режиме работы совпадает с временной диаграммой, приведенной на рис. 5.24 Режим 1 задается записью комбинации 01 в биты SM0 и SM1 регистра SCON. В асинхронном режиме информация передается через вывод выхода передатчика последовательного порта микроконтроллера TxD, а принимается через вывод входа приемника RxD, т. е. в этом режиме работы последовательный порт работает в дуплексном режиме. Это означает, что передача и прием информации могут вестись одновременно и независимо друг от друга. Скорость передачи в этом режиме задается при помощи таймера Т1.
При работе в асинхронном режиме два микроконтроллера могут обмениваться информацией между собой, используя минимум соединительных проводов между блоками или даже отдельными устройствами. Единственное условие: скорости работы передающего и принимающего последовательных портов должны быть одинаковыми. Обычно используются стандартные скорости передачи, такие как 1200 бит/с, 2400 бит/с и т. д. Для получения таких скоростей передачи обычно используется кварцевый резонатор с частотой 11,0592 МГц. Значения констант, загружаемых в таймер 1 для получения стандартных скоростей приема/передачи при использовании такого кварцевого резонатора, приведены в табл. 6.5.

В отличие от режима 0 в режиме 1 возможен обмен информацией между двумя микроконтроллерами, а не только между микроконтроллером и исполнительными микросхемами. Схема соединения двух микроконтроллеров между собой для обмена информацией приведена на рис. 6.28. Таким образом, может быть построена простейшая многопроцессорная система.