Этот порт служит для синхронного последовательного обмена данными между двумя микроконтроллерами. Порт ( 1.33) содержит два канала обмена, каждый из которых имеет регистр управления SSIOx CON (адрес 1FB1H или 1FB3H) и буферный регистр для приема и выдачи байта данных SSIOx BUF (адрес 1FB0H или 1FB2H). где х5=3 0 или 1. В состав порта входит также генератор синхросигналов (ГСС) с регистром SSIO BAUD (адрес 1FB4H).
Для работы порта используются выводы Р6.7.4 порта Р6, программируемые для выполнения специальных функций. Эти выводы служат для приема-выдачи данных SDx и синхросигналов SCx.
Программирование канала осуществляется путем загрузки регистра SSIOx CON ( 1.36а). Шесть старших битов содержимого этого регистра задают режим работы канала:
M/S# определяет функционирование канала в качестве ведущего при M/S# – 1 или ведомого при M/S# – 0;
T/R# программирует канал на передачу при T/R#!e= 1 или прием при T/R#=0;
TRT вызывает при TRT – 1 изменение направления обмена (прием на передачу и наоборот) после пересылки каждого байта;
THS позволяет при THS = 1 осуществлять квитирование обмена, как это описано ниже;
STE, ATR обеспечивают однобайтный или многобайтный обмен; для выполнения однобайтного обмена устанавливаются значения STE = 1, ATR = 0, при этом после пересылки байта устанавливается значение STE – 0 и дальнейший обмен прекращается до новой загрузки в регистр SSIOx CON; для многобайтного обмена устанавливаются значения STE e 1, ATR ж 1, при этом после пересылки очередного байта сохраняется значение STE = 1 и производится обмен следующим байтом. Два младших бита в регистре SSIOx CON указывают текущее состояние канала:
TBS – в режиме передачи (при T/R# 1) значение TBS e 1 устанавливается, если регистр SSIOx BUF не загружен, TBS = 0, если регистр загружен (готовность к передаче); в режиме приема (при T/R# – 0) значение TBS * 1
Каналы программируются для работы в качестве ведущего или ведомого. Ведущий канал выдает последовательность синхросигналов, ведомый их принимает. Каждый синхросигнал вызывает ввод очередного бита данных в буферный регистр или выдачу бита из регистра через вывод SDx ( 1.34а). При этом возможны различные варианты соединения каналов, которые обеспечивают полудуплексный ( 1.35а) или дуплексный обмен с общей ( 1.356) или раздельной (1.35в) синхронизацией приема и передачи данных.
OUF – в ведущем канале (при M/S# = 1) значение OUF – 1 устанавливается при попытке микроконтроллера обратиться к регистру SSIOx BUF до завершения пересылки; в ведомом канале (при M/S# = 0) устанавливается OUF в 1 как при обращении микроконтроллера к SSIOx BUF до конца пересылки, так и при поступлении от ведущего канала синхросигналов на прием или передачу данных в/из регистра SSIOx BUF ведомого, если этот регистр не готов к обмену (пуст в режиме передачи или заполнен в режиме приема).