В режиме 0 последовательный порт работает как обыкновенный сдвиговый регистр. Это позволяет использовать его для увеличения количества входов/выходов устройства. Использование сдвиговых регистров для этой цели показано на рис. 6.24 и 6.26. Передача через последовательный порт начинается с записи байта в регистр данных SBUF.
Рис. 6.24.
После завершения передачи аппаратно устанавливается флаг прерывания передатчика T1. Временная диаграмма сигнала, вырабатываемого последовательным портом микроконтроллера, при передаче восьми бит данных приведена на рис. 6.25. Прием байта через последовательный порт начинается после обнуления флага готовности приемника R1. Временная диаграмма приема входной информации последовательным портом в режиме 0 приведена на рис. 6.27. Синхронный режим 0 задается записью комбинации 00 в биты SMO, SM1 регистра SCON. В этом режиме информация передается/принимается через вывод входа приемника RxD, т. е. в этом режиме работы последовательный порт работает в симплексном режиме. Через вывод TxD выдаются импульсы синхронизации, которые сопровождают каждый информационный бит. Скорость передачи в этом режиме фиксирована и составляет
Рис. 6.25.
Рис. 6.26.
Рис. 6.27.
Для осуществления передачи байта данных достаточно занести его в буфер данных SBUF, как это показано в листинге 6.3.
Для осуществления приема байта данных достаточно настроить порт на прием в синхронном режиме (режим 0) и обнулить флаг приема R1, как это показано в примере программы, приведенной в листинге 6.4. Затем можно считывать принятый байт из регистра буфера данных SBUF.
В настоящее время разработано огромное количество микросхем, управление которыми осуществляется по синхронному последовательному порту. Это, например, синтезаторы частоты, микросхемы приемников, блоков цветности телевизоров, памяти. При этом микросхемы обычно реализуют синхронные протоколы обмена SPI или I2C. Последовательный порт микроконтроллеров семейства MCS-51, работающий в режиме 0, позволяет осуществлять обмен с такими микросхемами при минимальных программно-аппаратных затратах. Справедливости ради необходимо отметить, что в современных микросхемах этого семейства присутствуют отдельные последовательные порты, работающие по протоколу SPI или I2C. В качестве примера такой микросхемы можно назвать микроконтроллер ADuC834 фирмы Analog Devices. В таких микросхемах последовательный порт используется исключительно для связи с универсальным компьютером через стандартный последовательный интерфейс RS232 или с любым другим микроконтроллером, обладающим асинхронным последовательным портом.
В режиме 1 последовательный порт работает в асинхронном режиме, принципы работы которого рассматривались ранее. Временная диаграмма передаваемых через последовательный порт сигналов в асинхронном последовательном режиме работы совпадает с временной диаграммой, приведенной на рис. 5.24 Режим 1 задается записью комбинации 01 в биты SM0 и SM1 регистра SCON. В асинхронном режиме информация передается через вывод выхода передатчика последовательного порта микроконтроллера TxD, а принимается через вывод входа приемника RxD, т. е. в этом режиме работы последовательный порт работает в дуплексном режиме. Это означает, что передача и прием информации могут вестись одновременно и независимо друг от друга. Скорость передачи в этом режиме задается при помощи таймера Т1.