Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
91
Добавлен:
12.03.2015
Размер:
1.3 Mб
Скачать

Министерство общего и профессионального образования

Российской Федерации

Ижевский Государственный Технический университет

Внутренняя архитектура и

СИСТЕМА КОМАНД

МИКРОКОНТРОЛЛЕРА NEC 78K0/KF1+

Методические указания к лабораторной работе №2

по курсу «Цифровые устройства и микропроцессоры»

(Приложение Ж)

Ижевск

2007

Содержание

1. Цель и содержание работы 4

1.1 Содержание отчёта 4

2. Архитектура микроконтроллера 4

2.1 Распределение памяти 6

2.2 Регистры процессора 8

2.2.1 Регистры управления 8

2.2.2 Регистры общего назначения. 11

2.2.3 Регистры специального назначения. 11

3. Адресация команд. 12

3.1 Относительная адресация. 12

3.2 Прямая адресация 13

3.3 Косвенная табличная адресация 14

3.4 Регистровая адресация 15

4. Адресация операндов. 15

4.1 Неявная адресация. 15

4.2 Регистровая адресация 16

4.3 Прямая адресация 16

4.4 Короткая прямая адресация 17

4.5 Адресация регистров специального назначения (SFR) 18

4.6 Косвенная регистровая адресация 19

4.7 Базовая адресация 19

4.8 Относительная индексная адресация 20

4.9 Стековая адресация 21

5. Система команд. 22

5.1 Операции 22

5.2 Соглашения при описании команды

(таблицы команд) 23

5.3 Перечень команд процессора сгруппированный

по видам адресации 32

5.4 Описание инструкций. 34

5.4.1 Команды передачи 8-разрядных данных. 34

5.4.2 Команды передачи 16-разрядных данных 34

5.4.3 Математические и логические операции над 8-разрядными

данными 34

5.4.4 Команды математических операций над 16-разрядными

данными 34

5.4.5 Команды инкремента/декремента 37

5.4.6 Команды циклического сдвига 37

5.4.7 Команды манипуляции с битами 38

5.4.9 Команды работы со стеком 39

5.4.10 Команда безусловного перехода 40

5.4.11 Команды условного перехода 40

5.4.12 Дополнительные команды управления 41

6. Контрольные вопросы 42

  1. Цель и содержание работы

Целью работы является изучение архитектуры и системы команд микроконтроллеров фирмы NEC семейства 78K0/KF1+.

    1. Содержание отчёта

Отчёт о лабораторной работе должен содержать:

  1. титульный лист;

  2. цель и задачи работы;

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

  4. выводы по работе.

  1. Архитектура микроконтроллера

Структурная схема микроконтроллера приведена на рисунке 1.

Как видно из схемы, в состав микроконтроллера входит ядро 78К0, флешь-память, высокоскоростная оперативная память данных, расширенная память данных, умножитель/сдвигатель, контроллер прерываний, АЦП, 5 последовательных портов ввода-вывода, сторожевой и часовой таймеры, 2 восьмиразрядных таймер-счётчика, 2 шеснадцатиразрядных таймер-счётчика,

2 таймера общего назначения, 8 портов ввода-вывода, 1 порт ввода, часы реального времени и управляющие сигналы.

Рисунок 1 – Структурная схема микроконтроллера 78K0/KF1+

    1. Распределение памяти

Контроллер 78К0 может адресовать 64Кбайт адресного пространства. Карта памяти представлена на рисунке 2.

Рисунок 2 – карта памяти микроконтроллера 78К0

Как видно из рисунка, карта памяти делится на несколько областей. В область флешь- памяти входит таблица векторов прерываний (0х0000 – 0х003f), таблица CALLT (0х0040 – 0х007f) , память программ (0х0080 – 0х07ff ; 0x1000 – 0xEFFF). После области флешь –памяти следует область внешней памяти, размером 1 Кбайт(0хF000 – 0xF3FF). Далее область внутренней памяти данных (0хF400 – 0xF7FF) и высокоскоростной памяти данных (0xFB00 – 0xFEFF) включающей универсальные регистры. Далее идёт область регистров специального назначения. Внутренняя память программ хранит программы и различные константы. Обычно при выполнении кода адрес команды указывается в счётчике программ (PC).

  1. Таблица векторов прерываний. 64 байта по адресам 0х0000 – 0х003f зарезервированы под таблицу векторов прерываний. Адреса прерываний приведены в таблице 1. Младшие 8 бит хранятся по чётным адресам, а старшие по нечётным.

Таблица 1 – Адрес –векторы прерываний.

Адрес - вектор

Прерывание

Адрес - вектор

Прерывание

0х0000

RESET , POC, LVI, WDT

0x0020

INTTM000

0x0022

INTTM010

0х0004

INTLVI

0x0024

INTAD

0х0006

INTP0

0x0026

INTSR0

0х0008

INTP1

0x0028

INTWTI

0х000A

INTP2

0x002A

INTTM51

0x000C

INTP3

0x002C

INTKR

0x000E

INTP4

0x002E

INTWT

0x0010

INTP5

0x0030

INTP6

0x0012

INTSRE6

0x0032

INTP7

0x0014

INTSR6

0x0034

INTDMU

0x0016

INST6

0x0036

INTCSI11

0x0018

INTCSI10/INTST0

0x0038

INTTM001

0x001A

INTTMH1

0x003A

INTTM011

0x001C

INTTMH0

0x003C

INTACSI

0x001E

INTTM50

  1. Таблица команды CALLT выделяет 64 байта адресного пространства для сохранения адресов текущих команд, которые вызывали подпрограммы.

  2. Область входа команды CALLF использует 2 байта адресного пространства для прямого вызова подпрограммы с указанием её адреса.

  3. Оперативная память данных.

Внутренняя высокоскоростная память данных расположена по адресам 0xFB00 – 0xFEFF. Верхние 32 байта выделяются под регистры общего назначения, 4 банка по восемь регистров. Область регистров не может использоваться для программ или инструкций. Внутренняя высокоскоростная оперативная память может также использоваться как память стека.

Внутренняя расширенная оперативная память данных расположена по адресам 0xF400 – 0xF3FF. Имеет 1024*8бит ёмкости. Используется эта память так же как и высокоскоростная память и в первую очередь дополняет её, с тем лишь исключением, что данная область не может использоваться как память стека.

  1. Область регистров специального назначения.

Регистры специального назначения находятся в области памяти по адресам 0хFF00 – 0xFFFF

  1. Адресация памяти данных.

Адресация памяти используется для определения адреса команды или регистра, к которому обращается выполняемая инструкция. В контроллере 78К0/KF1+ реализовано несколько способов адресации. Это сделано для удобства использования ресурсов процессора.

    1. Регистры процессора

Контроллер 78К0/KF1+ включает в себя следующие регистры.

2.2.1 Регистры управления. Регистры управления это специальные регистры, отвечающие за стековую память, последовательность выполнения программы и ее состояние. Регистры управления включают в себя

программный счетчик (PC), слово состояния (PSW) и указатель стека (SP).

Программный счетчик это 16-разрядный регистр, который содержит адрес выполняемой команды. В нормальном состоянии после выполнения текущей команды РС автоматически увеличивается на величину равную длине выполняемой команды в байтах. После выполнения команды ветвления программный счетчик принимает значение непосредственно заданное в команде ветвления. Когда на вход микроконтроллера подается сигнал RESET, программный счетчик принимает значение согласно вектору сброса, расположенному в ячейках таблицы векторов 0000H –0001H.

Слово состояния (PSW)

Слово состояния процессора- это 8-разрядный регистр. Разряды слова состояния (флаги) могут сбрасываться или устанавливаться выполняемой командой. Содержимое слова состояния автоматически заносится в стек, когда генерируется запрос на прерывание или когда выполнена инструкция PUSH PSW. После выполнения команд RETI,RETB и POP PSW слово состояния автоматически восстанавливается значением, извлеченным из стека.

Активный сигнал RESET инициирует PSW значением 02H.

Битовое представление слова состояния процессора представлено на рисунке 3.

Рисунок 3 – слово состояния процессора.

В слово состояния процессора входят следующие флаги (признаки):

- Флаг разрешения прерывания (IE – Interrupt Enable) Этот флаг контролирует подтверждение поступающих запросов прерывания. Когда IE = 0 (состояние DI), все прерывания, кроме немаскируемых запрещены. Когда IE = 1 (состояние EI), прерывания разрешены. В данном случае подтверждение запросов прерывания контролируется флагами масок для каждого прерывания отдельно. После выполнения команды DI или подтверждения запроса на прерывание флаг IE сбрасывается в 0 и устанавливается в 1 после выполнения команды EI.

- Флаг признака нуля (Z – zero). Когда результатом арифметической или логической операции является нулевое значение, этот флаг устанавливается равным 1; во всех других случаях 0.

- Флаги выбора банка регистров (RBS0 и RBS1). Эти 2 флага используются для выбора одного из четырёх банков регистров. Банк выбирается с помощью команды SEL RBn (где n-номер банка).

- Флаг вспомогательного переноса (AC – Auxiliary Carry) Когда в результате арифметической или логической операции происходит перенос из бита

3 или заем в бит 3, тогда значение этого флага устанавливается равным 1; во всех других случаях 0.

- Штатный флаг приоритета. (ISP). Этот флаг управляет приоритетом маскируемых векторных прерываний. Когда этот флаг равен 0 , векторные запросы прерываний низкого уровня определяются регистрами приоритета прерываний (PR0L, PR0H, PR1L, PR1H). Фактически прерывания разрешены, если установлен флаг разрешения прерываний (IE).

- Флаг переноса (CY – Carry) Этот флаг устанавливается при переполнении или в результате заема, который может возникнуть соответственно после операции сложения или вычитания. Также этот флаг изменяется после операций циклического сдвига битов, и выполняет функцию накопителя во

время битовых операций.

Указатель стека (SP – stack pointer)

Указатель стека это 16-разрядный регистр, который содержит адрес вершины стека. Стек является частью адресного пространства микроконтроллера. В качестве стека может использоваться только встроенное высокоскоростное ОЗУ. Содержимое SP уменьшается перед записью (сохранением) данных в памяти стека и увеличивается после чтения (извлечение) данных из стека.

После активации сигнала RESET значение указателя стека становится неопределенным, поэтому после сброса и перед выполнением операций со стеком необходимо инициализировать указатель стека.

Процесс сохранения информации регистров в стек представлен на рисунках 4-6.

Рисунок 4 – сохранение данных в стек при выполнении инструкции PUSH rp (Указатель стека инициализирован SP=0xFEE0).

Рисунок 5 – сохранение данных в стек при выполнении инструкции СALL, CALLF, CALLT (Указатель стека инициализирован SP=0xFEE0).

Рисунок 5 – сохранение данных в стек при выполнении инструкции BRK и при орбслуживании прерываний. (Указатель стека инициализирован SP=0xFEE0).

Процесс извлечения данных из стека представлен на рисунках 7- 9.

Рисунок 7 – Извлечение данных из стека, при выполнении инструкции POP rp (SP=0xFEDE)

Рисунок 8 – Извлечение данных из стека, при выполнении инструкции RET (SP=0xFEDE)

Рисунок 9 – Извлечение данных из стека, при выполнении инструкции RETI, RETB (SP=0xFEDE)

Соседние файлы в папке методички к 78К0