Микроконтроллеры семейства Zilog Z86
Timer) выполнены в виде пересчетной цепи, которая, в общем случае,
синхронизируется от дополнительного RC-генератора GRC или от основного
генератора XTAL. Таймер POR имеет для всех моделей постоянное время, а
таймер WDT -программируемое (за исключением моделей 02, 03, 04 и 08).
Запуск таймера автосброса POR осуществляется в следующих случаях:
- если уровень VСС поднимается выше уровня VLV;
- если становится активным сигнал восстановления из режима STOP;
- если имеет место окончание счета сторожевого таймера WDT.
В первом случае сигнал запуска вырабатывается специальным компаратором А.
Во втором случае паразитные всплески сигнала источника подавляются фильтром
12 нс.
Во всех этих случаях происходит запуск таймера автосброса POR, время
задержки которого гарантирует окончание переходных процессов в цепи питания
VСС и выход на нормальный режим основного генератора синхронизации XTAL,
после чего корректно выполняется внутренний сброс МК.
При восстановлении из режима STOP в случае применения LCили RC-
времязадающих цепей основного генератора (см. п.1.2.3) нет необходимости
выдерживать задержку автосброса, т.к. эти конфигурации генератора имеют
малое время установления. Для сокращения задержки восстановления из режима
STOP в этом случае сигнал от источника может быть подан непосредственно на
вход запуска генератора сигнала сброса. При этом необходимо, чтобы сигнал
от источника восстановления имел длительность не менее 4 TpC.
В МК, имеющих расширенную группу регистров F (модели 03, 06, 30, 31, 40),
управление схемой сброса / сторожевого таймера осуществляется с помощью
регистров режима сторожевого таймера WDTMR (Watch-Dog Timer Mode Register)
и режима восстановления из режима STOP-SMR (STOP-Mode Recovery Register).
Логика управления понятна из рисунка. Следует отметить, что поскольку
генератор основной синхронизации выключается в режиме STOP, прежде чем
перейти в этот режим необходимо, чтобы бит D4 WDTMR был установлен в
состояние 0. Необходимо помнить, что регистр WDTMR доступен для записи
только в течение первых 64 тактов (128 TpC) процессора после сброса,
вызванного любым источником. Назначение разрядов регистра WDTMR полностью
показано на рис. 1.8.
Рис. 1.8. Регистр WDTMR
Запуск и обновление сторожевого таймера осуществляется специальной командой
WDT в рабочем режиме выполнения программы RUN. После однократного
выполнения этой команды сторожевой таймер постоянно разрешен. Поэтому
программа МК должна предусматривать периодическое повторение (с периодом,
меньшим установленного времени сторожевого таймера) команды WDT. Это должно
быть обеспечено программистом. В этом случае, при нормальной работе
процессора сторожевой таймер будет периодически перезапускаться и не
достигнет состояния окончания счета. При "зависании" процессора сторожевой
таймер достигает состояния окончания счета, что вызывает запуск автосброса
МК и выполнение программы с начала. Работа WDT в режимах HALT и STOP
разрешается путем программирования соответствующих битов D2 и D3 регистра
WDTMR. В этом случае, при переходе в соответствующий режим, WDT продолжает
свою работу.
В модели 03 сторожевой таймер имеет фиксированную задержку 15 мс (при
синхронизации от GRC) или 512TpC (при синхронизации от XTAL), а состояние
битов D1 и D0 регистра WDTMR должно быть 01.
В моделях 02, 04, 08 регистры WDTMR и SMR отсутствуют, поэтому схема имеет
фиксированную конфигурацию (соответствует изображенным на рис.1.7
положениям переключателей). Разрешение работы сторожевого таймера в режиме
HALT осуществляется исполнением специальной команды WDH (выполняется до
перехода в режим HALT). В режиме STOP в этих МК работа сторожевого таймера
запрещена.
Запрещение работы сторожевого таймера во всех моделях МК происходит при
выполнении внутреннего сброса. Исключение составляют некоторые модели (или
отдельные модификации) имеющие программируемый (масочно или однократно) бит
постоянного разрешения WDT (Permanent WDT). Если этот бит запрограммирован,
то WDT постоянно разрешен и запрещение работы его после сброса не
происходит.
Таким образом, функция сброса и сторожевой таймер обеспечивают корректный
начальный запуск программы и перезапуск в случае сбоя программы.
1.2.5. Порты ввода/вывода
МК Z8 имеет до 32 линий ввода/вывода, сгруппированных в четыре восьмибитных
порта Р0, Р1, Р2, Р3 (физическое наличие соответствующих выводов портов для
каждой модели МК указано в табл.1.2). Порты размещены в адресном
пространстве регистрового файла по адресам соответственно 00H, 01H, 02H,
03H.
Порты Р0, Р1 и Р2 построены по типовой структуре, показанной на рис. 1.9.
Каждый порт имеет входной и выходной регистры, входной и выходной буферы.
Выходные буферы -двухтактные, однако, могут программироваться как схемы с
открытым стоком (Open Drain). Кроме того, выходные буферы могут быть
переведены в малошумящий режим.
Рис. 1.9. Структурная схема портов P0, P1 и P2
Работа линий портов может программироваться на ввод или вывод: Р0
-потетрадно, Р1 -побайтно (т.е. целиком), а Р2 -побитно (см. табл. на рис.
1.9). Порты могут работать в режиме синхронного программного обмена, в
режиме обмена с квитированием, в режиме стробируемого ввода/вывода.
При синхронном программном обмене ввод или вывод реализуется в момент
исполнения команд чтения или записи регистра порта. При этом внешнее
устройство должно быть постоянно готово к обмену.
Режим обмена с квитированием или "рукопожатием" (Handshake) заключается в
том, что МК и внешнее устройство обмениваются сигналами (квитанциями)
ГОТОВНОСТИ к обмену -RDY (Ready) и ДЕЙСТВИТЕЛЬНОСТИ ДАННЫХ -/DAV (Data is
Available). Ввод и вывод с квитированием подробно поясняются временными
диаграммами, рис.1.10 и 1.11.
| |Состояние |Сигнал RDY имеет высокий уровень, что указывает MK принять данные.|
| |1. | |
| |Состояние |Внешнее устройство помещает данные на выводы порта и активизирует |
| |2. |сигнал /DAV. Это приводит к фиксации данных во входном регистре |
| | |порта МК и генерирования запроса прерывания. |
| |Состояние |МК переводит выход RDY в низкое состояние, сигнализируя внешнему |
| |3. |устройству, что данные зафиксированы. |
| |Состояние |Внешнее устройство возвращает линию /DAV в высокое состояние после|
| |4. |получения низкого уровня сигнала RDY. |
| |Состояние |МК должен среагировать на запрос прерывания и прочитать содержимое|
| |5. |порта для завершения последовательности квитирования. На линии RDY|
| | |устанавливается высокий уровень тогда и только тогда, когда порт |
| | |уже прочитан и /DAV имеет высокий уровень. Это возврощает |
| | |интерфейс в его начальное значение. |
Рис. 1.10. Ввод с квитированием
| |Состояние 1.|Вход RDY имеет высокий уровень, что указывает на готовность |
| | |внешнего устройства к приему данных. |
| |Состояние 2.|МК записывает данные в регистр порта для инициализации передач|
| | |данных. Запись в порт новых данных и переход выхода /DAV в |
| | |состояние низкого уровня происходит только тогда, когда RDY |
| | |имеет высокий уровень. |
| |Состояние 3.|Внешнее устройство делает уровень сигнала RDY низким после |
| | |фиксации данных. Низкий уровень RDY вызывает генерирование |
| | |запроса прерывания. МК может уже записать новые данные в ответ|
| | |на низкий уровень DRY, однако эти данные не выводятся до |
| | |состояния 5. |
| |Состояние 4.|Уровень выхода /DAV МК становится высоким в ответ на переход |
| | |выхода RDY в состояние низкого уровня. |
| |Состояние 5.|Уровень выхода /DAV остается высоким, внешнее устройство может|
| | |установить высокий уровень RDY, что возвращает интерфейс в его|
| | |начальное состояние. |
Рис. 1.11. Вывод с квитированием
Для приема и передачи сигналов квитирования используются соответствующие
линии ввода/вывода порта Р3 (см. табл. на рис.1.9). Выбор направления
обмена с квитированием осуществляется в соответствии с направлением,
запрограммированным для старшей тетрады порта Р0 и для старшего бита порта
Р2.
Режим стробируемого ввода/вывода реализуется как частный случай обмена с
квитированием по схеме рис. 1.12.
Рис. 1.12. Стробируемый ввод/вывод
а) вывод; б) ввод.
Дополнительно к основным функциям порты P0 и P1 могут использоваться для
интерфейса внешней памяти (Р0 -старшие разряды адреса A8...A15, P1
-мультиплексированная шина адреса/данных AD0...AD7), а порт P2 -для
последовательного интерфейса SPI в модели 06 (P20 -вход DI, P27 -выход D0).
Схемотехника портов P0, P1, P2 поясняется рис. 1.13. Двухтактный буферный
выходной усилитель выполнен на комплементарных МОП-транзисторах VT1 и VT2.
Отключение транзистора VT1 переводит буферный усилитель в конфигурацию с
открытым стоком. Входной буфер содержит автофиксатор и триггер Шмитта,
который обеспечивает формирование входного сигнала.
Рис. 1.13. Схемотехника входного и выходного буферов
Автофиксатор предназначен для фиксации потенциала незадействованного входа
на уровне допустимых КМОП потенциалов, близких к потенциалам шины питания
VCC или общей шины GND. Этим исключается переход пары входных транзисторов
в активный режим и резкое возрастание потребляемого тока. Автофиксатор
представляет собой бистабильную ячейку (триггер), выполненную на двух
замкнутых в кольцо инверторах, управляемую по выходу. Шунтирующее
сопротивление автофиксатора -не менее 500 кОм. В ряде случаев, когда входы
задействованы, шунтирующее действие автофиксатора нежелательно. Поэтому в
некоторых модификациях МК предусмотрен специальный бит отключения
автофиксаторов (Z86C30/31/40).
Порт Р3 -особый. Первые четыре его линии P30...P33 предназначены для ввода,
вторые -P34...P37 -для вывода. Структурная схема порта и таблица назначения
его выводов в различных режимах приведены на рис. 1.14. Независимо от
выбранного режима с входами порта P3 связаны соответствующие запросы
прерывания, указанные в таблице. Физическое наличие выводов порта P3 для
разных моделей МК см. в табл. 1.2.
Рис. 1.14. Структурная схема порта P3
|Вывод |Аналоговый |Квитировани|SP|Таймер|Внешняя |Прерывани|
|P3 |режим |е |I |ы |память |я |
|P30 | | | | | |IRQ3 |
|P31 |AN1 |/DAV2/RDY2 | |TIN | |IRQ2 |
|P32 |AN2 |/DAV0/RDY0 | | | |IRQ0 |
|P33 |REF |/DAV1/RDY1 | | | |IRQ1 |
|P34 |AN1-OUT |RDY1/DAV1 |SK| |/DM | |
|P35 |AN2-OUT* |RDY0/DAV0 |/S| | | |
| | | |S | | | |
|P36 | |RDY2/DAV2 | |TOUT | | |
|P37 |AN2-OUT | | | | | |
Примечание: *только для моделей 03 и 06.
Порт P3 содержит четырехбитные входной и выходной регистры, входной и
выходной буферы. Наличие четырехбитного буфера возврата позволяет при
чтении порта P3 контролировать данные на выходных линиях. Запись информации
в младшую тетраду порта P3 не имеет эффекта.
Схемотехника порта P3 иллюстрируется рис. 1.15. Дополнительной особенностью
МК является наличие двух встроенных аналоговых компараторов AN1 и AN2,
позволяющих решать вопросы сравнения аналоговых сигналов, квантования
сигналов, аналого-цифрового преобразования. Входы и выходы порта P3
используются для обслуживания аналоговой схемы. Переключение входов в
аналоговый режим осуществляется битом D1 регистра режима порта 3 PЗM, а
выходов -битом D0 регистра управления портами PCON. Входы P31 и P32
используются соответственно для неинвертирующих входов компараторов, а вход
P33 является входом опорного напряжения REF, общего для AN1 и AN2.
Рис. 1.15. Схемотехника порта P3
Управление работой портов реализуется путем записи информации в управляющие
регистры: регистр режимов портов P0 и P1 -P01M, регистр режима порта P2
-P2M, регистр режима порта P3 -P3M. Все эти регистры находятся в рабочей
группе F стандартного РФ. В моделях 03, 06, 30, 31 и 40, кроме того, для
управления режимами работы выходных буферов портов (режим "открытый сток" и
малошумящий режим) задействован регистр управления портами PCON,
расположенный в расширенной группе регистров F. Все эти регистры
предназначены только для записи. Результат чтения этих регистров будет
равен FFH.
Назначение разрядов этих регистров и их состояние после сброса МК для
разных моделей МК поясняется рис. 1.16 -1.19.
Рис. 1.16. Регистр режимов портов P0 и P1
Рис. 1.17. Регистр режима порта P2
Рис. 1.18. Регистр режима порта P3
Рис. 1.19. Регистр управления портами PCON
Разрабатывая прикладную программу МК, необходимо предусматривать в ней
процедуру инициализации портов ввода/вывода до выполнения операций обмена
данными с внешними устройствами.
1.2.6. Таймеры/счетчики
МК Z8 может иметь до двух таймеров/счетчиков, в зависимости от модели (см.
табл.1.2). Каждый из 8-битных таймеров/счетчиков Т0 и Т1 снабжен 6-битным
предделителем PRE0 и PRE1 (рис.1.20). Работа таймеров/счетчиков происходит
независимо от работы процессора, что освобождает его от выполнения
критичных временных операций, таких как счет событий, измерение временных
интервалов, генерирование импульсов заданной длительности и т.п.
Рис. 1.20. Структурная схема таймеров/счетчиков
Каждый из таймеров/счетчиков может работать в однопроходном или циклическом
режимах. В первом случае, при достижении таймером/счетчиком конца счета,
счет прекращается, во втором —начальное значение перезагружается и счет
продолжается. При управлении от внутренней синхронизации TCLK (TCLK =
XTAL/2 в основном режиме работы генератора), ее частота дополнительно
делится на 4. Этот делитель вместе с 6-битным предделителем и 8-битным
таймером/счетчиком образуют синхронную 16-битную цепь. Таймер/счетчик T1
может также управляться с внешнего входа TIN, в качестве которого
используется вывод Р31. Выходы таймеров/счетчиков и выход внутренней
синхронизации могут быть с помощью программы скоммутированы на выход TOUT,
в качестве которого используется вывод Р36. Управление работой
таймеров/счетчиков осуществляется с помощью регистра режимов таймеров TMR.
Регистры таймеров/счетчиков T0 и T1, предделителей PRE0 и PRE1, а также
регистр TMR размещены в адресном пространстве СРФ, рабочая группа F ( см.
рис.1.2). Поэтому для управления и контроля за работой таймеров/счетчиков
никаких специальных команд не требуется. Каждый из предделителей PRE0 (F5H)
и PRE1 (F3H) состоит из 8-битного регистра начального значения и 6-битного
вычитающего счетчика (см. рис.1.20). Регистры предделителей предназначены
только для записи, кроме начального значения содержат управляющие биты.
Назначение разрядов этих регистров, их состояние после сброса и в процессе
работы поясняется рис.1.21 и рис.1.22. Попытка чтения этих регистров дает
результат FF. Начальное значение предделителей может быть в диапазоне от 1
до 64 ( 01H,...,3FH,00H ).
Каждый из таймеров/счетчиков (см. рис.1.20 ) T0 (F4H) иT1 (F2H) состоит из
8-битного вычитающего счетчика, регистра начального значения (только для
записи) и регистра текущего значения (только для чтения). Начальное и
текущее значения могут быть в диапазоне от 1 до 256 (01H,...,FFH,00H).
После сброса состояние регистров T0 и T1 —неопределенное.
Рис. 1.21. Регистр предделителя PRE0
Рис. 1.22. Регистр предделителя PRE1
Регистр TMR содержит группы битов, управляющие загрузкой начальных
значений, пуском/остановом таймеров, режимом входа TIN и режимом выхода
TOUT. Назначение разрядов регистра TMR, состояние их после сброса и
допустимые состояния в процессе работы для разных моделей МК показаны на
рис.1.23.
Рис. 1.23. Регистр режимов таймеров TMR
Установка бита загрузки (D0 для T0 и D2 для T1) вызывает пересылку
начального значения из регистров начального значения соответствующего
предделителя и таймера в вычитающие счетчики. После загрузки эти
управляющие биты сбрасываются. Новое значение может быть загружено в
вычитающие счетчики в любое время. Если счетчики были запущены, то счет
будет продолжаться с нового значения.
Таймеры/счетчики сохраняют свое состояние, пока бит разрешения счета (см.
рис.1.23) равен 0. Для запуска таймеров/счетчиков соответствующий бит
разрешения счета (D1 для T0 и D3 для T1) должен быть установлен в 1. Первый
декремент будет иметь место через 4 периода внутренней синхронизации после
установки программой бита разрешения счета или в следующем периоде внешней
синхронизации (со входа TIN).
Биты загрузки и разрешения могут быть установлены одновременно. Например, с
использованием команды
OR TMR,# 03H
можно загрузить и запустить таймер/счетчик T0.
1.2.7. Прерывания
МК Z8 поддерживают 6-уровневую схему приоритетных прерываний от различных
источников. Набор внешних источников прерывания связан со входами порта Р3
и инициирует запросы прерывания IRQ0,...,IRQ3 (см.табл. на рис.1.14). К
внутренним источникам относятся таймеры/счетчики T0, T1 и последовательный
интерфейс SPI. Им соответствуют запросы прерывания IRQ4, IRQ5. Обобщенная
структурная схема организации прерываний и таблица соответствия источников
показаны на рис.1.24. Следует отметить, что кроме аппаратной установки
любой из запросов может быть установлен программным путем.
Аппаратные источники прерываний
|Запрос |Модель МК | | | | |
|прерывания | | | | | |
| |02 |03 |06 |04, 08 |30, 31, 40|
|IRQ0 |P32 f |P32 s |P32 s |P32 f |P32 s |
|IRQ1 |P33 f |P33 f |P33 f |P33 f |P33 f |
|IRQ2 |P31 f |P31 s |P31 s |P31 f |P31 s |
|IRQ3 |P32 f | |SPI |P32 r |P30 f |
|IRQ4 | | |T0 |T0 |T0 |
|IRQ5 |T1 |T1 |T1 |T1 |T1 |
Рис. 1.24. Структурная схема организации прерываний
Схема управления прерываниями включает три управляющих регистра: регистр
запросов прерывания IRQ, регистр маски прерывания IMR и регистр приоритетов
прерывания IPR. Все регистры размещены в СРФ, рабочая группа F. Каждый
внешний сигнал устанавливает в 1 соответствующий бит запроса в регистре IRQ
(рис.1.25) при появлении фронта сигнала, указанного в таблице на рис.1.24.
В моделях 03, 06, 30, 31 и 40 фронт сигнала, устанавливающий запросы IRQ0 и
IRQ2, программируется путем записи информации в два старших бита регистра
IRQ. Запросы прерываний от таймеров/счетчиков устанавливаются при
достижении ими конца счета, а запрос от SPI —по завершении приема символа.
Рис. 1.25. Регистр запросов прерывания IRQ
Регистр маски прерываний IMR (рис.1.26) позволяет маскировать как каждое
прерывание IRQ5 —IRQ0 отдельно (биты D5-D0), так и все прерывания глобально
(бит D7). Последний бит устанавливается и сбрасывается особыми командами
разрешения и запрещения прерываний EI и DI. Он автоматически сбрасывается
при вызове подпрограммы обслуживания прерывания и автоматически
устанавливается при выполнении команды возврата из подпрограммы
обслуживания прерывания IRET. Следует отметить, что перед изменением
содержимого IMR или IPR бит D7 регистра IMR должен быть сброшен.
Рис. 1.26. Регистр маски прерываний IMR
Регистр приоритета прерываний IPR (рис.1.27) позволяет устанавливать любое
соотношение приоритетов как между группами прерываний А, В, С, так и между
отдельными запросами прерываний внутри группы. В каждую группу включено по
два запроса.
МК Z8 поддерживает как процесс векторных прерываний, так и процесс
поллинга.
Рис. 1.27. Регистр приоритетов прерываний IMR
В случае векторного процесса каждый уровень прерывания имеет собственный
вектор —адрес подпрограммы обслуживания этого уровня прерывания. Векторы
прерываний размещены в начальной зоне ПЗУ (см. рис. 1.3). Инициализация
процесса векторного прерывания происходит, если прерывания глобально
разрешены и есть хотя бы один незамаскированный запрос прерывания. Если
таких запросов несколько, то выбирается вектор прерывания с наивысшим
приоритетом. Далее реализуется следующая последовательность действий:
— загружается в стек младший байт PC;
— загружается в стек старший байт PC;
—загружается в стек регистр флагов FLAGS;
— читается старший байт вектора;
— читается младший байт вектора;
—вектор загружается в PC.
Эта последовательность занимает 24 такта синхронизации TpC. Наихудшее время
реакции на прерывание можно вычислить, прибавив к этому времени 2TpC для
синхронизации внешнего запроса прерывания и время выполнения самой длинной
команды в прерываемой программе.
1.3. Система команд микроконтроллеров Z8
Математические возможности МК характеризуются системой команд. В МК
использован двухадресный принцип построения команд, что позволяет сократить
количество требуемых пересылок операндов. Первый операнд после выполнения
команды становится результатом и называется операндом-получателем (
Destination Operand ), а второй —сохраняет свое значение и называется
операндом-источником ( Source Operand ). Первый в описании системы команд
обозначен аббревиатурой dst, а второй —src.
Код любой команды МК содержит код операции (КОП), определяющий операцию
команды, и до двух адресных полей. Способы трактовки кодов в адресном поле
называются способами адресации операндов.Прежде чем рассматривать набор
команд, необходимо более подробно рассмотреть используемые способы
адресации операндов.
1.3.1. Способы адресации операндов
В МК Z8 использовано шесть основных способов адресации операндов :
— регистровая ( Register );
— косвенная регистровая ( Indirect Register );
— индексная ( Indexed );
— прямая ( Direct );
— относительная ( Relative );
— непосредственная ( Immediate ).
Кроме того, регистровая и косвенная регистровая адресации имеют ряд
модификаций: они могут использовать сокращенный 4-битный адрес рабочего
регистра, полный 8-битный адрес регистра, сокращенный 4-битный адрес
рабочей пары регистров, полный 8-битный адрес регистровой пары. При
адресации пар регистров используется четное выравнивание, т.е. допустимые
адреса —четные числа. Шестнадцатибитные операнды занимают в регистровом
файле пару регистров, причем по четному адресу размещается старший байт.
Все способы адресации операндов в системе команд МК Z8 приведены в
табл.1.7. В таблице указаны условные обозначения способов адресации,
используемые в дальнейшем в таблице команд, наименование способа адресации,
обозначение операнда на языке ассемблера, диапазон значений адреса и номер
рисунка, на котором дана графическая интерпретация способа адресации.
Следует отметить, что адреса типа R, RR, IR, IRR предполагают использование
как полного 8-битного адреса регистра, так и сокращенного 4-битного. В
последнем случае адрес размещается в младшей тетраде адресного байта, а в
старшей тетраде указывается код 1110B (EH) :
|E |Dst/src |
Поэтому обращение к регистрам рабочей группы E СРФ возможно только с
помощью рабочей регистровой адресации (см. п.п.1.2.2.1).
Таблица 1.7. Способы адресации операндов
|Спосо|Наименование |Операн|Диапазон|Ри|
|б | |д | |с.|
|r |Рабочая регистровая(РР) |Rn |n=0,...,|1.|
| | | |15 |35|
|R |Регистровая или РР |Reg |00H —FFH|1.|
| | |Rn | |36|
| | | |n=0,...,| |
| | | |15 |1.|
| | | | |35|
|RR |Регистровая пара или PP пара (четное |Reg |00H —FEH|1.|
| |выравнивание) |RRp | |38|
| | | |p=0,...,| |
| | | |14 |1.|
| | | | |37|
|Ir |Косвенная РР |@Rn |n=0,...,|1.|
| | | |15 |39|
|IR |Косвенная регистровая или косвенная РР |@Reg |00H —FFH|1.|
| | |@Rn | |40|
| | | |n=0,...,| |
| | | |15 |1.|
| | | | |39|
|Irr |Косвенная через РР пару |@RRp |p=0,...,|1.|
| | | |14 |41|
|IRR |Косвенная через регистровую пару или РР пару|@Reg |00H —FEH|1.|
| | |@RRp | |42|
| | | |p=0,...,| |
| | | |14 |1.|
| | | | |41|
|X |Индексная |Reg(Rn|00H —FFH|1.|
| | |) | |43|
|DA |Прямая |Addrs |0H |1.|
| | | |—FFFFH |44|
|RA |Относительная |Addr |-128- |1.|
| | | |+127 |45|
|IM |Непосредственная |#Data |00H —FFH|1.|
| | | | |46|
1.3.2. Флаги процессора
Флаговый регистр FLAGS (FCH) содержит информацию о текущем состоянии
процессора. Флаги и их расположение в регистре приведены на рис.1.47.
Состояние флагового регистра после сброса является неопределенным.
Рис. 1.47. Регистр флагов FLAGS
Флаговый регистр FLAGS содержит 6 флагов состояния, информация в которых
устанавливается в результате работы процессора. Четыре флага (C, V, Z, S)
используются командами условного перехода. Два флага (H и D) используются
командой десятичной коррекции. Оставшиеся два бита могут быть использованы
как флаги пользователя (F1 и F2). Ниже подробно рассмотрено назначение
каждого из основных флагов МК Z8.
1.3.2.1. Флаг переноса C (Carry Flag)
Флаг переноса устанавливается в 1, если в результате арифметической
операции генерируется “перенос из” или “заем в” старший 7-ой бит
результата. В противном случае флаг С очищается в 0.
В процессе выполнения команд циклического или арифметического сдвига флаг
переноса С содержит последний бит, выдвинутый из указанного в команде
регистра.
Команды могут устанавливать, сбрасывать или инвертировать (дополнять) флаг
переноса.
1.3.2.2. Флаг нуля Z (Zero Flag)
Если в результате арифметической или логической операции получается нулевой
результат, то флаг Z устанавливается в 1, в противном случае флаг Z
очищается в 0.
Если результат команды проверки бита в регистре равен 00Н,0то флаг нуля
устанавливается в 1, в противном случае — очищается в 0.
Если результат выполнения команды циклического или арифметического сдвига
равен 00Н, флаг Z устанавливается в 1, иначе —сбрасывается в 0.
1.3.2.3. Флаг знака S (Sign Flag)
Флаг знака хранит значение старшего бита результата текущей арифметической
или логической операции, операции циклического илиарифметического сдвига.
Для производства арифметических операций над числами со знаком в МК
используется представление информации в дополнительном коде. Положительное
число при этом идентифицируется в старшем значащем разряде и,
соответственно, значение флага знака также равно 0. Отрицательное число
идентифицируется 1 в старшем значащем разряде и, соответственно, флаг S
также будет равен 1.
1.3.2.4. Флаг переполнения V (Overflow Flag)
Для знаковых арифметических операций, операций циклического и
арифметического сдвигов флаг переполнения V устанавливается в 1, если
результат больше максимально возможного положительного числа (+127) или
меньше минимально возможного отрицательного числа (-128), представленного 8-
битным дополнительным кодом. Флаг V устанавливается в 0, если переполнение
отсутствует. В результате поразрядных логических операций флаг V всегда
сбрасывается в 0.
1.3.2.5. Флаг десятичной коррекции D (Decimal Adjust Flag)
Флаг десятичной коррекции D используется для двоично-десятичной арифметики
BCD (Binary Coded Decimal). Поскольку алгоритм десятичной коррекции
различен для сложения и вычитания, этот флаг сохраняет информацию о
последней выполненной команде, для последующей команды десятичной коррекции
DA. После выполнения операциивычитания флаг D устанавливается в 1, а после
операции сложения —очищается в 0.
1.3.2.6. Флаг полупереноса H (Half Carry Flag)
Флаг полупереноса H устанавливается в 1, когда при сложениичисел
генерируется перенос из 3-его бита или при вычитании генерируется заем в 3-
ий бит. Флаг H используется командой десятичной коррекции DA.
Значения всех флагов изменяются командой IRET при восстановлении из стека
состояния флагового регистра. Команды WDH и WDT устанавливают флаги Z, S и
V в неопределенное состояние. Команда SWAP устанавливает в неопределенное
состояние флаги C и V.
1.3.3. Набор команд
Команды микроконтроллеров Z8 функционально могут быть разделены на восемь
групп:
— команды загрузки;
— арифметические команды;
— логические команды;
— команды управления программой;
— команды манипуляции битами;
— команды пересылки блоков;
— команды сдвигов;
— команды управления процессором.
1.3.3.1. Описание системы команд
В табл.1.8 приведено краткое описание системы команд микроконтроллеров,
причем для каждой команды дано мнемоническое обозначение, принятое в языке
ассемблера, указан состав операндов и смысл команды на английском языке (
для понимания происхождения мнемоники как аббревиатуры ) и на русском
языке. Аббревиатура “сс” в колонке операндов команд управления программой
означает код условия ( condition ), а аббревиатура “r”— любой регистр из
рабочей группы ( register ).
Таблица 1.8. Краткое описание системы команд микроконтроллера Z8
|Мнемоник|Операнд|Наименование команды | |
|а |ы | | |
| | |Английский язык |Русский язык |
|КОМАНДЫ | | | |
|ЗАГРУЗКИ| | | |
|CLR |dst |Clear |Очистить |
|LD |dst,src|Load |Загрузить |
|LDC | |Load Constant |Загрузить константу |
|LDE |dst,src|Load External Data |Загрузить внешние данные |
|POP | |Pop |Извлечь из стека |
|PUSH |dst,src|Push |Загрузить в стек |
| | | | |
| |dst | | |
| |src | | |
|АРИФМЕТИ| | | |
|ЧЕСКИЕ | | | |
|КОМАНДЫ | | | |
|ADC |dst,src|Add with Carry |Сложить с переносом |
|ADD | |Add |Сложить |
|CP |dst,src|Compare |Сравнить |
|DA | |Decimal Adjust |Десятичная коррекция |
|DEC |dst,src|Decrement |Декремент |
|DECW | |Decrement Word |Декремент слова |
|INC |dst |Increment |Инкремент |
|INCW |dst |Increment Word |Инкремент слова |
|SBC |dst |Subtract with Carry |Вычесть с заемом |
|SUB |dst |Subtract |Вычесть |
| |dst | | |
| |dst,src| | |
| | | | |
| |dst,src| | |
|ЛОГИЧЕСК| | | |
|ИЕ | | | |
|КОМАНДЫ | | | |
|AND |dst,src|Logical AND |Логическое И |
|COM | |Complement |Дополнение ( НЕ ) |
|OR |dst |Logical OR |Логическое ИЛИ |
|XOR |dst,src|Logical EXCLUSIVE OR |Исключающее ИЛИ |
| | | | |
| |dst,src| | |
|КОМАНДЫ | | | |
|УПРАВЛЕН| | | |
|ИЯ | | | |
|ПРОГРАММ| | | |
|ОЙ | | | |
|CALL |dst |Call Procedure |Вызов подпрограммы |
|DJNZ |r,dst |Decrement and Jump |Декремент и переход, |
| | |Non Zero |если не нуль |
|IRET | |Interrupt Return |Возврат из прерывания |
|JP |cc,dst |Jump |Переход |
|JR | |Jump Relative |Переход относительный |
|RET |cc,dst |Return |Возврат из подпрограммы |
| | | | |
|КОМАНДЫ | | | |
|МАНИПУЛЯ| | | |
|ЦИИ | | | |
|БИТАМИ | | | |
|TCM |dst,src|Test Complement |Проверить дополнение |
| | |Under Mask |с маской |
|TM | |Test Under Mask |Проверить с маской |
|AND |dst,src|Bit Clear |Очистить биты |
|OR | |Bit Set |Установить биты |
|XOR |dst,src|Bit Complement |Дополнить биты |
| | | | |
| |dst,src| | |
| | | | |
| |dst,src| | |
|КОМАНДЫ | | | |
|ПЕРЕСЫЛК| | | |
|И БЛОКОВ| | | |
|LDCI |dst,src|Load Constant |Загрузить константу |
| | |Autoincrement |с автоинкрементом |
|LDEI | |Load External Data |Загрузить внешние данные |
| |dst,src|Autoincrement |с автоинкрементом |
| | | | |
|КОМАНДЫ | | | |
|СДВИГОВ | | | |
|RL |dst |Rotate Left |Циклический влево |
|RLC |dst |Rotate Left |Циклический влево |
| | |Through Carry |через перенос |
|RR |dst |Rotate Right |Циклический вправо |
|RRC |dst |Rotate Right |Циклический вправо |
| | |Through Carry |через перенос |
|SRA |dst |Shift Right Arithmetic |Арифметический вправо |
|SWAP |dst |Swap Nibbles |Свопинг полубайтов |
|КОМАНДЫ | | | |
|УПРАВЛЕН| | | |
|ИЯ | | | |
|ПРОЦЕССО| | | |
|РОМ | | | |
|CCF | |Complement Carry Flag |Дополнить флаг переноса |
|DI | |Disable Interrupts |Запретить прерывания |
|EI | |Enable Interrupts |Разрешить прерывания |
|HALT | |Halt |Переход в режим HALT |
|NOP | |No Operation |Нет операции |
|RCF | |Reset Carry Flag |Сбросить флаг переноса |
|SCF | |Set Carry Flag |Установить флаг переноса |
|SRP |src |Set Register |Установить указатель |
| | |Pointer |регистров |
|STOP | |Stop |Переход в режим STOP |
|WDH | |WDT Enable During |Разрешение сторожевого |
| | |HALT |таймера в режиме HALT |
|WDT | |WDT Enable or Refresh |Разрешение или переза- |
| | | |пись сторожевого таймера |
1.3.3.2. Условия ветвления программы
Команды переходов JP и JR обеспечивают ветвление программы по различным
условиям. В качестве условий используются состояния флагов C,Z,S и V, а
также их логические функции. Набор допустимых для языка ассемблера условий
с указанием мнемонического обозначения (cc), значения, соответствующего
состояния флагов и шестнадцатеричного кода условия приведен в табл.1.9.
Набор условий предусматривает ветвление по состояниям отдельных флагов, а
также по всем возможным соотношениям между целыми числами со знаком и между
беззнаковыми целыми числами.
Таблица 1.9. Мнемоника условий (cc) и цифра КОП (c)
|cc |Значение |Состояние флагов |c |
|F |Всегда ложно |— |0 |
| |Всегда истинно |— |8 |
|C |Есть перенос |C=1 |7 |
|NC |Нет переноса |C=0 |F |
|Z |Есть нуль |Z=1 |6 |
|NZ |Нет нуля |Z=0 |E |
|PL |Положительно |S=0 |D |
|MI |Отрицательно |S=1 |5 |
|OV |Переполнение |V=1 |4 |
|NOV |Нет переполнения |V=0 |C |
|EQ |Равно |Z=1 |6 |
|NE |Не равно |Z=0 |E |
|GE |Больше или равно |(S xor V)=0 |9 |
|LT |Меньше |(S xor V)=1 |1 |
|GT |Больше |(Z or (S xor V))=0 |A |
|LE |Меньше или равно |(Z or (S xor V))=1 |2 |
|UGE |Б/з больше или равно |C=0 |F |
|ULT |Б/з меньше |C=1 |7 |
|UGT |Б/з больше |(C=0 and Z=0)=1 |B |
|ULE |Б/з меньше или равно |(C or Z)=1 |3 |
1.4. Конструктивное исполнение микроконтроллеров Z8
Микроконтроллеры широкого применения Z8 выпускаются в различном
конструктивном исполнении. Наиболее дешевым и удобным для большинства
применений является корпус типа DIP ( Dual In Line Package ). Схема
расположения выводов МК для корпусов этого типа показана на рис.1.48.
Большинство моделей МК имеет также вариант исполнения в корпусе типа SOIC (
Smal Outline Package ), предназначенном для монтажа на поверхность. Модель
40 выпускается также и в квадратных 44 выводных корпусах типа PLCC (
Plastic Chip Carrier ) и QFP (Quad Flat Pack ). Модели МК 30, 31, и 40 с
возможностью многократного перепрограммирования производятся в корпусах
типа CerDIP Window Lid, имеющих кварцевое окно для оптического стирания.
Полное обозначение микросхемы, кроме шифра, указанного в табл.1.1, содержит
дополнительно две цифры, соответствующие максимальной частоте в мегагерцах,
три буквы и необязательный буквенно-цифровой код партии. Первая буква
означает тип корпуса ( P —пластмассовый DIP, S- SOIC и т.п. ), вторая
—температурный диапазон ( S —стандартный: 0 —700C, E -расширенный: -40
—1050C), третья —характеризует защитную оболочку от воздействия окружающей
среды ( C — стандартная пластмассовая, E —стандартная герметичная ).
Например, полное обозначение МК Z86E02 может быть следующим:
Z86E0208PSC.
Рис. 1.48. Расположение выводов микроконтроллеров Z8
Для более полной информации следует обратиться к фирменным справочникам
[4,5].
ЗАКЛЮЧЕНИЕ
На основе рассмотренных в настоящем пособии материалов можно заключить, что
однокристальные микроконтроллеры являются перспективной элементной базой
для построения устройств передачи и обработки данных. Они имеют все
необходимые атрибуты для решения всех задач, возникающих при проектировании
таких устройств. Прежде всего, это аппаратные средства микроконтроллеров,
начиная от встроенной памяти программ и данных и кончая размещенными на
кристалле периферийными устройствами, а также средствами обеспечения
надежной работы в условиях помех. Разнообразие конструктивного исполнения и
возможность выбора варианта с низким напряжением питания и жесткими
условиями эксплуатации позволяют разработчику всегда подобрать подходящую
модель микроконтроллера для своей конкретной задачи. Комплексная система
команд, возможность программирования аппаратной конфигурации, режимов
резервирования и низкого электромагнитного излучения позволяют при весьма
ограниченных объемах встроенной памяти программ решать сложнейшие задачи
применения. Фирма Zilog снабжает свои изделия подробной документацией и
средствами разработки.
Рассмотренными микроконтроллерами номенклатура продуктов фирмы для
устройств передачи и обработки информации не ограничивается. Фирма Zilog
производит большое разнообразие микроконтроллеров Z8, микроконтроллеров для
цифрового телевидения, для телефонных автоответчиков, цифровых сигнальных
процессоров, контроллеров для периферийных устройств и внешней памяти
персональных компьютеров, аудио и мультимедиа приборов, специальных
микропроцессоров для систем связи [7].
Использование микроконтроллеров для построения устройств передачи и
обработки информации позволяет не только улучшить их основные технические
характеристики, такие как надежность, быстродействие, точность,
массогабаритные характеристики, энергопотребление, но и получить
сопровождаемую конструкцию, совершенствование функций которой можно
производить без изменения конструкторской документации и перестройки
производственного цикла.
ЛИТЕРАТУРА
1. Боккер П. ISDN. Цифровая сеть с интеграцией служб. Понятия, методы,
системы: Пер. с нем. - М.: Радио и связь, 1991. - 304 с.
2. Embedded Control Handbook.- Microchip Technology, Inc.- 1994.
3. Z8 Microcontrollers. User's Manual.- Zilog, Inc.- 1995.
4. Discrete Z8 Microcontrollers. Databook.- Zilog, Inc.- 1994.
5. Infrared Remote Controllers. Databook.- Zilog, Inc.- 1994.
6. Superintegration Products Guide 1996-.- Zilog, Inc.- 1996.
-----------------------
[pic]
[pic]
[pic]
Страницы: 1, 2
|