
Государственный комитет связи и информатизации Украины
____________________________________________________________________
Украинская государственная академия связи им. А.С. Попова
Кафедра вычислительной техники и микропроцессоров
ИЗУЧЕНИЕ СИСТЕМЫ КОМАНД
И МЕТОДОВ ПРОГРАММИРОВАНИЯ
МИКРОКОНТРОЛЛЕРА 68НС05J
ФИРМЫ MOTOROLA
Методическое руководство к лабораторной работе
по дисциплине
“Вычислительная техника и микропроцессоры”
для специальностей: 8. 092402, 7. 092402, 7. 092407, 09. 01
УТВЕРЖДЕНО
советом факультета
многоканальной
электросвязи
Протокол № 5
от 23.02.2001 г.
Одесса 2001
УДК 681.335.5(075)
План НМИ 2000/2001 уч. г.
Составитель – И.Е. Байдан
Рецензенты – Б.С. Владишевский
И.А. Киреев
Рассмотрены для изучения студентами в лаборатории особенности системы команд и методов программирования микроконтроллера М68НС05J фирмы MOTOROLA.
Приведены все команды микроконтроллера. Представлено домашнее задание и форма отчетности о лабораторной работе.
ОДОБРЕНО
на заседании кафедры
вычислительной техники
и микропроцессоров
и рекомендовано к печати.
Протокол № 5
от 22.01.2001 г.
1 Цель работы
Целью работы является изучение способов адресации и системы команд однокристального микроконтроллера 68НС05J.
2 Основные положения. Способы адресации и система команд
Микроконтроллер выполняет набор операций над операндами, размещенными в регистрах А, Х и памяти. Команды имеют длину от 1 до 3-х байтов: первый байт содержит код операции, второй и третий байты обеспечивают адресацию операнда. Для выборки операнда используются следующие способы адресации:
регистровая (операнд располагается в регистре А или X);
косвенно-регистровая (адресом операнда служит содержимое регистра X);
индексная (адрес операнда образуется сложением содержимого регистра Х и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды);
прямая (8- или 16-разрядный адрес операнда задается во втором и третьем байте команды);
непосредственная (8-разрядный операнд содержится во втором байте команды);
относительная (используется только в командах ветвления, адрес команды образуется сложением текущего содержимого PC и заданного во втором байте команды 8-разрядного смещения, которое является числом со знаком).
При косвенно-регистровой и прямой адресации с 8-разрядным адресом обращение возможно только к 256 начальным позициям адресного пространства, в котором располагаются все регистры микроконтроллера и основная часть ОЗУ. При индексной адресации смещение является числом без знака. Поэтому при 8-разрядном смещении адресуются 512 начальных позиций адресного пространства. Данные способы адресации будем называть короткими. Индексная адресация с 16-разрядным смещением и прямая с 16-разрядным адресом позволяют обращаться к любой позиции адресного пространства, однако при этом необходимо, чтобы значение адреса не превышало $1FFF. Эти способы адресации будем называть длинными. При относительной адресации возможен переход к командам, расположенным в пределах 127 позиций ниже или выше очередной команды программы.
Выполняемые микроконтроллером команды делятся на группы команд пересылки, арифметических и логических операций, сдвигов, битовых операций и установки признаков, управления программой и процессором. Ниже рассматривается полный перечень этих команд, а в приведенных таблицах даются их мнемокоды. В набор команд входят безадресные и одноадресные команды. В одноадресных командах задается адрес используемого операнда или размещения результата. В таблицах после мнемокода этих команд указывается символ (opr), который при записи на языке ассемблера заменяется символом, определяющим используемый способ адресации. Адресуемый таким образом операнд обозначается символом М. При непосредственной адресации вместо символа (opr) записывается операнд #Im.
Команды пересылки (табл. 2.1) или копирования данных осуществляют загрузку операндов из памяти в регистры А, Х или запись содержимого этих регистров в память. При загрузке (команды LDA, LDX) используются все способы адресации, кроме относительного; при записи в память (команды STA, STX) не используется также непосредственная адресация. Команды TAX, TXA выполняют передачу операндов между регистрами А, X. К этой же группе относятся команды CLRA, CLRX, CLR, производящие запись 0 в регистры А, Х и ячейку памяти, выбираемую с помощью коротких способов адресации.
Таблица 2.1 – Команды пересылки (копирования данных)
Мнемокод |
Команда |
Операция |
LDA (opr) LDX (opr) |
Загрузка А Загрузка Х |
М А М Х |
STA (opr) STX (opr) |
Запись А в память Запись Х в память |
А М Х М |
TAX ТХА |
Пересылка А в Х Пересылка Х в А |
А Х Х А |
CLR (opr) CLRA CLRX |
Запись 0 в М Запись 0 в А Запись 0 в Х |
$00 М $00 A $00 X |
Команды арифметических операций (табл. 2.2) выполняют соответствующие действия над операндами, один из которых располагается в аккумуляторе А, где размещается затем и результат. При операциях сложения и вычитания с учетом и без учета признака переноса С (команды ADC, ADD, SBC, SUB) второй операнд М адресуется любым способом, кроме относительного. При операциях инкремента, декремента (команды INC, INCA, INCX, DEC, DECA, DECX) и изменения знака (перевод в дополнительный код, команды NEG, NEGA, NEGX) используются только короткие способы адресации операнда. Команда умножения MUL выполняется над 8-разрядными операндами без знака, расположенными в регистрах А, X, 16-разрядное произведение размещается в этих же регистрах (старший байт в X, младший байт в А). Операция деления микроконтроллером не производится.
Команды сравнения СМР, СРХ выполняют вычитание операндов без записи результата, но с установкой значений признаков N, Z, С в соответствии с полученным результатом.
Таблица 2.2 – Команды арифметических и логических операций, сравнения и
тестирования
Мнемокод |
Команда |
Операция |
ADD (opr) ADC (opr) SUB (opr) SBC (opr) |
Сложение Сложение с переносом Вычитание Вычитание с заемом |
А + М А А + М + С А А – М А А – М – С А |
INC (opr) INCA INCX DEC (opr) DECA DECX |
Инкремент М Инкремент А Инкремент Х Декремент М Декремент А Декремент Х |
М + 1 М А + 1 А Х + 1 Х М – 1 М А – 1 А Х – 1 Х |
NEG (opr) NEGA NEGX |
Изменение знака М Изменение знака А Изменение знака Х |
0 – М М 0 – А А 0 – X Х |
СМР(opr) СРХ TST(opr) TSTA TSTX |
Сравнение А с М Сравнение Х с М Тестирование М Тестирование А Тестирование Х |
А – М Х – М М – 0 А – 0 Х – 0 |
MUL |
Беззнаковое умножение |
А * Х Х А |
AND (opr) ORA (opr) EOR (opr) |
Логическое И Логическое ИЛИ Исключающее ИЛИ |
А ^ М А А \/ М А А \/– М А |
СОМ (opr) СОМА СОMX |
Логическая инверсия М Логическая инверсия А Логическая инверсия Х |
М М А А Х Х |
BIT (opr) |
Битовое тестирование |
А^ М |
Команды тестирования TST, TSTA, TSTX устанавливают признаки N, Z в соответствии со значением выбираемого операнда. К этой группе относятся команды AND, ORA, EOR , которые выполняют логические операции И, ИЛИ, Исключающее ИЛИ над разрядами содержимого аккумулятора А и адресуемого операнда. При выполнении этих команд используются такие же способы адресации, как и в командах сложения-вычитания. В командах логической инверсии СОМ, СОМА, СОМХ используются только короткие способы адресации. Команда битового тестирования BIT производит логическое умножение операндов (операция И) без записи результата, но с установкой признаков N, Z.
Команды сдвигов (табл. 2.3) выполняют арифметические (команды ASL, ASLA, ASLX, ASR, ASRA, ASRX), логические (команды LSL, LSLA, LSLX, LSR, LSRA, LSRX) и циклические (команды ROL, ROLA, ROLX, ROR, RORA, RORX) сдвиги над операндами, расположенными в регистрах А, Х или позициях памяти, выбираемой с помощью коротких способов адресации. Отметим, что команды ASL, ASIA, ASLX реализуют такие же операции, как и команды LSL, LSLA, LSLX.
Таблица 2.3 – Команды сдвигов
Мнемокод |
Команда |
Операция |
ASLA, LSLA ASLX, LSLX |
Арифметический, логический сдвиг влево |
|
ASRA ASRX |
Арифметический сдвиг вправо |
|
LSLA LSLX |
Логический сдвиг вправо |
|
ROLA ROLX |
Циклический сдвиг влево |
|
RORA RORX |
Циклический сдвиг вправо |
|
Команды битовых операций BCLR, BSET (табл. 2.4) устанавливают значение 0 или 1 для n-го бита в операнде, 8-разрядный адрес которого содержится во втором байте команды (прямая адресация). Номер бита n задается в команде. Команды CLC, CLI и SEC, SEI устанавливают значение 0 или 1 признаков С, I в регистре условий CCR. При этом команды CLI и SEI разрешают и запрещают обслуживание поступающих запросов прерывания.
Таблица 2.4 – Команды битовых операций и установки признаков
Мнемокод |
Команда |
Операция |
BCLR n, (opr) BSET n, (opr) |
Установка значения бита bn=0 Установка значения бита bn=1 |
0 bn 1 bn |
CLC CLI SEC SE1 |
Установка признака С=0 Установка признака 1=0 Установка признака С=1 Установка признака 1=1 |
0 С 0 I 1 C 1 I |
При выполнении команд пересылки, арифметических и логических операций, сдвигов, битовых операций происходит изменение значений определенных признаков в регистре условий CCR. В табл. 2.5 изменение этих признаков показано символами:
"+" – установка значения по результату операции;
"–" – значение остается неизменным;
"0","1" – установка соответствующих значений признаков.
Таблица 2.5 – Установка значений признаков при выполнении команд
Команды |
Признаки |
||||
H |
I |
N |
Z |
С |
|
LDA, LDX, STA, AND, ORA, EOR, BIT, INC, INCA, INCX, DEC, DECA, DECX ADD, ADDC |
–
+ |
–
– |
+
+ |
+
+ |
–
+ |
SUB, SBC, NEG, CMP, CPX, ASL, ASLA, ASLX, LSL, LSLA, LSLX, ASR, ASRA, ASRX, ROL, ROLA, ROLX, ROR, RORA, RORX |
|
|
+ |
+ |
+ |
LSR, LSRA, LSRX |
– |
– |
0 |
+ |
+ |
CLR,CLRA, CLRX |
– |
– |
0 |
1 |
– |
СОМ, COMA, COMX |
– |
– |
+ |
+ |
1 |
STX, TST, TSTA, TSTX |
– |
– |
+ |
+ |
0 |
MUL |
0 |
– |
– |
– |
0 |
CLC |
– |
– |
– |
– |
0 |
CLI |
– |
0 |
– |
– |
– |
SEC |
– |
– |
– |
– |
1 |
SEI |
– |
1 |
– |
– |
– |
SWI |
– |
1 |
– |
– |
– |
RTI |
+ |
+ |
+ |
+ |
+ |
BRCLR, BRSET |
– |
– |
– |
– |
+ |
WAIT, STOP |
– |
0 |
– |
– |
– |
Для управления выполнением программы используются команды безусловного перехода JMP, условных и безусловных ветвлений (Вcc, BRCLR, BRSET и BRA, BRN), перехода и ветвления к подпрограмме (JSR, BSR), возврата из подпрограммы RTS, программного прерывания SWI, возврата из прерывания RTI (табл. 2.6). Команда JMP загружает в программный счетчик PC адрес следующей команды из ячейки памяти, выбираемой любым способом, кроме относительной адресации. При этом адрес следующей команды может быть больше адреса текущей на х=1, 2 или 3 в зависимости от используемого командой JMP способа адресации.
Таблица 2.6 – Команды управления программой и процессором
Мнемокод |
Команда |
Операция |
JMP (орг) Всс d8 |
Безусловный переход Условное ветвление |
ЕА PC PC + d8 РС, если СС=1 |
BRA d8 BRN d8 |
Безусловное ветвление Отсутствие ветвления |
PC + d8 PC PC + 2 PC |
BRCLR n, (opr), d8 BRSET n, (opr), d8 |
Ветвление при bn=0 Ветвление при bn=1 |
PC + d8 PC, если bn=0 PC + d8 PC, если bn=1 |
JSR (opr) |
Переход к подпрограмме |
PC + x PC, PCl (SP), SP – 1 SP PCh (SP), SP – 1 SP (EA) PC |
BSR d8 |
Ветвление к подпрограмме |
PC + 2 PC PCI (SP), SP – 1 SP PCh (SP), SP – 1 SP PC + d8 PC |
RTS |
Возврат из подпрограммы |
SP + 1 SP, (SP) PCh SP + 1 SP, (SP) PCI |
SWI |
Программное прерывание |
PC + 1 PC, PCI (SP), SP – 1 SP PCh (SP), SP – 1 SP X (SP), SP – 1 SP A (SP), SP– 1 SP CCR (SP), SP– 1 SP Vc (SP), SP – 1 SP |
Продолжение таблицы 2.6
Мнемокод |
Команда |
Операция |
RTI |
Возврат из прерывания |
SP + 1 SP, (SP) CCR SP + 1 SP, (SP) A SP + 1 SP, (SP) X SP + 1 SP, (SP) PCh SP + 1 SP, (SP) PCI |
RSP |
Сброс регистра SP |
$00FF SP |
NOP |
Отсутствие операций |
PC + 1 PC |
WAIT |
Переход в режим ожидания |
Остановка процессора 1 S |
STOP |
Переход в режим останова |
Остановка ГТИ, 1 1 |
Команды ветвления используют только относительный способ адресации. Команды условного ветвления Вcc (табл. 2.7) производят загрузку в PC нового адреса, если условие cc имеет значение 1.
Таблица 2.7 – Мнемокоды и условия выполнения команд условных
переходов Вcc
Мнемокод |
Проверяемое условие |
Значение cc |
NE BQ |
Не равно (ненулевой результат) Равно (нулевой результат) |
Z=0 Z=1 |
HI HS |
Выше Ниже или равно |
(Z+С)=0 (Z+С)=1 |
HS LO |
Выше или равно (нет переноса) Ниже (есть перенос) |
С=0 С=1 |
PL MI |
Положительный результат Отрицательный результат |
N=0 N=1 |
HCC HCS |
Нет переноса между тетрадами Есть перенос между тетрадами |
H=0 Н=1 |
МС MS |
Прерывания разрешены Прерывания запрещены |
1=0 1=1 |
IH IL |
Отсутствие запроса прерывания Поступление запроса прерывания |
IRQ#=1 IRQ#=0 |
В табл. 2.5 приведены 16 видов условий, которые вызывают ветвление программы. Помимо определенных значений признаков условием ветвления может быть поступление внешнего запроса прерывания на вход IRQ#. Мнемокод условия приписывается к букве В, образуя мнемокод соответствующей команды условного ветвления, например В+PL=BPL – мнемокод команды ветвления при положительном результате предыдущей операции (признак N=0). Команды BRCLR, BRSET проверяют значение n-го бита в операнде, выбираемом с помощью короткой прямой адресации, и выполняют ветвление, если bn равен 0 или 1. Значение n задается непосредственно в этих командах: #im8=n. Команда BRA осуществляет безусловное ветвление, т. е. эквивалентна команде JMP с относительной адресацией. Команда BRN пропускает два байта в выполняемой программе.
Команды перехода и ветвления к подпрограмме JSR, BSR заносят из PC в стек адрес следующей команды программы, а затем загружают в PC новое содержимое. В команде JSR адрес EA ячейки, из которой загружается PC, определяется выбранным способом адресации (возможен любой способ, кроме регистрового и относительного), в команде BSR ячейка выбирается с помощью относительной адресации. По команде возврата из подпрограммы RTS из стека восстанавливается прежнее содержимое PC.
Команда программного прерывания SWI загружает в стек не только текущее содержимое PC, но и содержимое основных регистров: А, X, CCR. При выполнении этой команды заполняется пять ячеек стека. Команда возврата из прерывания RTI восстанавливает прежнее содержимое регистров А, X, CCR, PC из стека.
Для управления процессором служат команда RSP, устанавливающая в регистре SP начальное значение $00FF, команда NOP, не выполняющая каких-либо операций (пропуск байта), и команды WAIT, STOP, переводящие микроконтроллер в энергосберегающие режимы ожидания и останова с разрешением прерывания (установка признака 1=1) для последующего возврата в нормальный режим.
Большинство команд микроконтроллера имеют время выполнения от 2Тc до 6Тc. Однако некоторые команды выполняются в течение большего времени: MUL– llTс, SWI – lOTс, RTI – 9Tс.