
- •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.
Выполнение работы
Изучить команды арифметических, логических и битовых операций, команды сравнения и сдвигов, выполняемые микроконтроллером MC68HC908GP32.
Подготовить лабораторный комплекс к работе, выполнив операции, указанные в п.4 описания лаб. работы №1.
В новом окне редактора ввести исходный текст программы, содержащий различные варианты применения команд арифметических, логических и битовых операций, а также команд сравнения и сдвигов (табл. 2.1, 2.2, 2.3) с использованием различных способов адресации. (Примечание. При выполнении команд обратить внимание на изменение содержимого регистра состояния CCR).
Выполнить компиляцию программы путем нажатия клавиши Assemble/Compile File. В случае получения сообщений об ошибке исправить исходный текст программы и повторить попытку компиляции.
Войти в режим моделирования (симуляции) путем нажатия клавиши Simulator. Проконтролировать правильность выполнения команд, используя окна CPU08, Memory Window 1, Code Window 1: Source.
Составить программу выполнения заданной преподавателем последовательности операций обработки данных, провести компиляцию, проверить выполнение программы в режиме моделирования.
Ввести код программы в память микроконтроллера с помощью приложения Programmer. Войти в режим отладки путем нажатия клавиши In-Circuit Debuger. Проконтролировать правильность выполнения команд, используя окна CPU08, MemoryWindow1, CodeWindow1:Source.
Работа № 3. Микроконтроллер mc68hc908gp32: команды управления программой и процессором.
Цель работы: изучение команд управления программой и процессором.
Введение
Для управления выполнением программы используются команды безусловного перехода JMP, условных и безусловных ветвлений Bcc, BRCLR, BRSET, BRA, BRN, сравнения с переходом по результату сравнения CBEQ, CBEQA, CBEQX, перехода и ветвления к подпрограмме JSR, BSR, возврата из подпрограммы RTS, организации циклов DBNZ, DBNZA, DBNZX, программного прерывания SWI, возврата из прерывания RTI.
Команда перехода JMP загружает в программный счетчик PC адрес следующей команды EA из ячейки памяти, которая выбирается с помощью индексной, индексной со смещением или прямой адресации.
Команды ветвления используют только относительный способ адресации. При этом адрес следующей команды, загружаемый в PC, формируется путем суммирования текущего содержимого PC, увеличенного на 2, и 8-разрядного относительного смещения rel8, которое является числом со знаком. Таким образом, относительная адресация обеспечивает переход к командам, адреса которых находятся в пределах (PC+129)…(PC-126).
Команда BRA (обязательное ветвление) осуществляет безусловное ветвление, то есть эквивалентна команде JMP с относительной адресацией. Команда BRN (отсутствие ветвления) пропускает два байта в выполняемой программе (код команды с байтом смещения rel8), после чего выполняется очередная команда. Таким образом, эта команда эквивалентна команде NOP. Обычно она используется в процессе отладки программы, заменяя команду условного ветвления Bcc, когда необходимо проверить выполнение программы без ветвления.
Команды условного ветвления Bcc производят загрузку в PC нового адреса, если выполняется определенное условие. В табл.3.2 приведены 18 видов условий, которые вызывают ветвление программы. Мнемокод условия сс приписывается к букве B, образуя мнемокод соответствующей команды условного ветвления. Например, B + PL = BPL - мнемокод команды ветвления при положительном результате предыдущей операции (признак N=0).
Таблица 3.1. Команды управления программой и процессором.
-
Мнемокод
Команда
Операция
JMP (opr)
Безусловный переход
EA PC
BRA rel8
Безусловное ветвление
PC +2 + rel8 PC
BRN rel8
Отсутствие ветвления
PC + 2 PC
Bcc rel8
Условное ветвление
PC +2+ rel8 PC, если
выполняется условие cc
BRCLR n, (opr), rel8
Ветвление при bn = 0
PC +3 + rel8 PC, если bn=0
BRSET n, (opr), rel8
Ветвление при bn = 1
PC + 3 + rel8 PC, если bn=1
CBEQ (opr), rel8
Сравнение A и M,
Ветвление, если они равны
A – M,
PC + n + rel8 PC, если Z= 1
CBEQA #Im, rel8
Сравнение A и Im,
Ветвление, если они равны
A – Im,
PC +3 + rel8 PC, если Z = 1
CBEQX #Im, rel8
Сравнение X и Im, ветвление, если они равны
X– Im,
PC +3 + rel8 PC, если Z = 1
DBNZ (opr), rel8
Декремент M и ветвление, если M не равно 0
M-1M,
PC + n + rel8 PC, если Z=0
DBNZA rel8
Декремент A и ветвление,
если A не равно 0
A-1A,
PC +2 + rel8 PC, если Z=0
DBNZX rel8
Декремент X и ветвление, если A не равно 0
X-1X,
PC +2 + rel8 PC, если Z=0
JSR (opr)
Переход к подпрограмме
PC + n PC,
PCl (SP), SP - 1 SP
PCh (SP), SP - 1 SP
(EA) PC
BSR rel8
Ветвление к подпрограмме
PC + 2 PC
PCl (SP), SP - 1 SP
PCh (SP), SP - 1 SP
PC + 2 + rel8 PC
RTS
Возврат из подпрограммы
SP + 1 SP, (SP) PCh
SP + 1 SP, (SP) PCl
SWI
Программное прерывание
PC + 1 PC,
PCl (SP), SP - 1 SP
PCh (SP), SP - 1 SP
X (SP), SP - 1 SP
A (SP), SP - 1 SP
CCR (SP), SP - 1 SP
Ve PC
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) PCl
RSP
Начальная установка SP
$00FF SP
NOP
Отсутствие операций
PC + 1 PC
WAIT
Переход в режим ожидания
Остановка процессора,
0 I (в CCR)
STOP
Переход в режим останова
Остановка ГТИ, 0 I (в CCR)
Большинство условий задается определенными значениями признаков в регистре CCR или комбинацией значений признаков, которая определяется соответствующим логическим выражением. Обычно эти значения признаков устанавливаются с помощью предыдущей команды сравнения или тестирования. Условием ветвления может быть равенство (Z=1) или неравенство (Z=0) сравниваемых операндов, а также различные варианты соотношений между ними. При сравнении операндов со знаком устанавливаются соотношения “больше”, “меньше”, “больше или равно”, “меньше или равно” (>, <, >=, <=). При сравнении беззнаковых операндов аналогичные соотношения (>, <, >=, <=) определяют условия “выше”, “ниже”, “ниже или равно”, “выше или равно”.
Таблица 3.2. Мнемокоды и условия выполнения команд условных переходов Bcc
-
Мнемокод
cc
Проверяемое условие
Логическое
выражение
NE
Не равно (ненулевой результат)
Z = 0
EQ
Равно (нулевой результат)
Z = 1
HI
Выше
(Z C) = 0
LS
Ниже или равно
(Z C) = 1
HS
Выше или равно (нет переноса)
C = 0
LO
Ниже (есть перенос)
C = 1
BGT
Больше
Z (N V) =0
BLE
Меньше или равно
Z (N V) =1
BGE
Больше или равно
N V = 0
BLT
Меньше
N V = 1
PL
Положительный результат
N = 0
MI
Отрицательный результат
N = 1
HCC
Нет переноса между тетрадами
H = 0
HCS
Есть перенос между тетрадами
H = 1
MC
Прерывания разрешены
I = 0
MS
Прерывания запрещены
I = 1
IH
Отсутствие запроса прерывания
IRQ# = 1
IL
Поступление запроса прерывания
IRQ# = 0
В качестве условий ветвления могут также использоваться значения признаков N, H и маски прерывания I. Одним из условий ветвления может быть поступление внешнего запроса прерывания на вход IRQ#.
Команда CBEQ выполняют ветвление при условии равенства операндов, хранящихся в аккумуляторе и адресуемой ячейке памяти. В зависимости от используемого способа адресации памяти команда может содержать n = 2, 3 или 4 байта, поэтому при ее выполнении содержимое PC увеличивается на n. Команды CBEQA, CBEQX осуществляют ветвление при равенстве содержимого регистров A или X значению заданной в команде константе Im.
Команды DBNZ, DBNZA, DBNZX служат для организации программных циклов. Текущее значение счетчика циклов определяется содержимым адресуемой ячейки памяти M (команда DBNZ), аккумулятора (команда DBNZA) или регистра X (команда DBNZX). Команда производит уменьшение текущего значения числа циклов на 1 (декремент) и осуществляют ветвление (возврат) к началу цикла, если результат декремента не равен 0 (заданное количество циклов еще не реализовано). При выполнении команды DBNZ содержимое PC может увеличиваться на величину n = 2, 3 или 4 в зависимости от используемого способа адресации.
Команды BRCLR, BRSET проверяют значение n-го бита в операнде, выбираемом с помощью 8-битной прямой адресации, и выполняют ветвление, если бит соответственно равен 0 или 1. Номер проверяемого бита n задается в этих командах с помощью непосредственного операнда #Im8=n. Эти команды содержат три байта, поэтому при их выполнении содержимое PC увеличивается на 3.
Команды перехода и ветвления к подпрограмме JSR, BSR заносят из PC в стек адрес очередной команды программы, а затем загружают в PC новое содержимое. В команде JSR адрес ячейки памяти, из которой загружается новое содержимое PC, определяется с помощью индексной, индексной со смещением или прямой адресации. При этом адрес, загружаемый в стек при выполнении команды JSR, может быть больше адреса этой команды на n = 1, 2 или 3 в зависимости от используемого способа адресации: n = 1 при индексной адресации, n = 2 при индексной адресации с 8-разрядным смещением или 8-разрядной прямой адресации, n = 3 при индексной адресации с 16-разрядным смещением или 16-разрядной прямой адресации. В команде BSR адрес вызываемой подпрограммы определяется с помощью относительной адресации. По команде возврата из подпрограммы RTS из стека выбирается и восстанавливается прежнее содержимое PC.
Команда программного прерывания SWI загружает в стек не только текущее содержимое PC, но и содержимое регистров A, X, CCR. При выполнении этой команды заполняется пять ячеек стека. Команда возврата из прерывания RTI восстанавливает прежнее содержимое регистров A, X, CCR, PC из стека. Отметим, что при выполнении этой команды в стеке не сохраняется содержимое регистра H -старшего байта индексного регистра. Для сохранения содержимого регистра H в начало программы обработки прерывания следует ввести команду PSHH, а в конце этой программы перед командой RTI выполнить команду PULH.
Управление процессором производится с помощью команды RSP, которая устанавливает в регистре SP начальное значение $00FF, команды NOP, не выполняющей каких-либо операций (пропуск байта), и команд WAIT, STOP, переводящих микроконтроллер в энергосберегающие режимы ожидания и останова с разрешением прерывания (установка признака I=0), с помощью которого осуществляется последующий возврат в нормальный режим.