
- •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.
В новом окне редактора ввести исходный текст программы, содержащей различные варианты использования команд безусловного перехода, условных ветвлений, сравнения с ветвлением, а также команд организации циклов и обращения к подпрограмме (табл. 3.1, 3.2). В качестве циклических процедур или подпрограмм можно использовать фрагменты программ написанных и отлаженных при выполнении лаб. работ №1 и №2.
Провести компиляцию программы и проверить правильность ее выполнения в режиме моделирования (симуляции).
Составить программу выполнения задания выданного преподавателем, провести ее компиляцию, проверить выполнение программы в режиме моделирования.
Ввести код программы в память микроконтроллера с помощью приложения Programmer. Войти в режим отладки путем нажатия клавиши In-Circuit Debuger. Проконтролировать правильность выполнения команд, используя окна CPU08, MemoryWindow1, CodeWindow1:Source.
Работа № 4. Микроконтроллер mc68hc908gp32: программирование на языке Ассемблера
Цель работы: практическое освоение программирования микроконтроллера MC68HC908GP32 с использованием интегрированной среды программирования.
В процессе выполнения работы студенты самостоятельно разрабатывают и отлаживают с применением интегрированной среды программирования программу на языке Ассемблера, реализующую достаточно сложную процедуру обработки данных (до 40 – 50 операторов).
Выполнение работы
Получить у преподавателя индивидуальное задание на выполнение данной работы. Составить алгоритм выполнения заданной процедуры, подготовить текст программы на языке Ассемблера.
Подготовить лабораторный комплекс к работе, выполнив операции, указанные в п.4 описания лаб. работы №1.
Выполнить компиляцию программы путем нажатия клавиши Assemble/Compile File (ассемблировать/откомпилировать файл). В случае получения сообщений об ошибке исправить исходный текст программы и повторить попытку компиляции.
Войти в режим моделирования (симуляции) путем нажатия клавиши Simulator (симулятор контроллера). Проконтролировать правильность реализованного алгоритма, используя окна CPU08, Memory Window 1, Code Window 1: Source.
Ввести код программы в память микроконтроллера с помощью приложения Programmer (программатор). Войти в режим отладки путем нажатия клавиши In-Circuit Debuger (схемный отладчик). Проконтролировать правильность выполнения команд, используя окна CPU08, MemoryWindow1, CodeWindow1:Source.
Работа №5. Цифровая система на базе микроконтроллера mc68hc908gp32: реализация параллельного ввода-вывода данных.
Цель работы: освоение процедур параллельного ввода-вывода данных в цифровых системах на базе микроконтроллера MC68HC908GP32, реализация ввода данных с клавиатуры и вывода на жидкокристаллический индикатор.
Введение
Обмен данными между микроконтроллером MC68HC908GP32 и внешними устройствами осуществляется посредством пяти параллельных портов A, B, C, D, E и двух последовательных портов SCI и SPI (функционирование этих портов рассмотрено в работе №6). Все параллельные порты ввода-вывода являются двунаправленными и могут программироваться на ввод или на вывод данных. Некоторые выводы параллельных портов совмещены с выводами периферийных устройств, входящих в состав микроконтроллера MC68HC908GP32, поэтому в случае использования таких устройств соответствующие выводы не могут служить для ввода-вывода данных. В данной работе рассматриваются особенности применения параллельных портов ввода-вывода.
Параллельный ввод-вывод данных. Каждый параллельный порт ввода-вывода имеет регистр данных PTx и регистр направления DDRx, где x = A, B, C, D или E.
В регистре направления DDRx задается настройка каждого вывода порта, конфигурирующая соответствующую линию на ввод или на вывод данных. Если бит i в регистре направления имеет значение 0, то данный вывод порта является входом, а если 1 – выходом. Считывание или запись данных в порт осуществляется путем соответственно чтения или записи в регистр данных PTx. Обращение к регистрам портов производится с помощью команд пересылки данных. Например, команда STA позволяет записать содержимое регистра A в нужный регистр порта.
После запуска микроконтроллера все выводы конфигурируются на работу в качестве входов, т.е. все биты в регистрах направления принимают значение 0. В случае использования выводов порта для вывода данных, необходимо установить 1 в соответствующих битах регистров направления DDRx.
Для некоторых портов существует возможность подключения подтягивающих резисторов, если соответствующие выводы сконфигурированы на ввод данных. Эти настройки задаются в специальных регистрах включения подтягивающих резисторов PTxPUE. Подключение подтягивающих резисторов позволяет устранить неоднозначность считывания состояния линии в момент отсутствия сигнала от внешних устройств.
Табл.5.1. Характеристики параллельных портов MC68HC908GP32.
Порт |
Регистр данных |
Регистр направления |
Регистр резисторов |
Особенности |
A |
PTA ($0000) |
DDRA ($0004) |
PTAPUE ($000D) |
8-разрядный порт, совмещенный с выводами блока KBI08 |
B |
PTB ($0001) |
DDRB ($0005) |
--- |
8-разрядный порт, совмещенный с выводами блока ADC08 |
C |
PTC ($0002) |
DDRC ($0006) |
PTCPUE ($000E) |
7-разрядный порт |
D |
PTD ($0003) |
DDRD ($0007) |
PTDPUE ($000F) |
8-разрядный порт, совмещенный с выводами блоков SPI, TIM1, TIM2 |
E |
PTE ($0008) |
DDRE ($000C) |
--- |
2-разрядный порт, совмещенный с выводами блока SCI08 |
Характеристики параллельных портов ввода-вывода, входящих в состав микроконтроллера MC68HC908GP32 приведены в табл.5.1.
Ввод данных с клавиатуры. Одним из наиболее распространенных устройств ввода команд и данных в цифровую систему является клавиатура. На панели стенда ЛС-1 расположена 12-кнопочная клавиатура (4 ряда по 3 кнопки), которая подключена к выводам PTA1-PTA7 порта A. Считывать код можно путем опроса клавиатуры или по запросу прерывания. Схема подключения выводов клавиатуры к выводам микроконтроллера показана на рис.5.1.
Рис.5.1. Схема подключения клавиатуры к выводам MC68HC908GP32.
Если контроль состояния клавиатуры осуществляется по опросу, то необходимо сконфигурировать выводы управления строками PTA4-PTA7 на ввод данных, а выводы управления столбцами PTA1-PTA3 на вывод данных. Для этого следует в регистре направления DDRA установить значения битов DDRA4-DDRA7 равными 0, а значения битов DDRA1-DDRA3 равными 1. Далее, необходимо разрешить подключение подтягивающих резисторов на выводах управления строками PTA4-PTA7, путем установки в регистре PTAPUE значений битов PTAPUE4-PTAPUE7 равными 1. Тогда, если кнопки не нажаты, на выводах PTA4-PTA7 будет присутствовать высокий потенциал, что соответствует состоянию логической 1.
В процедуре опроса клавиатуры на выводы управления столбцами PTA1-PTA3 следует последовательно подавать низкий потенциал (логический 0), и считывать состояние клавиатуры с выводов управления строками PTA4-PTA7. Это осуществляется путем установки и считывания соответствующих битов в регистре PTA. В случае нажатия клавиши на соответствующем выводе PTAi установится состояние логического 0, а на остальных выводах сохранится состояние логической 1.
Так как все выводы порта A равноправны, то функции выводов управления строками и выводов управления столбцами можно поменять местами, т.е. на выводы PTA4-PTA7 последовательно подавать низкий потенциал, а состояние клавиатуры считывать с выводов PTA1-PTA3. В этом случае полный опрос состояния клавиатуры будет занимать четыре цикла, вместо трех как в предыдущей конфигурации.
Полученные при опросе клавиатуры коды могут быть преобразованы в число, соответствующее номеру клавиши, или в его ASCII-код с помощью команд побитового тестирования или команд сравнения (см. табл. 2.1).
Вывод данных на жидкокристаллический индикатор (ЖКИ). В микропроцессорных системах для визуального отображения данных часто используют модули ЖКИ, которые представляют собой законченные устройства с определенными интерфейсами взаимодействия. В составе лабораторного стенда ЛС-1 присутствует алфавитно-цифровой ЖКИ на основе широко распространенного контроллера HD44780, имеющий две строки по 16 символов, с матрицей символа 5х7 точек. Особенностью функционирования ЖКИ в лабораторном стенде ЛС-1 является обмен данными по 4-разрядной шине.
Вывод данных на ЖКИ заключается в записи кодов отображаемых символов во внутренний регистр данных DR модуля ЖКИ. Это достигается путем формирования правильных последовательностей кодов на линиях управления и линиях данных модуля ЖКИ (табл.5.2), посредством записи этих кодов в регистры данных определенных портов микроконтроллера MC68HC908GP32. Для управления ЖКИ в данном макете используются семь выводов PTC0-PTC6 порта C, которые необходимо сконфигурировать на вывод данных. Для этого надо в регистре направления DDRC установить значения битов DDRC0-DDRC6 равными 1.
Таблица 5.2. Подключение выводов микроконтроллера к ЖКИ.
-
Сигнал ЖКИ
Вывод MC68HC908GP32
Назначение сигнала
DB4
PTC0
Передача данных
DB5
PTC1
Передача данных
DB6
PTC2
Передача данных
DB7
PTC3
Передача данных
E
PTC4
Разрешение обращения к
модулю ЖКИ
R/W
PTC5
Определение направления
передачи данных
RS
PTC6
Выбор внутреннего регистра модуля ЖКИ
При включении питания модуль ЖКИ переходит в режим развертки одной верхней строки, так что изображение сегментов этой строки едва видны на основном фоне. Перед выводом данных необходимо выполнить инициализацию ЖКИ, т.е. определить дальнейший режим его функционирования, путем определенной установки управляющих битов в регистре команд IR модуля ЖКИ.
Процедура записи в командный регистр IR отличается от записи в регистр данных DR только значением сигнала RS. Для записи одного байта во внутренний регистр ЖКИ в режиме 4-разрядного обмена необходимо:
Выбрать регистр для текущего цикла обмена с помощью сигнала RS (регистр IR, если RS = 0; регистр DR, если RS = 1).
Вывести значение старшей тетрады байта данных на линии DB4-DB7.
Установить значение сигнала E равным 1.
Установить значение сигнала E равным 0.
Вывести значение младшей тетрады байта данных на линии DB4-DB7.
Установить значение сигнала E равным 1.
Установить значение сигнала E равным 0.
Процедура чтения байта данных из внутреннего регистра модуля ЖКИ немногим сложнее процедуры записи:
Перепрограммировать выводы PTC0-PTC3 на ввод данных.
Выбрать регистр для текущего цикла обмена с помощью сигнала RS (регистр IR, если RS = 0; регистр DR, если RS = 1).
Установить значение сигнала R/W равным 1.
Установить значение сигнала E равным 1.
Считать значение старшей тетрады байта данных с линий DB4-DB7.
Установить значение сигнала E равным 0.
Установить значение сигнала E равным 1.
Считать значение младшей тетрады байта данных с линий DB4-DB7.
Установить значение сигнала E равным 0.
Установить значение сигнала R/W равным 0.
Перепрограммировать выводы PTC0-PTC3 на вывод данных.
При этом следует вставлять временные задержки между шагами вышеописанных процедур. Следует также учитывать, что начальные значения сигналов E и R/W равны 0. Указанные значения этих сигналов должны поддерживаться всегда в промежутках между операциями обмена с ЖКИ. Значения остальных сигналов могут быть произвольными. Запись слова в регистр IR инициирует цикл выполнения команды ЖКИ, длительность которого различна для различных команд. В течение этого цикла обмен с ЖКИ невозможен. Признаком выполнения команды является снятие флага занятости BF (бит D7 при считывании), поэтому перед выполнением следующей команды записи/чтения следует проверять флаг BF.
Для инициализации модуля ЖКИ необходимо:
Выдержать паузу не менее 15 мс после включения питания лабораторного стенда ЛС-1.
Установить значение сигнала RS равным 0, что соответствует выбору регистра команд IR в качестве адресуемого.
Выполнить команду выбора разрядности шины $30, которая устанавливает 8-разрядный обмен данными по шине. Так как реальная шина в лабораторном стенде ЛС-1 имеет всего четыре разряда, то выбор 8-разрядного режима означает, что младшие четыре бита в регистре IR будут иметь неопределенное значение. Запись слова в 8-разрядном режиме эквивалентна выводу на линии данных DB4-DB7 старшей тетрады командного слова без последующего вывода младшей тетрады (т.е. записи в порт D значение $03).
Выдержать паузу не менее 4.1 мс, необходимую для выполнения предыдущей команды.
Повторить команду выбора разрядности шины $30.
Выдержать паузу не менее 100 мкс.
Повторить команду выбора разрядности шины $30. Выполнение этой и последующих команд следует проверять по значению флага BF.
Выполнить команду выбора разрядности шины $20 (т.е. записать в порт D значение $02). Все последующие циклы обмена осуществляются по 4-разрядной шине, поэтому необходимо руководствоваться описанными выше процедурами записи/чтения.
Выполнить команду $28 (D/L = 0, N = 1, F = 0), устанавливающую обмен по 4-разрядной шине данных, режим отображения двух строк с матрицей символа 5х7 точек.
Выполнить команду $0C (D = 1, C = 0, B = 0), включающую изображение ЖКИ с выключенным курсором.
Выполнить команду $01, осуществляющую очистку экрана ЖКИ и установку в 0 адреса ячейки внутренней памяти.
Выполнить команду $06 (I/D = 1, S = 0), устанавливающую режим увеличения внутреннего счетчика на 1 без сдвига изображения.
Установить значение сигнала RS равным 1, что соответствует выбору регистра команд DR в качестве адресуемого.
Поле этого можно осуществлять вывод информации на экран, начиная с первой позиции. Для вывода символа в определенной позиции экрана следует предварительно установить адрес ячейки внутренней памяти модуля ЖКИ, соответствующей этой позиции.