Обращение к портам возможно только по прямому адресу. Все разряды портов находятся в битовом пространстве

При работе в режиме микроконтроллера порты однонаправленные. Каждый бит порта может быть настроен как на ввод (PX.Y=1), так и на вывод. По сбросу в РгЗ записывается код 0FFh, то есть порты Р0-Р2 настраиваются на ввод, а Р3 – на выполнение системных функций. В режиме микропроцессора порт Р0- двунаправленный.

Для чтения данных из порта или регистра защелки используются различные команды. Чтение РгЗ осуществляется командами «чтение-модификация-запись», при выполнении которых команда считывает состояние РгЗ, при необходимости модифицирует полученное значение и записывает результат обратно в РгЗ:

ORL Px, A;

XRL Px, A

ANL Px, A

INC Px

DEC Px

DJNZ Px, rel

Для чтения отдельных битов используются команды:

JBC Px.y, SETB Px.y

CPL Px.y, MOV Px.y, C


Во всех случаях, когда операндом и регистром назначения является порт или бит порта, команды считывают информацию с выходов РгЗ, а не с внешних контактов выводов порта. При чтении регистра-защелки данные передаются через D2.

Если порт служит операндом-источником, то данные считываются с внешних выводов порта. Чтение с внешних выводов порта может быть выполнено командами:

MOV (A, @Ri, Rn, ad), Px

ADD A, Px

Чтение информации с выходов РгЗ, а не с внешних контактов позволяет исключить в ряде случаев неправильную интерпретацию уровня напряжения на выводе порта. Например, при соединении вывода порта с базой n-p-n транзистора и подаче лог. 1, транзистор открывается и чтение состояния внешнего вывода покажет лог.0, так как на контакте порта присутствует напряжение база-эммитер транзистора (0,7В). Чтение же РгЗ подтвердит подачу лог. 1.

Запись данных в порт осуществляется командами:

MOV Px, (A, Rn, @R0, #d).

Порты Р0, Р1, Р2, Р3 в зависимости от особенности применения могут реализовать разные функции.

Спецификация линий портов.

Таблица 3.

Имя порта Альтернативная функция Адрес регистров данных
P0 Мультиплексированная шина адрес/данные (при использовании внешней памяти данных или программ) 80h
P1 90h
P2 Шина адреса – старший байт (при использовании внешней памяти данных или программ) A0h
P3 Каждая линия специфицирована индивидуально: P3.0 – вход приемника последовательного порта RXD; P3.1 – выход передатчика последовательного порта TXD; P3.2 – вход внешнего запроса INT0; P3.3 – вход внешнего запроса INT1; P3.4 – внешний вход таймера T0; P3.5 ‑ внешний вход таймера T1; P3.6 – сигнал шины управления WR; P3.7 – сигнал шины управления RD. Примечание: Активным уровнем сигналов WR, RD является «0». Используются при адресации внешней памяти данных. B0h

При работе с внешней памятью порт Р0 является системным портом, через который в режиме с разделением времени передаются младший байт адреса и данные. Появление младшего байта адреса сопровождается сигналом ALE, по которому он должен быть зафиксирован во внешнем регистре.

В системном режиме управление обменом через порт Р0 выполняется командами MOVX, MOVC.

Если Р0 используется как порт общего назначения, то к выходу порта должен быть присоединен внешний «подтягивающий» резистор от источника питания +5В, так как в этом режиме транзистор Т1 закрывается.

В отличие от Р0 порты Р1-Р3 имеют встроенную нагрузку, что исключает необходимость во внешних резисторах. Порт Р2 служит для вывода старшего байта адреса при работе в системном режиме. Особенностью порта Р2 является возможность мультиплексирования на выход содержимого РгЗ или старшего байта адреса. При работе в режиме адресной шины содержимое РгЗ сохраняется и поступает на выводы порта в тех машинных циклах, когда нет обращения к внешней памяти. При обращении к внешней памяти на выход порта выводится информация из регистра адреса DPTR или из программного счетчика РС по командам MOVC и MOVX. Исключение составляют команды MOVX A, @Ri, и MOVX @Ri, A, при выполнении которых на выходе находится содержимое регистра-защелки.

Нагрузочная способность Р0 ‑ два входа ТТЛ, у остальных ‑ один.

Р1 ‑ порт общего назначения и особенностей не имеет.

Р3 ‑ при записи в Рг3 «1» выполняет системные функции. Спецификация Р3 приведена в таблице 3. Если в бит РгЗ порта Р3 записан «0», то на выходе порта фиксируется «0».

При использовании порта Р3 необходимо учитывать функциональные особенности каждого входа. T1, T0, INT1, INT0 – входные линии. Если не используются внешние прерывания и/или счетчики, то назначение этих линий определяет пользователь. RD, WR ‑ выходные линии, сигналы на которых формируются только при выполнении команд MOVX, и так далее.

Использование портов в системном режиме иллюстрирует рисунок 10, на котором U – схема формирования сброса, CPU – однокристальный микроконтроллер, T – регистр младшего байта адреса, ROM – ПЗУ команд, RAM – ОЗУ данных.

Для организации взаимодействия с внешней памятью и устройствами ввода-вывода используются три типа магистральных циклов: чтение из внешней памяти данных, запись во внешнюю память данных, чтение из внешней памяти программ.

Обращение к внешней памяти данных требует двух машинных циклов. Поэтому второй импульс ALE внутри машинного цикла при обращении к внешней памяти данных не генерируется.

 
 


По срезу сигнала ALE младший байт адреса, поступающий с выводов порта P0, должен быть зафиксирован во внешнем регистре-защелке. Старший байт адреса сохраняется на выводах порта P2 в течение всего цикла и не требует внешней фиксации. Данные считываются в фазе P1 состояния S3 текущего машинного цикла. К этому моменту они должны быть заведомо установлены на шине данных.

 
 


При обращении к внутренней памяти данных сигналы RD и WR не вырабатываются.

Для обращения к внешней памяти программ используется механизм отличный от механизма обращения к памяти данных. Для чтения памяти программ используется сигнал PSEN. При этом сигналы ALE и PSEN вырабатываются дважды за машинный цикл.

 
 


Так же, как и в случае памяти данных, младший байт адреса должен быть зафиксирован во внешнем регистре по срезу сигнала ALE. Байты программы считываются в фазе P1 состояний S4 и S1 текущего машинного цикла. При обращении к внутренней памяти программ сигнал PSEN не генерируется.

При использовании сигнала ALE в качестве источника синхросигналов необходимо учитывать особенности его формирования для различных машинных циклов.

Работа с внешней памятью программ разрешена лишь при низком уровне на входе EA. При этом микроконтроллер считает, что вся память программ расположена во внешней памяти. При высоком уровне сигнала на этом входе микроконтроллер реализует цикл обращения к внешней памяти программ лишь в случае, если требуемый адрес выходит за пределы внутреннего сегмента памяти программ. Если в микросхеме «прошит» бит секретности, то уровень сигнала на входе EA фиксируется при сбросе микроконтроллера во внутренней защелке и дальнейшее его изменение не влияет на работу системы.

Счетчик/Таймер

Счетчик-таймер (СТ) предназначен для обработки внешних и внутренних событий, формирования программно-управляемых временных задержек, выполнения времязадающих функций.

В состав ОМК входят два 16 разрядных суммирующих СТ. Счетчик состоит из регистров счетчика TLi (младший байт), THi (старший байт), логики управления входными сигналами и триггера переполнения TFi. Бит TFi устанавливается при переходе счетчика из состояния «все 1» в состояние «все 0». Бит TFi располагается в битовом пространстве и доступен по прямому адресу. Обращение к TLi, THi производится раздельно по прямым адресам.

Управление работой счетчика выполняется с помощью регистра режима работы TMOD и регистра управления-статуса TCON.

Рисунок 14- Формат регистра режима счетчика / таймера TMOD

На рисунке 14:

GATE1, GATE0 – управление способом запуска СТ;

, – определяют работу СТ в качестве счетчика ( =1) или таймера ( =0);

М1, М0 ‑ задают режимы работы (см. таблицу).

Способ запуска СТ может быть аппаратный или программный. Если GATEi =1, то реализуется аппаратный запуск, при котором разрешение счета подается на вход INTi порта Р3. Предварительно должен быть установлен бит запуска счетчика TRi в регистре TCON. (i – номер счетчика-таймера). При программном запуске GATEi =0, начало счета задается установкой бита TRi =1.

В режиме таймера СТ работает от внутреннего генератора с частотой OSC/12.

При работе в режиме счетчика содержимое СТ инкрементируется под воздействием перехода из «1» в «0» внешнего сигнала, подаваемого на соответствующие входы Т0, Т1 порта Р3. Инкремент выполняется после анализа состояния «0» и «1» на входе Тi, поэтому накладываются определенные ограничения на параметры преобразуемого сигнала: уровень «0» и «1» должен продолжаться не менее OSC/12. Максимальная преобразуемая внешняя частота ‑ OSC/24.

Счетчик/таймер может быть настроен на один из 4 режимов. Режимы 0,1,2, одинаковы для обоих счетчиков и в этих режимах они полностью независимы. Работа СТ0 и СТ1 в режиме 3 различна. При этом установка СТ0 в режим 3 влияет на режимы работы СТ1.

Режим 0: режим 13-ти разрядного регистра, состоящего из TНi и 5 младших разрядов TLi.

 
 


Режим 1: режим 16-ти разрядного регистра, состоящего из THi и TLi.

 
 


Режим 2: В этом режиме СТ представляет собой устройство на основе 8-разрядного регистра TLi. При каждом переполнении TLi кроме установки флага TFi происходит автоматическая загрузка содержимого THi в TLi.

 
 


Требуемый коэффициент деления должен записываться одновременно в THi и TLi.

Принцип работы СТ в режимах 0,1,2 поясняет рисунок 15.


Рисунок 15.- Принцип работы счетчика/таймера в режимах «0, 1, 2»:

Режим 3: В этом режиме счетчик 0 функционирует как 2 независимых счетчика, а счетчик 1 заблокирован и просто сохраняет свой код (выполняет функции регистра). При этом можно настроить счетчик 1 на другие режимы.

Рисунок 16.-Принцип работы СТ в режиме 3

Режим 3 используется, если необходимо увеличить число действующих счетчиков до трех. При работе в этом режиме СТ0 разделяется на два 8-ми разрядных счетчика, сформированных на базе регистров ТН0, ТL0. Счетчик на базе ТН0 может работать только в режиме таймера, управляется битом ТR1 и формирует сигнал переполнения ТF1. Счетчик на базе TL0 особенностей в управлении не имеет (рисунок 16).

Установка СТ0 в режим 3 лишает СТ1 бита включения TR1. Поэтому СТ1 в режимах 0, 1, 2 при GATE=0 всегда включен и при переполнении в режимах 0 и 1 СТ1 обнуляется, а в режиме 2 перезагружается, не устанавливая флага, если СТ0 находится в режиме 3.

СТ1 аппаратно связан с блоком синхронизации последовательного порта. Поэтому в режимах 0, 1, 2 при переполнении СТ1 всегда вырабатывает импульс синхронизации последовательного порта.

Регистр управления и состояния TCON предназначен для формирования сигналов запуска СТ и хранения флагов их переполнения, задания типа воспринимаемого запроса и хранения флагов внешних прерываний.

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

7 6 5 4 3 2 1 0

Управление СTi Управление прерываниями

 
 


Рисунок 17.-Формат регистра TCON

На рисунке 17:

TFi - флаг переполнения СТ. Устанавливается аппаратно при переполнении счетчика/таймера, сбрасывается программно. При обслуживании прерывания сброс выполняется аппаратно.

TRi - биты управления СТ. Устанавливается/сбрасывается программно для пуска/останова;

ITi - бит управления видом сигнала запроса прерывания. При IТi=1 прoграммируется прерывание по срезу импульса запроса, при ITi=0 – по низкому уровню (i – номер входа запроса внешнего прерывания);

IEi - флаг запроса прерывания. Устанавливаются аппаратно от внешних запросов на входах INTi. Cбрасываются аппаратно, если прерывание вызвано срезом импульса запроса, или программно. Возможно программное управление этим флагом.

Для настройки счетчика/таймера на требуемый режим необходимо:

1. задать требуемый коэффициент пересчета К в регистры ТНi, ТLi. Так как счетчик суммирующий, то К= 65535 – С +1, где С требуемый коэффициент деления;

2. задать режим работы в слове TMOD;

3. при программном вводе-выводе замаскировать соответствующие прерывания от счетчика, а при использовании прерывания, их разрешить;

4. при программном запуске бит разрешения ТRi в слове TCON устанавливается в момент начала работы СТ, а при аппаратном – на стадии инициализации.

На базе СТ можно организовать преобразователи частоты, временного интервала, периода в код, генераторы и формирователи сигналов. Однако, необходимо учитывать, что TFi аппаратно недоступен, поэтому выходные сигналы следует формировать на выходах параллельных портов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: