Каталог файлов

Главная » Все файлы » Книги по электронике (Электронная библиотека)

Выберите файл!!!


ПРОГРАММИРУЕМ МИКРОКОНТРОЛЛЕРЫ Z8
17.12.2009, 01:23
загрузка...
ПРОГРАММИРУЕМ МИКРОКОНТРОЛЛЕРЫ Z8
М.Гладштейн, г. Рыбинск
Предлагаемый вниманию читателя цикл статей является продол¬жением ранее опубликованных материалов [1-8], подготовленных ав¬тором на основе фирменного руководства пользователя [9].
Часть 1. Система команд микроконтроллеров Z8
Математические возможности микроконтроллеров (МК) характери¬зуются системой команд. В МК использован двухадресный принцип построения команд, что позволяет сократить количество требуемых пересылок операндов. Первый операнд после выполнения команды ста¬новится результатом и называется операндом-получателем ( Destina¬tion Operand ), а второй - сохраняет свое значение и называется операндом-источником ( Source Operand ). Первый в описании систе¬мы команд обозначен аббревиатурой dst, а второй - src.
Код любой команды МК содержит код операции (КОП), определяю¬щий операцию команды и до двух адресных полей. Способы трактовки кодов в адресном поле называются способами адресации операндов. Прежде чем рассматривать набор команд, необходимо более подробно рассмотреть используемые способы адресации операндов.
1.1. Способы адресации операндов
В МК Z8 использовано шесть основных способов адресации операндов :
• регистровая ( Register );
• косвенная регистровая ( Indirect Register );
• индексная ( Indexed );
• прямая ( Direct );
• относительная ( Relative );
• непосредственная ( Immediate ).
Кроме того, регистровая и косвенная регистровая адресация имеют ряд модификаций - они могут использовать сокращенный 4-бит¬ный адрес рабочего регистра, полный 8-битный адрес регистра, сок¬ращенный 4-битный адрес рабочей пары регистров, полный 8-битный адрес регистровой пары. При использовании пар регистров использу¬ется четное выравнивание, т.е. допустимые адреса - четные числа. Шестнадцатибитные операнды занимают в регистровом файле пару ре¬гистров, причем по четному адресу размещается старший байт.
Все способы адресации операндов в системе команд МК Z8 при¬ведены в табл.1. В таблице указаны условные обозначения способов адресации, используемые в дальнейшем в таблице команд, наименова¬ние способа адресации, обозначение операнда на языке ассемблера, диапазон значений адреса и номер рисунка, на котором дана графи¬ческая интерпретация способа адресации.
Следует отметить, что адреса типа R, RR, IR, IRR предполага¬ют использование как полного 8-битного адреса регистра, так и сокращенного 4-битного. В последнем случае адрес размещается в младшей тетраде адресного байта, а в старшей тетраде указывается код 1110B (EH) :
E dst/src
Поэтому обращение к регистрам рабочей группы E СРФ возможно только с помощью рабочей регистровой адресации [2].
Ниже рассмотрены все варианты адресации, используемые в сис¬теме команд.
а) Рабочая регистровая адресация (рис.1).
Короткий 4-битный адрес в команде указывает адрес регистра в ра¬бочей или расширенной группе. Активная группа определяется состо¬янием указателя регистров RP [2].
б) Регистровая адресация (рис.2).
Полный 8-битный адрес в команде указывает местонахождение операн¬да в регистровом файле.
в) Рабочая регистровая адресация к паре (рис.3).
Короткий 4-битный адрес в команде ( должен быть четным ) указыва¬ет на регистр рабочей группы, в котором находится старший байт операнда. Младший байт находится в регистре, адрес которого на 1 больше. Активная группа регистров определяется состоянием указа¬теля регистров RP.
г) Регистровая адресация к паре (рис.4).
Полный 8-битный адрес в команде ( должен быть четным ) указывает на регистр, в котором находится старший байт операнда. Младший байт находится в регистре, адрес которого на 1 больше.
д) Косвенная рабочая регистровая адресация (рис.5).
Короткий 4-битный адрес в команде указывает адрес регистра в ра¬бочей группе, где находится адрес операнда. Активная группа опре¬деляется указателем регистров RP.
е) Косвенная регистровая адресация (рис.6).
Полный 8-битный адрес регистра в команде указывает местонахожде¬ние в регистровом файле адреса операнда.
ж) Косвенная адресация к памяти программ/данных через рабо¬чую регистровую пару (рис.7).
Короткий 4-битный адрес в команде указывает на рабочую пару ре¬гистров в регистровом файле (должен быть четным), где находится 16-битный адрес памяти программ/данных, по которому размещен опе¬ранд. Активная рабочая группа определяется указателем регистров RP.
з) Косвенная адресация к памяти программ/данных через ре¬гистровую пару (рис.8).
Полный 8-битный адрес в команде указывает на регистровую пару в регистровом файле (должен быть четным), где находится 16-битный адрес памяти программ/данных, по которому размещен операнд.
и) Индексная адресация (рис.9).
В команде указывается 4-битный адрес индексного регистра и 8-бит¬ный базовый адрес. Адрес операнда определяется МК как сумма базо¬вого адреса и содержимого индексного регистра.
к) Прямая адресация к памяти программ (рис.10).
В команде прямо указан 16-битный адрес (два байта) памяти прог¬рамм.
л) Относительная адресация к памяти программ (рис.11).
В команде указано 8-битное смещение со знаком (+127 ... -127) от-носительно текущего состояния программного счетчика РС (это адрес следующей команды). Исполнительный адрес вычисляется МК как сумма содержимого РС и смещения.
м) Непосредственная адресация (рис.1.12). Число, указанное в команде, используется МК как операнд.
1.2. Флаги процессора
Флаговый регистр FLAGS (FCH) содержит информацию о текущем состоянии процессора. Флаги и их расположение в регистре прведены на рис.13. Состояние флагового регистра после сброса является неопределенным.
Флаговый регистр FLAGS содержит 6 флагов состояния, информа¬ция в которых устанавливается в результате работы процессора. Че¬тыре флага (C, V, Z, S) используются командами условного перехо¬да. Два флага (H и D) используются командой десятичной коррекции. Оставшиеся два бита могут быть использованы как флаги пользовате¬ля (F1 и F2). Ниже подробно рассмотрено назначение каждого из ос¬новных флагов МК Z8.
1.2.1. Флаг переноса C (Carry Flag)
Флаг переноса устанавливается в 1, если в результате арифме¬тической операции генерируется “перенос из” или “заем в” старший 7-ой бит результата. В противном случае флаг С очищается в 0.
В процессе выполнения команд циклического или арифметическо¬го сдвига флаг переноса С содержит последний бит, выдвинутый из указанного в команде регистра.
Команды могут устанавливать, сбрасывать или инвертировать (дополнять) флаг переноса.
1.2.2. Флаг нуля Z (Zero Flag)
Если в результате арифметической или логической операции по¬лучается нулевой результат, то флаг Z устанавливается в 1, в про¬тивном случае флаг Z очищается в 0.
Если результат команды проверки бита в регистре равен 00Н, то флаг нуля устанавливается в 1, в противном случае - очищается в 0.
Если результат выполнения команды циклического или арифмети¬ческого сдвига равен 00Н, флаг Z устанавливается в 1, иначе - сбрасывается в 0.
1.2.3. Флаг знака S (Sign Flag)
Флаг знака хранит значение старшего бита результата текущей арифметической или логической операции, операции циклического или арифметического сдвига.
Для производства арифметических операций над числами со зна¬ком в МК используется представление информации в дополнительном коде. Положительное число при этом идентифицируется 0 в старшем значащем разряде и, соответственно, значение флага знака также равно 0. Отрицательное число идентифицируется 1 в старшем знача¬щем разряде и, соответственно, флаг S также будет равен 1.
1.2.4. Флаг переполнения V (Overflow Flag)
Для знаковых арифметических операций, операций циклического и арифметического сдвигов флаг переполнения V устанавливается в 1, если результат больше максимально возможного положительного числа (+127) или меньше минимально возможного отрицательного чис¬ла (-128), представленного 8-битным дополнительным кодом. Флаг V устанавливается в 0, если переполнение отсутствует. В результате поразрядных логических операций флаг V всегда сбрасывается в 0.
1.2.5. Флаг десятичной коррекции D (Decimal Adjust Flag)
Флаг десятичной коррекции D используется для двоично-деся¬тичной арифметики BCD (Binary Coded Decimal). Поскольку алгоритм десятичной коррекции различен для сложения и вычитания, этот флаг сохраняет информацию о последней выполненной команде, для после¬дующей команды десятичной коррекции DA. После выполнения операции вычитания флаг D устанавливается в 1, а после операции сложения - очищается в 0.
1.2.6. Флаг полупереноса H (Half Carry Flag)
Флаг полупереноса H устанавливается в 1, когда при сложении чисел генерируется перенос из 3-его бита или при вычитании гене¬рируется заем в 3-ий бит. Флаг H используется командой десятичной коррекции DA.
Значения всех флагов изменяются командой IRET при восстанов¬лении из стека состояния флагового регистра. Команды WDH и WDT устанавливают флаги Z, S и V в неопределенное состояние. Команда SWAP устанавливает в неопределенное состояние флаги C и V.
1.3. Набор команд
Команды микроконтроллеров Z8 функционально могут быть разде¬лены на восемь групп:
• команды загрузки;
• арифметические команды;
• логические команды;
• команды управления программой;
• команды манипуляции битами;
• команды пересылки блоков;
• команды сдвигов;
• команды управления процессором.
1.3.1. Описание системы команд
В [1] приведено краткое описание системы команд микроконт¬роллеров, причем для каждой команды дано мнемоническое обозначе¬ние, принятое в языке ассемблера, указан состав операндов и смысл команды на английском языке ( для понимания происхождения мнемо¬ники как аббревиатуры ) и на русском языке. Аббревиатура “cc” в колонке операндов команд управления программой означает код усло¬вия ( condition ), а аббревиатура “r” - любой регистр из рабочей группы ( register ).
1.3.2. Условия ветвления программы
Команды переходов JP и JR обеспечивают ветвление программы по различным условиям. В качестве условий используются состояния флагов C,Z,S и V, а также их логические функции. Набор допустимых для языка ассемблера условий с указанием мнемонического обозначе¬ния (cc), значения, соответствующего состояния флагов и шестнад¬цатеричного кода условия приведен в табл.2. Набор условий предус¬матривает ветвление по состояниям отдельных флагов, а также по всем возможным соотношениям между целыми числами со знаком и меж¬ду беззнаковыми целыми числами.
1.3.3. Коды команд и операции
Справочные данные по системе команд сведены в табл.3. Для каждой команды приведены мнемоника команды и описание операции (колонка “Команда и операция”), способы адресации операндов (ко¬лонка “Адрес”), код операции (колонка “КОП”), изменение состояния флагов (колонка “Флаги”), количество байтов в команде (колонка “Байт”) и количество тактов выполнения (колонка “Такт”).
Знак “<-“, используемый в описании операции, соответствует присвоению значения операнду-приемнику. Знак @ - это префикс кос¬венной адресации, а обозначение типа “Addr(n)” - означает бит Dn операнда с адресом Addr(n=0...7). В колонке кодов операции “r” - это шестнадцатеричный номер регистра рабочей группы (0...F), а “с” - шестнадцатеричный код условия (см. табл.2).
Изменение состояния флагов в колонке “Флаги” указывается с помощью условных обозначений, приведенных в табл.4.
Система команд МК Z8 позволяет эффективно кодировать разно¬образные алгоритмы автоматического контроля и управления.
ЛИТЕРАТУРА
1. Гладштейн М.А. Z8 - микроконтроллеры широкого применения.
• Радио, 1997, N5, с.27 - 29.
2. Гладштейн М.А. Изучаем микроконтроллеры Z8. Часть 1. Адресное пространство микроконтроллеров.- Радио, 1999, N 7.
3. Гладштейн М.А. Изучаем микроконтроллеры Z8. Часть 2. Синхронизация, сброс и сторожевой таймер.- Радио, 1999, N 8.
4. Гладштейн М.А. Изучаем микроконтроллеры Z8. Часть 3. Порты ввода/вывода.- Радио, 1999, N 9.
5. Гладштейн М.А. Изучаем микроконтроллеры Z8. Часть 4. Таймеры/счетчики.- Радио, 1999, N 10.
6. Гладштейн М.А. Изучаем микроконтроллеры Z8. Часть 5. Прерывания.- Радио, 1999, N 11.
7. Гладштейн М.А. Изучаем микроконтроллеры Z8. Часть 6. Режимы уменьшенного энергопотребления.- Радио, 1999, N 12.
8. Гладштейн М.А. Изучаем микроконтроллеры Z8. Часть 7. Интерфейс.- Радио, 2000, N 1.
9. Z8 Microcontrollers. User’s Manual. - Zilog Inc., 1995.

Всё в архиве

Категория: Книги по электронике (Электронная библиотека) | Добавил: Администратор
Просмотров: 1150 | Загрузок: 23 | Рейтинг: 0.0/0

Пожалуйста оставьте свои комментарии !!!!

Имя *:
Email:
Все смайлы
Код *:

Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов! Подробно тут!


Copyright Zloy Soft (Company) © 2008 - 2020