- •1. Структура и функционирование микроконтроллера mc68hc908gp32
- •1.1. Общая структура микроконтроллера mc68hc908gp32.
- •1.2. Организация и адресация памяти.
- •1.3. Генерация тактовых импульсов и запуск микроконтроллера.
- •1.4. Реализация прерываний.
- •1.5. Режимы функционирования.
- •2. Лабораторный стенд лс-1
- •2.1. Общее описание лабораторного стенда лс-1.
- •2.2. Основные функциональные узлы лабораторного стенда лс-1.
- •2.3. Включение лабораторного макета и подготовка его к работе.
- •3. Интегрированная среда программирования ics08gpgtz
- •3.1. Интегрированная среда WinIde.
- •3.2. Создание исходного текста и компиляция программы.
- •3.3. Моделирование выполнения программы.
- •3.4. Загрузка программы в память микроконтроллера.
- •3.5. Запуск и отладка программы на лабораторном макете.
- •Работа №1. Микроконтроллер mc68hc908gp32: регистровая структура, способы адресации, команды пересылки
- •Введение
- •Выполнение работы
- •Работа № 2. Микроконтроллер mc68hc908gp32: команды обработки данных
- •Введение
- •Выполнение работы
- •Работа № 3. Микроконтроллер mc68hc908gp32: команды управления программой и процессором.
- •Введение
- •Выполнение работы
- •Работа № 4. Микроконтроллер mc68hc908gp32: программирование на языке Ассемблера
- •Выполнение работы
- •Работа №5. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация параллельного ввода-вывода данных.
- •Введение
- •Порядок выполнения работы
- •Работа №6. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация последовательного обмена данными.
- •Введение
- •Порядок выполнения работы
- •Работа №7. Цифровая система на базе микроконтроллера mc68hc908gp32: ввод и обработка аналогового сигнала.
- •Введение
- •Порядок выполнения работы
- •Работа №8. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация таймерных функций.
- •Введение
- •Порядок выполнения работы
- •Приложение 1. Описание жидкокристаллического индикатора
- •Приложение 2.
- •Приложение 3.
3.5. Запуск и отладка программы на лабораторном макете.
Отладка программы на лабораторном макете осуществляется с помощью программы-приложения In-Circuit Debugger, которая запускается нажатием соответствующей функциональной клавиши в главном меню (рис.5).
Рис.7. Внешний вид экрана монитора при работе с приложением In-Circuit Debugger.
При выполнении данной программы экран содержит следующие компоненты (рис.7): меню в верхней части экрана, несколько групп функциональных клавиш, командную строку и семь окон: CPU08, Variables, Memory Window 1, Memory Window 2, Code Window 1: Disassembly, Code Window 2: Source и Status Window. В окне CPU08 отображается содержимое регистров процессора, а в окнах Memory Window 1 и Memory Window 2 - содержимое фрагментов памяти. Окно Code Window 1: Disassembly показывает фрагмент листинга дизассемблированной программы, а окно Code Window 2: Source – ассемблерный код. В окне Status Window отображается текущее состояние контроллера. Все команды функциональных клавиш доступны из меню, которое аналогично меню программы Simulator.
Программа In-Circuit Debugger выполняет те же функции, что и Simulator, но использует ресурсы контроллера, находящегося в составе лабораторного макета, а не его программно-логическую модель, которая входит в состав программы Simulator, выполняемой персональным компьютером. Внутрисхемный отладчик целесообразно использовать после предварительной отладки программы с помощью приложения Simulator.
Работа №1. Микроконтроллер mc68hc908gp32: регистровая структура, способы адресации, команды пересылки
Цель работы: знакомство с интегрированной средой программирования, изучение регистровой структуры микроконтроллера, способов адресации и команд пересылки данных.
Введение
Процессорный модуль CPU08, используемый в микроконтроллерах семейства 68HC08, выполняет набор из 90 команд с использованием 9 способов адресации.
Регистровая модель. Процессорный модуль CPU08 (рис.1.1) содержит 8-разрядные аккумулятор A и регистр признаков CCR, 16-разрядные индексный регистр H:X, указатель стека SP и программный счетчик PC.
|
7 0 |
|
|||||||
|
A |
Аккумулятор A |
|||||||
15 8 |
7 0 |
|
|||||||
Н |
Х |
Индексный регистр Н:Х |
|||||||
15 0 |
|
||||||||
РС |
Программный счетчик PC |
||||||||
15 0 |
|
||||||||
SP |
Указатель стека SP |
||||||||
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
V |
1 |
1 |
H |
I |
N |
Z |
C |
Регистр признаков CCR |
Рис.1.1. Регистровая модель процессора CPU08
Регистр CCR содержит значения следующих признаков:
C - признак переноса (принимает значение C=1 при возникновении переноса из старшего разряда результата);
Z - признак нуля (принимает значение Z=1 при нулевом результате);
N - признак знака (равен старшему разряду результата, при обработке чисел со знаком имеет значения N=0 при положительном результате, N=1 при отрицательном результате);
I - маска прерывания (при значении I=0 обработка прерываний разрешается, при I=1 – запрещается);
H - признак переноса между тетрадами (используется при операциях над двоично-десятичными числами).
V – признак переполнения при обработке чисел со знаком (принимает значение V=1, когда результат выходит за границы диапазона чисел +127…-128).
Программный счетчик PC содержит адрес очередной выполняемой команды. Максимальный объем адресуемой памяти для семейства 68HC08/908 составляет 64 Кбайт, при этом модели с меньшим размером памяти используют только часть адресуемого пространства. При запуске и перезапуске микроконтроллера (процедура RESET) в PC автоматически загружается адрес первой команды выполняемой программы (вектор начального запуска) из двух последних ячеек адресуемой памяти с адресами $FFFE-FFFF (старший байт PCh – младший байт PCl).
Указатель стека SP служит для адресации ячейки ОЗУ, являющейся вершиной стека. При запуске микроконтроллера (процедура RESET) в SP автоматически загружается значение $00FF, обеспечивая возможность использования в качестве стека ячеек ОЗУ и регистров, имеющих адреса в диапазоне $0000-FF. При дальнейшей работе процессора в качестве вершины стека может быть использована любая позиция адресуемой памяти в пределах имеющегося в данной модели ОЗУ данных.
Способы адресации. Микроконтроллер выполняет набор операций над операндами, размещенными в регистрах A, X и памяти. Команды имеют длину от 1 до 3 байтов: первый байт содержит код операции, второй и третий байты обеспечивают адресацию операнда. Для выборки операнда используются следующие способы адресации:
- регистровая (операнд располагается в регистре A или X);
- индексная (адресом операнда служит содержимое регистра H:X);
- индексная со смещением (адрес операнда образуется сложением содержимого регистра H:X и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды);
- индексная с пост-инкрементом (используется только в командах MOV и CBEQ - адресом операнда служит содержимое регистра H:X, которое после выполнения команды автоматически увеличивается на 1);
- индексная со смещением и пост-инкрементом (используется только в команде CBEQ - адрес операнда образуется сложением содержимого регистра H:X и 8-разрядного смещения, заданного во втором байте команды, после выполнения команды содержимое регистра H:X автоматически увеличивается на 1);
- индексная по указателю стека со смещением (адрес операнда образуется сложением содержимого регистра SP и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды);
- прямая (8- или 16-разрядный адрес операнда задается во втором и третьем байте команды);
- непосредственная (8-разрядный операнд задается во втором байте команды);
- относительная (используется только в командах ветвления - адрес команды образуется сложением текущего содержимого PC и заданного во втором байте команды 8-разрядного смещения, которое является числом со знаком).
При прямой адресации с 8-разрядным адресом обращение возможно только к 256 начальным позициям адресного пространства (см. рис.2), в котором располагаются регистры интерфейсных и периферийных модулей и часть ОЗУ. При индексной адресации смещение является числом без знака. Индексная адресация и прямая адресация с 16-разрядным адресом позволяют обращаться к любой позиции адресного пространства, однако при этом необходимо, чтобы значение адреса не превышало $FFFF. При относительной адресации возможен переход к командам, расположенным в пределах 127 позиций ниже или выше очередной команды программы.
В набор команд входят безадресные и одноадресные команды. Регистровая адресация задается указанием имени соответствующего регистра A, X в мнемокоде команды, поэтому команды с такой адресацией являются безадресными. В одноадресных командах задается адрес используемого операнда или размещения результата. В таблицах после мнемокода этих команд указывается символ (opr), который при записи на языке Ассемблера заменяется символом, определяющим способ адресации:
$addr8 или $addr16 – 8- или 16-разрядное значение адреса в шестнадцатиричной форме при прямой адресации;
X – при индексной адресации;
X+ - при индексной адресации с пост-инкрементом;
d8, X или d16, X – при индексной адресации со смещением (d8, d16 – 8- или 16-разрядное смещение);
d8, X+ - при индексной адресации с пост-инкрементом и смещением (d8 – 8-разрядное смещение);
d8, SP или d16, SP – при индексной адресации по указателю стека со смещением (d8, d16 – 8- или 16-разрядное смещение).
Адресуемый таким образом операнд, выбираемый из ячейки памяти, обозначается символом M. При непосредственной адресации символ (opr) заменяется на #Im - значение операнда Im с префиксом #.
Выполняемые микроконтроллером команды делятся на группы команд пересылки, арифметических и логических операций, сдвигов, битовых операций и установки признаков, управления программой и процессором. В данной работе изучается выполнение команд пересылки с различными способами адресации операндов.
Команды пересылки (табл.1.1) осуществляют пересылку операндов между регистрами и ячейками памяти. Команды LDA, LDX, производящие загрузку операнда в регистры A, X, используют все способы адресации, кроме относительного и индексного с пост-инкрементом. При записи содержимого регистров A, X в память командами STA, STX не используется также непосредственная адресация. Команда LDHX позволяет записать в индексный регистр H:X двухбайтовый непосредственный операнд #Im, который содержится во втором и третьем байте команды, или загрузить в этот регистр содержимое двух рядом расположенных ячеек памяти. Команда STHX производит запись содержимого H:X в две рядом расположенные ячейки памяти. При обращении к памяти в командах LDHX, STHX задается адрес первой ячейки памяти с помощью 8-разрядной прямой адресации.
Команда MOV обеспечивает пересылку содержимого между двумя ячейками памяти. При этом возможны четыре варианта выполнения команды:
MOV #Im, addr8 - пересылка непосредственного операнда Im в прямо адресуемую ячейку памяти;
MOV addr8-s, addr8-d - пересылка между двумя прямо адресуемыми ячейками памяти: источником (адрес addr8-s) и приемником (адрес addr8-d);
MOV addr8, X+ - пересылка содержимого прямо адресуемой ячейки в ячейку, адресуемую с помощью регистра H:X, после пересылки производится инкремент содержимого H:X;
MOV X+, addr8 - пересылка содержимого ячейки, адресуемой с помощью регистра H:X, в прямо адресуемую ячейку памяти; после пересылки производится инкремент содержимого H:X.
Во всех вариантах команды MOV используется только 8-рязрядная прямая адресация.
Таблица 1.1. Команды пересылки.
Мнемокод |
Команда |
Операция |
LDA (opr) |
Загрузка A |
M A |
LDX (opr) |
Загрузка X |
M X |
LDHX (opr) |
Загрузка H:X |
M:M H:X |
STA (opr) |
Запись A в память |
A M |
STX (opr) |
Запись X в память |
X M |
STHX (opr) |
Пересылка H:X в память |
H:X M:M |
MOV (opr),(opr) |
Пересылка «память-память» |
M1 M2 |
TAX |
Пересылка A в X |
A X |
TXA |
Пересылка X в A |
X A |
TAP |
Пересылка A в CCR |
A CCR |
TPA |
Пересылка CCR в A |
CCR A |
TSX |
Пересылка SP+1 в H:X |
SP+1 H:X |
TXS |
Пересылка H:X-1 в SP |
H:X -1 SP |
CLR (opr) |
Запись 0 в M |
$00 M |
CLRA |
Запись 0 в A |
$00 A |
CLRX |
Запись 0 в X |
$00 X |
CLRH |
Запись 0 в H |
$00 H |
NSA |
Перестановка тетрад в A |
(A7-4) <-> (A3-0) |
PUSHA |
Запись A в стек |
A (SP), SP-1 SP |
PUSHH |
Запись H в стек |
H (SP), SP-1 SP |
PUSHX |
Запись X в стек |
X (SP), SP-1 SP |
PULA |
Загрузка A из стека |
SP+1 SP, (SP) A |
PULH |
Загрузка H из стека |
SP+1 SP, (SP) H |
PULX |
Загрузка X из стека |
SP+1 SP, (SP) X |
Команды TAX, TXA выполняют пересылку операндов между регистрами A и X. Команды TAP и TPA позволяют соответственно считать в аккумулятор содержимое регистра признаков CCR для последующего анализа или сохранения и загрузить в этот регистр новое содержимое из аккумулятора.
К этой же группе относятся команды CLRA, CLRX, CLRH, CLR (opr), производящие запись 0 в регистры A, X, H и ячейку памяти. В команде CLR (opr) могут использоваться следующие способы адресации: индексная, индексная по указателю стека с 8-разрядным смещением или прямая с 8-разрядным адресом.
Команда NSA меняет местами старшую (биты A7-4) и младшую (биты A3-0) тетрады содержимого аккумулятора.
Отдельную подгруппу составляют команды сохранения в стеке содержимого регистров A, H, X и загрузки этих регистров из стека. Команды сохранения PSHA, PSHH, PSHX пересылают содержимое соответствующих регистров в ячейку памяти, адресуемую содержимым регистра SP, затем содержимое этого регистра уменьшается на 1, адресуя следующую свободную ячейку стека. Команды загрузки увеличивают на 1 содержимое SP, адресуя верхнюю заполненную ячейку стека, после чего содержимое ячейки загружается в соответствующий регистр.