Модуль последовательного асинхронного интерфейса sci08

Контроллер последовательного асинхронного интерфейса SCI предназначен для об­мена с устройствами управления верхнего уровня. Модуль SCI08 обладает следующими характеристиками:

•поддерживает полнодуплексный режим обмена данными:

•реализует стандартный протокол асинхронного обмена с длиной кадра в 10 или 11 бит;

•подсистема передатчика реализует режим вставки бита паритета, подсистема приемни­ка автоматически контролирует соблюдение логики паритета в принятом байте данных;

•позволяет программно настраивать частоту обмена, причем в формировании сетки ча­
стот модуль таймера TIM08 не задействован; частота обмена программируется в соот­
ветствии с формулой

модуль последовательного асинхронного интерфейса sci08 - student2.ru

где NP= 1, 3,4,13; NS = 2n, n = 0 ÷7; максимальная скорость обмена составляет 131 Кбит/с;

•имеет независимые биты разрешения работы приемника и передатчика;

•генерирует запросы на прерывание с раздельными векторами по окончании передачи
байта, завершению приема очередного байта и при диагностировании ошибок приема
байта;

•генерирует 4 флага нарушения режима работы: при переполнении приемника, при возникновении шума на линии в процессе приема, при нарушении формата принимаемого кадра, при нарушении логики паритета; каждое из перечисленных событий формирует запрос на прерывание; реализуется раздельное маскирование всех указанных событий нарушения режима работы;

•имеет встроенные аппаратные средства для организации работы в локальной сети;

•позволяет реализовать «замкнутый» режим работы, при котором передаваемые данные без внешних коммутаций поступают на вход приемника;

•имеет опцию изменения полярности передаваемых данных.

Контроллер SCI08 обслуживается двумя выводами: TxD - линия передачи данных; RxD - линия приема данных. Обслуживание модуля SCI08 является альтернативной функцией линий порта РТЕ (см. рис. 4.44). Если бит разрешения работы модуля ENSCI в регистре SCC1 установлен, то независимо от значения соответствующих битов регистра, направления передачи порта ввода/вывода, его линии назначаются для работы в составе контроллера SCI08.

Принцип действия модуля SCI08 аналогичен рассмотренному принципу действия
модуля типа UART. По сравнению с рассмотренным ранее последовательным портом
МК MCS-51 модуль SCI08 отличает значительно более сложная функциональная схема,
которая реализует логику паритета, а также диагностирует пять типов ошибок приема,
позволяя существенно повысить надежность обмена данными. Соответственно увеличи­лось и число регистров специальных функций, которые обслуживают модуль. Однако протоколы обмена и базовые алгоритмы функционирования модуля остались неизмен­ными. Аппаратные средства модуля SCI08 делят на две подсистемы: приемника и пере­датчика. Основу каждой подсистема составляют сдвиговый регистр и буферный регистр
данных (см. рис. 4.19).

Различают два состояния подсистемы передатчика:

1)активное состояние или состояние передачи данных, которое характеризуется периодическим появлением на линии TxD сигнала низкого логического уровня; даже если все биты данных передаваемого кадра равны 1, то линия TxD будет находиться в «0» в течение интервала передачи стартового бита; в состоянии передачи данных в буферном регистре или в сдвиговом регистре обязательно присутствуют еще не переданные данные;

2)состояние ожидания (IDLE), которое характеризуется наличием сигнала высокого
логического уровня на линии TxD в течение не менее 10 или 11 тактов работы передатчика (для 10- и 11-битового кадра соответственно); передатчик переходит в состояние ожидания, если в буферном регистре данных и в сдвиговом регистре новые данные для передачи отсутствуют.

Передача данных от МК к другому устройству инициируется посредством записи бай­та данных в буферный регистр передатчика по адресу регистра данных SCDR. Аппарат­ные средства передатчика загружают содержимое буферного регистра данных в сдвиго­вый регистр. Одновременно устанавливается флаг SCTE (флаг очистки регистра буфе­ра данных в регистре SCS1), который информирует МК о том, что буферный регистр передатчика пуст, и в него могут быть загружены новые данные. Если следующий байт данных для передачи будет загружен в буферный регистр SCDR до завершения переда­чи предыдущего байта, то нарушения в работе передатчика не произойдет. Второй байт данных будет сохраняться в буферном регистре до тех пор, пока передача предыдущего байта не будет завершена. Следует иметь в виду, что копирование содержимого буфер­ного регистра в сдвиговый регистр под управлением аппаратных средств не сопровож­дается автоматическим началом передачи этого байта данных. Процесс передачи ново­го байта из сдвигового регистра на линию TxD начнется только после того, как бит SCTE будет сброшен. Для достижения последнего необходимо выполнить две операции:

1)прочитать регистр состояния SCS1 при установленном бите SCTE;

2)записать в регистр буфера передатчика по адресу SCDR новый байт данных.

Тогда под управлением генератора скорости передачи GT биты предыдущего байта данных начнут последовательно передаваться из сдвигового регистра на вывод TxD.

После завершения передачи пакета обмена, когда в сдвиговом и буферном регист­рах не осталось данных для передачи, устанавливается в «1» бит ТС. Флаги очистки буфера данных SCTE и окончания передачи ТС имеют независимое маскирование (биты SCT1E и TCIE регистра SCC2 соответственно). Если прерывания по этим запросам раз­решены, то любой из триггеров генерирует запрос на прерывание. Рассматриваемые запросы объединяются по «ИЛИ» и обслуживаются по единому вектору прерывания от передатчика модуля SCI08 (см. табл. 4.31).

Формат кадра передаваемых данных определяется значением бита М в регистре уп­равления SCC1. Если М = 0, то обмен осуществляется с использованием 10-битового кадра . Сдвиговый регистр передатчика автоматически настраивается на 10-разрядный формат, в младшем и старшем разрядах сдвигового регистра устанавливаются логичес­кие уровни стартового и стопового битов (см. рис. 4.20). Если М = 1, то используется 11-битовый кадр обмена (см. рис. 4.21). Сдвиговый регистр настраивается на 11-разрядный формат. Недостающий бит данных D8 заполняется значением Т8 из регистра управле­ния SCC3, которое должно быть определено программой до записи в буферный регистр восьми младших бит передаваемого слова. Значение бита М определяет формат кадра обмена как для приемника, так и для передатчика. Поэтому обмен в дуплексном режиме возможен только с одинаковым форматом кадра.

Скорость передачи данных, так же как и скорость приема, определяется собствен­ным генератором модуля SCI08. Этот генератор состоит из двух делителей частоты тактирования межмодульных магистралей fВUS: предварительного с коэффициентом деле­ния NP и основного с коэффициентом деления NS. Скорость обмена данными следует определить в формуле:

модуль последовательного асинхронного интерфейса sci08 - student2.ru

где NP - коэффициент деления предварительного делителя, NP = 1, 3, 4,13; NS - коэф­фициент деления основного делителя, NS= 1, 2, 4, 8, 16, 32, 64, 128.

Значения коэффициентов NP и NS определяются установкой соответствующих раз­рядов в регистре скорости передачи SCBR.

Передатчик модуля SCI08 реализует режим генерации сигнала «конец сеанса обмена» (сигнал «Break»), который состоит из 10 или 11 нулей, и в мультимикропроцессорных сис­темах обозначает конец сеанса обмена между двумя устройствами. Для генерации сигна­ла «конец сеанса обмена» необходимо установить бит SBK в регистре управления SCC2.

Основные элементы приемника - сдвиговый регистр, 8-разрядный буферный регистр данных, схема мажоритарной логики для формирования значения очередного принима­емого бита, схема детектирования условия вывода приемника из режима ожидания, ло­гический блок управления. Различают два состояния подсистемы приемника:

1)активное состояние, которое характеризуется периодическим формированием
байта данных из последовательности битов на входе RxD, копированием принятого
байта в буферный регистр данных приемника с одновременной установкой в «1» бита
завершения приема данных SCRF;

2)состояние ожидания, в котором также реализуется преобразование последователь­ного кода на входе RxD в параллельный код в сдвиговом регистре, но копирование принятого байта в буферный регистр данных приемника и установка бита завершения при­ема SCRF выполняется только тогда, когда значение принятого слова удовлетворяет одному из условий выхода из режима ожидания.

Формат кадра принимаемых данных определяется значением бита М в регистре управ­ления SCC1. При М = 0 обмен осуществляется 10-битовыми кадрами, при М = 1 использу­ется 11-битовый кадр обмена. В последнем случае сдвиговый регистр настраивается на 11-разрядный формат. Бит данных D8, который не помещается в разрядную сетку буфер­ного регистра данных приемника, записывается в разряд R8 регистра управления SCC3.

Блок логики управления подсистемы приемника детектирует наличие на входе RxD последовательности из не менее чем одного стопового бита, а затем стартового бита, и начинает формирование слова данных посредством выполнения под управлением ге­нератора скорости передачи GR сдвиговых операций. Значение старшего бита на каж­дом такте работы сдвигового регистра определяет схема мажоритарной логики. Эта схе­ма производит три выборки уровня сигнала на входе RxD в течение одного такта работы, значение старшего бита определяется по правилу «два из трех». Момент окончания фор­мирования слова в сдвиговом регистре отмечается установкой в «1» триггера заверше­ния приема SCRF в регистре SCS1. Одновременно принятые данные записываются в буферный регистр данных приемника, который доступен для чтения по адресу SCDR. Бит SCRF по существу является флагом готовности данных приемника, он информирует МК о том, что произошел прием очередного слова данных, и его следует переместить в память МК. Бит SCRF может быть считан программно, а если прерывания от приемни­ка разрешены (бит SCRIE регистра управления SCC2 равен «1»), то генерируется зап­рос на прерывание от приемника модуля SCI08. Сброс бита готовности данных приемни­ка осуществляется в процессе выполнения двух операций:

• чтения регистра состояния SCS1 при установленном бите SCRF;

• чтения регистр данных приемника SCDR.

Нетрудно заметить, что именно эта последовательность операций должна быть вы­полнена при считывании очередного принятого по линии RxD байта в память МК.

Если бит SCRF находится в «1», т. е. байт данных принят и находится в буферном регистре приемника, то подобная ситуация не препятствует процессу приема в сдвиго­вый регистр приемника следующего байта данных. Необходимо только, чтобы до завер­шения приема последующего байта данных предыдущий байт был считан из буферного регистра приемника. Если этого не произошло, то аппаратные средства блокируют за­пись нового байта в буферный регистр приемника, поэтому новый принятый байт будет потерян. Одновременно устанавливается бит нарушения работы OR в регистре SCS1 (Overrun - попытка перезаписи). Установленный в «1» бит OR может вызывать генера­цию запроса на прерывание, если прерывания именно по этому событию разрешены (бит ORIE в регистре SCC3 равен «1»).

Аппаратные средства приемника сообщают пользователю о наличии шума на линии RxD при приеме каждого байта данных: бит NF регистра SCS1 устанавливается в «1», если при определении значения хотя бы одного из битов кадра обмена, включая старто­вый и стоповый биты, не все три выборки сигнала были равны. Установленный в «1» бит NF может вызывать генерацию запроса на прерывание, если прерывания именно по это­му событию разрешены (бит NEIE в регистре SCC3 равен «1»). Если следующий приня­тый байт не содержит признака шума на линии, то бит NF не сбрасывается автоматичес­ки. Условия сброса бита NF указаны в табл. 4.46.

Аппаратные средства приемника также распознают нарушение формата кадра обме­на: бит FE регистра SCS1 устанавливается в «1», если на линии RxD присутствует сигнал низкого логического уровня в то время, когда должен присутствовать столовый бит с высо­ким логическим уровнем. Подобная ситуация может возникнуть, если скорости обмена приемника и передатчика не совпадают, или если принимается специальный сигнал «ко­нец сеанса обмена». Бит FE может вызывать генерацию запроса на прерывание, если прерывания именно по этому событию разрешены (бит FEIE в регистре SCC3 равен «1»).

В процессе приема каждого байта информации в формате 11-битового кадра аппа­ратные средства приемника автоматически производят контроль бита паритета. Управ­ление функцией паритета осуществляется с использованием битов PEN и РТУ регистра SCC1. Если функция контроля паритета разрешена, то бит РЕ в регистре SCS1 устанав­ливается в «1», если в принятом байте данных вычисленный бит паритета не совпадает со значением принятого бита паритета. Установленный бит РЕ может генерировать зап­рос на прерывание, если прерывания по событию несовпадения паритетов разрешены (бит PEIE в регистре SCC3 равен «1»).

Запросы на прерывание, сформированные признаками ошибки приема (триггеры OR, NF, FE, РЕ) объединены по «ИЛИ» и обслуживаются по одному вектору прерывания (см. табл. 4.31).

Неактивное состояние линии RxD, которое характеризуется наличием на линии 10 или 11 (в зависимости от формата кадра) последовательных единиц, отмечается уста­новкой бита IDLE регистра состояния SCS1. Неактивное состояние линии RxD свиде­тельствует о том, что передатчик другого устройства, которое выставляет данные на ли­нию RxD, находится в состоянии ожидания IDLE. Бит IDLE может быть считан программ­но, но может также генерировать запрос на прерывание, если эти прерывания разреше­ны (бит ILIE в регистре управления SCC2 равен «1»). Вектор обслуживания запроса по флагу IDLE совпадает с вектором обслуживания приемника модуля SCI08.

Бит RWU в регистре управления SCC2 переводит приемник модуля SCI08 в режим ожидания. Этот режим позволяет организовать протокол обмена локальной управляю­щей сети МК. В режиме ожидания приемник продолжает преобразование последова­тельного кода на входе RxD в параллельный код в сдвиговом регистре. Однако форми­рование признаков SCRF, IDLE, OR, NF, FE, PE приемник не производит, и принятые данные в буферный регистр не копируются. Определено два способа перевода прием­ника из режима ожидания в активный режим работы:

• поступление последовательности битов с установленным в «1» маркером адреса; в качестве маркера адреса используют старший значащий бит; поэтому, для 10-битового кадра бит D7 должен быть равен «1», чтобы приемник вышел из состояния ожидания, для 11-битового кадра - бит D8.;

• нахождение линии RxD в неактивном состоянии IDLE.

Выбор способа «пробуждения» приемника определяется предварительной установ­кой бита WAKE в регистре управления SCC1. При диагностировании на входе RxD одной из двух указанных последовательностей приемник выходит из состояния ожидания, ус­танавливает бит готовности данных SCRF и копирует принятые данные в буферный ре­гистр SCDR. Бит RWU автоматически сбрасывается, логика формирования бита IDLE не работает. Она начнет функционировать только при поступлении следующего байта в активном режиме работы приемника. На практике при организации локальных сетей чаще используется первый способ «пробуждения». Тогда младшие 7 или 8 бит данных первого принятого в процессе «пробуждения» слова содержат в себе адрес МК, с которым будет производиться обмен. Программа обслуживания прерывания по запросу от приемника сравнивает принятый адрес с собственным и, если адреса не совпадают, снова перево­дит приемник в режим ожидания. В случае равенства адресов приемник остается в ак­тивном режиме работы и участвует в сеансе обмена.

Программно-логическая модель модуля SCI08 включает семь регистров специаль­ных функций: SCDR - регистр данных порта SCI08; SCC1 - регистр управления контрол­лером SCI08; SCC2 - регистр управления контроллером SCI08; SCC3 - регистр управле­ния контроллером SCI08; SCS1 - регистр состояния контроллера SCI08; SCS2 - регистр состояния контроллера SCI08; SCBR - регистр скорости обмена контроллера SCI08.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

Форматы этих регистров представлены в табл. 4.42 -4.48.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

РАЗВИТИЕ СЕМЕЙСТВА НС08

Семейство 8-разрядных МК НС08 активно развивается в следующих направлениях.

•На базе уже отработанного процессорного ядра появляются различные модели МК,
которые интегрируют на кристалле ПЗУ от 1,5 до 60 Кбайт, и широкий набор периферийных модулей. Поскольку объем прикладной программы управления в большинстве случаев соотносится с необходимым набором периферийных модулей, то в составе семейства НС08 присутствуют как очень простые МК в корпусах с 16 и 20 выводами с малым объемом резидентного ПЗУ и небольшим набором периферийных модулей, так и сложные МК с большим объемом ПЗУ программ и широким набором периферийных модулей. Таким образом, на основе одного процессорного ядра пользователю предоставляется широкий ряд моделей, на основе которого могут быть решены любые прикладные задачи для 8-разрядных МК.

•Постоянно пополняется библиотека периферийных модулей семейства. Появляются
новые модули встроенного АЦП с увеличенным числом разрядов и меньшим временем преобразования, контроллеров последовательных интерфейсов USB и CAN, новые более совершенные модули FLASH ПЗУ.

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

В конце 2000 г. семейство НС08 насчитывало 17 моделей МК (табл. 4.49). В настоя­щее время продолжают появляться новые модели. Для удобства пользователя МК се­мейства НС08 объединены в серии. Каждая серия имеет буквенное обозначение: HC08AZ, HC08GP и др. (МК семейства НС08, серия AZ, серия GP). МК, принадлежащие к одной серии, имеют одинаковый набор периферийных модулей, но различаются объемом и типом встроенной памяти, числом каналов в том или ином периферийном модуле, на­грузочной способностью выводов портов, параметрами модуля формирования тактовой частоты, напряжением источника питания, типом корпуса ИС. Серии МК в составе се­мейства НС08 только нарождаются. В настоящее время оформились шесть семейств: HC08AZ, HC08AS, HC08GP, HC08MR, HC08JK/JL и НС08КХ.

Наибольшее развитие в настоящее время получила серия AZ. Это обусловлено на­личием в составе семейства контроллера локальной промышленной сети с протоколом CAN, которая приобретает все большее распространение в системах промышленной автоматики и автомобильной электроники. МК серии AZ представляют собой верхний уровень семейства НС08: предельно реализуемая для CPU08 резидентная память и ши­рокий набор периферии.

К «среднему классу» следует отнести семейство GP с его представителем HC908GP32, рассмотренным выше, и HC908GP20.

Нижний уровень семейства НС08 представлен пока тремя маловыводными моделя­ми - HC(9)08JL3, HC(9)08JK3 и HC(9)08JK1, которые выполнены в корпусах с 28 и 20 выводами. Эти МК имеют две линии вывода с повышенной нагрузочной способностью (25 МА), 7/4 линий предназначены для непосредственного подключения светодиодов. Спектр применения МК HC(9)08JL3/JK3/JK1 - устройства локального управления, не тре­бующие сопряжения с управляющим устройством верхнего уровня. МК HC(9)08JL3/JK3/ JK1 выпускаются как с масочным ПЗУ (HC08JL3/JK3/JK1), так и с модулем FLASH ПЗУ (HC908JL3/JK3/JK1).

Кроме МК общего применения, в состав семейства НС08 включены специализи­рованные микроконтроллеры: HC908MR32, HC908MR24, HC908MR16 и HC908MR8-для управления преобразователями частоты электропривода и другими типами устройств силовой электроники, HC08LN56 -для управления панелями ЖКИ индикато­ров; НС(9)08КН12 и HC(9)08JB8 - для управления компьютерной периферией на ос­нове шины USB.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

4.4. RISC-МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА Р1С16 ФИРМЫ «MICROCHIP»

АРХИТЕКТУРА МК PIC16С54

На рис. 4.54 приведена структура МК PIC16C54. Серия Р1С16С5х («х» - номер моде­ли, для рассматриваемого МК PIC16С54 х = 4) объединяет самые простые МК семейства PIC16. Каждый МК серии Р1С16С5х интегрирует на кристалле высокопроизводительное процессорное ядро и минимальный набор периферийных модулей. Так, МК PIC16C54 размещается в корпусе всего с 18 выводами. Его изучение позволит вам познакомиться с самым распространенным RISC-ядром в секторе 8-разрядных МК, не осложняя описа­ние множеством регистров специальных функций периферийных модулей.

МК PIC16C54 включает следующие функциональные блоки:

•центральный RISC-процессор PIC16; разрядность обрабатываемого слова - 8 бит, число команд - 33;

•память программ: 512 12-разрядных ячеек памяти однократно программируемого ПЗУ;

•память данных: ОЗУ емкостью 25 однобайтовых ячеек памяти;

•таймер;

•два порта ввода/вывода с общим числом линий, равным 12;

•сторожевой таймер.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

МК семейства Р1С16 используют гарвардскую архитектуру, основанную на концепции раздельных магистралей и областей памяти для команд и для данных. Разделение маги­стралей позволяет увеличить разрядность команды по сравнению с разрядностью дан­ных. В МК Р1С16С5х формат команды составляет 12 бит, в то время как разрядность слова памяти данных равна одному байту. Все без исключения команды МК PIC16 явля­ются однословными, т. е. длина кода любой команды равна 12 бит. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команд. Все команды, кроме команд передачи управления, выполняются за один машинный цикл. Длитель­ность цикла составляет 200 не при частоте тактирования fXCLK = 20 МГц (f Вus = f XCLK/4).

Адресное пространство памяти программ МК Р1С16С5х делится на страницы (бан­ки) по 512 ячеек в каждой (рис. 4.55). Прямая адресация памяти программ возможна только в пределах одной страницы. Доступ к памяти свыше 512 ячеек осуществляется после переключения под управлением программы указателя страницы. В качестве указателя используются биты РА1:РАО регистра признаков центрального процессора, который в МК PIC16 носит название STATUS. Рассматриваемая модель МК PIC16C54 имеет всего 512 ячеек памяти программ, т. е. использует только нулевую страницу адресного пространства. Соответственно и разрядность счетчика адреса PC для дан­ного МК равна 9. В других моделях серии Р1С16С5х используется до 4 страниц памяти программ, тогда разрядность счетчика адреса PC составляет 11 бит. Причем младшие 9 бит работают в режиме двоичного счетчика, адресуя 512 ячеек памяти в пределах каждой страницы. А старшие два разряда устанавливаются только по значению битов РА1 РАО регистра STATUS.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

Рис. 4.55. Распределение адресного пространства ПЗУ программ для МК Р1С16С5х

Адресное пространство опера­тивного запоминающего устрой­ства объединяет регистры специ­альных функций и регистры обще­го назначения. Карта памяти дан­ных МК Р1С16С5х представлена на рис. 4.56.

Память данных разбита на 4 банка. В нулевом банке 32 ячейки памяти, в остальных трех банках -по 16 ячеек. Номер используемого банка задают разряды FSR.6 и FSR.5 регистра косвенной адреса­ции FSR (00 - банк 0, 01 - банк 1, 10 - банк 2,11- банк 3). Обратите внимание, что младшие 16 адре­сов в банках 1, 2 и 3 недоступны. При обращении по адресам, при­надлежащим недоступным облас­тям, эти адреса будут отображать­ся на соответствующий адрес банка 0: например, по адресам 21 п, 1 h, 61 h будет считываться одна и а же ячейка памяти с адресом 01 h.

Рассматриваемый МК PIC16C54 имеет всего один банк оперативной памяти. Адресное пространство из 32 ячеек памяти делится следующим образом: диапазон адресов с 00h по 06h принадлежит адресам регистров специальных функций, адреса с 07h по 1Fh ис­пользуют 25 ячеек памяти общего назначения. В описании системы команд и те и другие именуются регистрами общего назначения в противовес рабочему регистру центрально­го процессора W, который по функциональному назначению близок к аккумулятору. Для обращения к регистрам специальных функций и просто к ячейкам памяти используются одни и те же способы адресации: прямая адресация и косвенная с использованием регистра косвенной адресации FSR. Кроме того, каждый бит любой ячейки памяти дан­ных доступен с использованием одной из 4 команд битового процессора. Перечень реги­стров специальных функций МК Р1С16С5х с указанием назначения битов для некоторых из них приведен в табл. 4.50.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

Часть регистров специальных функций МК не входит в адресное пространство ОЗУ данных. Это регистры направления передачи портов ввода/вывода TRIS, регистр конфи­гурации МК OPTION и некоторые другие. Для обращения к этим регистрам используются специальные команды.

Рассматриваемый МК PIC16C54 имеет 12 двунаправленных линий ввода/вывода, кото­рые объединены в два порта: 4-разрядный порт PORTA и 8-разрядный порт PORTB. Реги­стры данных портов располагаются в адресном пространстве памяти данных (табл. 4.50). Каждая линия может быть настроена на ввод или вывод посредством записи слова управ­ления («0» - вывод, «1» - ввод) в соответствующий регистр направления передачи порта TRISAnnnTRISB.

Модуль таймера в составе МК PIC16C54 имеет следующие особенности:

•8-разрядный таймер-счетчик допускает внутреннее и внешнее тактирование;

•регистр таймера TMRO доступен для чтения и для записи;

•8-разрядный программируемый предварительный делитель.

Режим таймера или счетчика внешних событий, а также коэффициент предваритель­ного делителя выбираются битами регистра OPTION.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

ПРОЦЕССОРНОЕ ЯДРО PIC16

Центральный процессор CPU PIC16 включает (рис. 4.54):

•8-разрядное АЛУ с регистром признаков STATUS;

•рабочий регистр W;

•регистр косвенной адресации FSR;

•9-разрядный счетчик команд PC;

•12-разрядный регистр кода команды и дешифратор команд

Программно доступными регистрами центрального процессора являются младший байт счетчика команд PCL, регистр признаков STATUS, регистр косвенной адресации FSR и рабочий регистр W. Причем первые три расположены в адресном пространстве регистров специальных функций (табл. 4.50), следовательно, для обращения к ним может быть ис­пользована любая команда обращения к регистрам общего назначения. Рабочий ре­гистр W не имеет собственного адреса в карте памяти, поэтому он не может быть прямо адресован. Для его загрузки и пересылки используются специальные команды:

MOVLW k ; Загрузить константу к в рабочий регистр W

MOVWF f ; Загрузить содержимое рабочего регистра W в регистр общего

; назначения f.

Рабочий регистр W по функциональному назначению близок к аккумулятору. При вы­полнении любой операции в АЛУ используется регистр W. В командах, имеющих два операнда, одним из операндов обязательно является рабочий регистр W. При выполне­нии действий над одним операндом, например операции инкремента и декремента, ра­бочий регистр W может не быть источником операнда, но всегда имеется возможность поместить результат операции в рабочий регистр W.

АЛУ выполняет минимально необходимый набор операций: сложение, вычитание, логические операции, сдвиг, операции над битами. В командах с двумя операндами (сло­жение, вычитание, логические операции) один из операндов расположен в рабочем ре­гистре W, другой операнд может быть содержимым любой ячейки ОЗУ, в том числе и регистра специальных функций. Результат операции может иметь один из двух регист­ров назначения: рабочий регистр W, если суффикс d в аббревиатуре команды равен 0, или источник второго операнда регистр общего назначения f, если суффикс d равен 1. В командах с одним операндом (инкремент, декремент, сдвиги вправо и влево) источником операнда является любой регистр встроенного ОЗУ, результат операции размещается так же, как и в предыдущем случае.

По результатам арифметических и логических операций устанавливаются три при­знака: переноса С, нулевого результата Z и дополнительного переноса DC (см. табл. 4.50). Остальные разряды регистра признаков STATUS используются для адресации памяти программ (биты РА2 – РА0), а также для управления сторожевым таймером и режимом низкого энергопотребления (биты модуль последовательного асинхронного интерфейса sci08 - student2.ru и модуль последовательного асинхронного интерфейса sci08 - student2.ru ). Регистр признаков STATUS дос­тупен для любой команды так же, как и любой другой регистр. Однако следует иметь в виду, что биты модуль последовательного асинхронного интерфейса sci08 - student2.ru и модуль последовательного асинхронного интерфейса sci08 - student2.ru устанавливаются только аппаратно и не могут быть изменены посредством какой-либо команды,например, команда CLRF STATUS обнулит все биты регистра признаков, кроме модуль последовательного асинхронного интерфейса sci08 - student2.ru и модуль последовательного асинхронного интерфейса sci08 - student2.ru , а затем установит триггер Z.

Все без исключения команды МК Р1С16С5х имеют длину 12 бит, т. е. любая команда размещается в одной ячейке памяти программ. Формат команд МКР1С16С5х представ­лен на рис. 4.57.

Для выборки операндов из внутренней памяти данных в CPU PIC16 используются два способа адресации: прямая (DIR) и косвенная (INDIR). Прямоадресуемыми являются все ячейки внутренней памяти данных, т. е. регистры специальных функций, расположенные в карте памяти данных, и регистры общего назначения (см. рис. 4.56). В мнемонике команд с прямой адресацией все эти регистры обозначаются общей аббревиатурой f. Например:

ADDWF f,d ; Мнемоника команды:

; Сложить содержимое рабочего регистра W с содержимым

; регистра общего назначения f. Результат поместить в W при

; d=0 или в f при d=1 (0< f < 31).

ADDWF 1Eh,1 ; Сложить содержимое рабочего регистра W с содержимым

; ячейки памяти 1Eh, результат поместить в ячейку памяти 1Eh.:

ADDWF FSR,0 ; Сложить содержимое рабочего регистра W с содержимым

; регистра косвенной адресации FSR, результат поместить в

; рабочий регистр W.

Прямая адресация используется также всеми командами работы с битами.

В качестве указателя адреса при косвенной адресации используется регистр FSR. Пять младших битов этого регистра адресуют ячейку памяти в пределах банка (адреса ячеек 0 - 1Fh). Разряды FSR6:FSR5 используются для выбора текущего банка. В МК PIC16C54 всего один банк памяти данных. Но в других моделях МК серии Р1С16С5х ис­пользуется ОЗУ большей емкости. При написании программ для этих моделей следует помнить, что содержимое разрядов FSR6:FSR5 регистра косвенной адресации опреде­ляет адрес ячейки памяти не только при использовании косвенной адресации, но и при прямой адресации, так как непосредственно в коде команды с прямой адресацией ука­зывается лишь 5-разрядный адрес ячейки.

При просмотре таблиц с перечнем команд МК Р1С16С5х Вы не увидите специальных мнемоник команд, использующих косвенную адресацию. Дело в том, что любая команда, которая использует прямую адресацию, может также использовать и косвенную. Для обозначения перехода от прямой адресации к косвенной при записи мнемоники команды используется имя регистра INDF. Этот регистр реально не существует, но при его указа­нии в поле прямого адреса операнда центральный процессор использует содержимое регистра FSR в качестве адреса операнда. Например:

ADDWF INDF,0 ; Сложить содержимое рабочего регистра W с содержимым

; ячейки памяти, адрес которой находится в регистре косвенной

; адресации FSR, результат поместить в рабочий регистр W.

ADDWF 0,1 ; Сложить содержимое рабочего регистра W с содержимым

; ячейки памяти, адрес которой находится в регистре косвенной

; адресации FSR (0 - абсолютный адрес несуществующего

; регистра INDF), результат поместить в ту же ячейку памяти.

Чтение косвенным образом самого регистра INDF даст результат 00h (т. е. FSR = 0). Косвенная запись в регистр INDF не приведет к изменению состояния регистра FSR, хотя биты состояния могут быть изменены.

Регистры OPTION и TRIS не имеют собственных адресов в карте памяти, поэтому для работы с ними используются специальные команды с неявной адресацией (команды «OPTION» и «TRIS f»).

Для работы с константами, которые по определению могут быть расположены только в области ПЗУ, используется непосредственная адресация (IMM). Центральный про­цессор PIC16 может оперировать с константами двух форматов, для которых в мнемо­нике команды используется общая аббревиатура константы к. В командах загрузки и логических операций используются 8-разрядные константы (рис. 4.57). Это и понятно: разрядность константы должна совпадать с разрядностью второго операнда и регистра результата. Кроме того, 8-разрядный адрес вызываемой подпрограммы указывается в коде команды CALL. И лишь одна команда безусловного перехода GOTO k использует 9-разрядную константу, которая содержит абсолютный адрес следующей команды.

Формат счетчика адреса PC в МК серии Р1С16С5х может быть 9-разрядным, как в рассматриваемом PIC16C54, или 10- или даже 11-разрядным. Для каждой модели МК серии PIC16C5X формат счетчика адреса определяется объемом резидентного ПЗУ, ко­торое хранит прикладную программу. Младший байт счетчика команд PCL интерпрети­руется как регистр специальных функций. Поэтому PCL имеет собственный адрес в кар­те адресного пространства внутреннего ОЗУ и, следовательно, программно доступен. Если счетчик команд является операндом в какой-либо команде (например, MOVWF PC, ADDWF PC или BSF PC,5) то результат операции в 8-разрядном формате загружается в младший байт счетчика команд PCL. Восьмой бит сбрасывается в «», а остальные загружаются из регистра состояния STATUS (см. табл. 4.50). Поэтому вычисляемые пе­реходы и таблицы могут располагаться только в диапазоне первых 256 адресов каждой страницы памяти программ.

Если счетчик адреса 9-разрядный, т. е. объем ПЗУ составляет 512 ячеек, то формат команды «GOTO k» допускает переход в любую ячейку памяти программ (рис. 4.58).

В то же время формат команды «CALL k» предписывает использование только 8-разрядного формата адреса (рис. 4.58). Следовательно, все подпрограммы должны быть расположены только в диапазоне адресов 00h – 0FFh.

Если счетчик адреса имеет разрядность 10 или 11 бит, то команда «GOTO k» может передать управление только в пределах текущей страницы памяти программ (рис. 4.59). Команда «CALL k» производит вызов подпрограммы, начальный адрес которой должен быть расположен в первых 256 ячейках памяти текущей страницы ПЗУ.

При достижении границы страницы счетчик команд автоматически переходит на на­чало следующей страницы. Однако биты выбора страницы в регистре признаков STATUS не изменяются автоматически. Поэтому последующие команды GOTO, CALL, MOVWF PC возвратят управление к предыдущей странице, если биты РА1 :РАО не будут измене­ны программно. После сброса МК в регистре STATUS биты выбора страницы указывают на страницу 0, в то время как счетчик команд указывает на последнюю ячейку памяти последней страницы (для PIC16C54 состояние PC после сброса равно 1FFh). Поэтому, если по стартовому адресу будет расположена команда "GOTO k", управление будет передано на нулевую страницу.

МК серии Р1С16С5Х имеют двухуровневый аппаратный стек. Разрядность ячеек па­мяти стека совпадает с разрядностью счетчика команд PC. Команда CALL загружает в вершину стека (стек уровня 1) предварительно увеличенный на единицу счетчик ко­манд. Одновременно предыдущее значение вершины стека копируется в стек уровня 2.

модуль последовательного асинхронного интерфейса sci08 - student2.ru

модуль последовательного асинхронного интерфейса sci08 - student2.ru

Предыдущее значение стека уровня 2 теряется. Таким образом, глубина вложения под­программ в МК серии Р1С16С5х равна 2.

Подсистема прерывания в рассматриваемых МК серии Р1С16С5х (но не во всех МК семейства PIC16) отсутствует. Следовательно, нет в системе команд инструкций работы со стеком.

Наши рекомендации