[257]Лабораторные_МС_68HC11 (1086954), страница 9
Текст из файла (страница 9)
д.).Направление и скорость перемещения выберете самостоятельно.Порты параллельного ввода/вывода.38Лабораторная работа №67. Модифицировать программу бегущего огня следующим образом: кратковременно вспыхивает светодиод B7, через 0.5 с кратковременно вспыхивает светодиод B6 и т.
д. Послевспыхивания светодиода B0 цикл повторяется.8. Написать программу, которая по нажатию на кнопку PA0 увеличивала бы на 1 двоичноечисло, отображаемое на светодиодах. Исходное число должно считываться вначале программы с переключателей.9. Написать программу, которая складывала бы два двоичных 8-разрядных числа и выводилабы результат на светодиоды. Работа программы должна производится следующим образом: первое число устанавливается на светодиодах, после чего нажимается клавиша PA0,далее устанавливается второе число и снова нажимается PA0, после чего выводится результат.10.Модифицируйте предыдущую программу так, чтобы можно было просмотреть старшийбит суммы.
Он должен выводится на светодиод B0 (остальные должны быть погашены) понажатию на PA0.11.Модифицируйте программу 5. для умножения двух 8-разрядных двоичных чисел. Приэтом результат - старшие и младшие 8 разрядов, должны чередоваться на светодиодах понажатию на PA0.12.Написать программу, которая должна мигать синхронно всеми светодиодами (со скважностью 2), причем частота мигания должна задаваться на младшей тетраде переключателей следующим образом: f=N, где f - частота мигания в герцах, а N - число, установленноена младшей тетраде переключателей.
Состояние переключателей должно считываться вцикле в процессе работы программы.13.Написать программу “бегущий огонь”, скорость перемещения которого определялась быкак в предыдущей программе.14.Написать программу, в которой изменялась бы яркость свечения светодиодов (яркостьсвечения всех светодиодов должна быть одинакова), в зависимости от состояния младшейтетрады переключателей. Управление яркостью должно производиться путем управленияскважностью мигания.
Частота мигания должна быть в пределах 25-100 Гц. Значениескважности однозначно соответствует двоичному числу, установленному на младшей тетраде переключателей.15.Написать программу, которая в цикле плавно увеличивала бы яркость всех светодиодов домаксимума, после чего тушила бы их.16.Модифицировать предыдущую программу, чтобы после периода плавного увеличения яркости, следовал бы период плавного ее уменьшения.Порты параллельного ввода/вывода.39Лабораторная работа №7Лабораторная работа №7Прерывания.1.
ВведениеВ данной работе изучается система прерываний микроконтроллера MC68HC11E1.2. Система прерываний.Микроконтроллер MC68HC11E1 обладает гибкой системой обработки прерываний иисключительных ситуаций. Система обработки прерываний включает в себя ряд аппаратныхисточников (порты ввода/вывода, таймер, асинхронный и синхронный последовательныеинтерфейсы, внешние прерывания) и один программный (SWI). После возникновения запроса на прерывание микроконтроллер завершает выполнение текущей команды и передаетуправление по адресу, записанному в векторе прерывания, который соответствует источнику, сгенерировавшему запрос.
В нормальных режимах работы (однокристальном и расширенном) вектора прерываний располагаются в фиксированной области памяти (см. табл. 7.1)и занимают по 2 байта. В специальных режимах работы (bootstrap и теста) таблица векторовпрерывания переносится в область ОЗУ (см. табл. 7.1); каждый вектор здесь занимает 3 байтаи в него должна быть записана команда перехода, а не адрес. Это отличие следует иметь ввиду при написании и отладке программ на модуле HC11EVB.Таблица 7.1. Вектора прерываний для нормальных и специальных режимов работы.Адрес вектора вАдрес перехода в Источник прерываниянормальном режи- специальном реме работыжиме работыFFCO, FFC1Зарезервировано.........FFD4, FFD5ЗарезервированоFFD6, FFD700С4Последовательный асинхронный интерфейс (SCI)FFD8, FFD900С7Последовательный синхронный интерфейс (SPI)FFDA, FFDB00CAАккумулятор пульсацийFFDC, FFDD00CDПереполнение аккумулятора пульсацийFFDE, FFDF00D0Переполнение таймераFFE0, FFE100D3Выходное сравнение 5FFE2, FFE300D6Выходное сравнение 4FFE4, FFE500D9Выходное сравнение 3FFE6, FFE700DCВыходное сравнение 2FFE8, FFE900DFВыходное сравнение 1FFEA, FFEB00E2Входной захват 3FFEC, FFED00E5Входной захват 2FFEE, FFEF00E8Входной захват 1FFF0, FFF100EBПрерывание реального времениFFF2, FFF300EEПрерывание IRQFFF4, FFF500F1Прерывание XIRQFFF6, FFF700F4Программное прерывание SWIFFF8, FFF900F7Неправильный код команды*FFFA, FFFB00FAСистема COP*FFFC, FFFD00FDСбой тактовой частоты*FFFE, FFFFBF40Сброс микроконтроллера (RESET)** Группа исключительных ситуацийПрерывания.40Лабораторная работа №7$103CСостояниепослесброса76543210RBOOT*SMOD*MDA*IRV*PSEL3PSEL2PSEL1PSEL0----0101HPRIO* Биты старшей тетрады, определяющей режим работы микроконтроллераРис.
7.1 Регистр высшего приоритета I-прерваний.PSEL30000000011111111PSEL20000111100001111Таблица 7.2. Определение источника с наибольшим приоритетом,в зависимости от состояния битов PSEL3-PSEL0 регистра HPRIO.PSEL1 PSEL0 Источник с наибольшим приоритетом прерывания00Переполнение таймера01Переполнение счетчика пульсаций10Счетчик пульсаций11SPI00SCI01Резерв (по умолчанию - IRQ)10IRQ11Прерывание реального времени00Входной захват 101Входной захват 210Входной захват 311Выходное сравнение 100Выходное сравнение 201Выходное сравнение 310Выходное сравнение 411Выходное сравнение 5При одновременном возникновении нескольких запросов обработка производится всоответствии со структурой приоритетов.
Из аппаратных прерываний (программное прерывание SWI выполняется как команда и после начала выполнения никакие другие прерывания или исключительные ситуации, кроме RESET не могут прервать ее выполнение) высший приоритет имеет немаскируемое внешнее прерывание XIRQ, разрешаемое сбросом битаX в регистре условий CCR (установка этого бита может производиться только аппаратно при возникновении прерывания по XIRQ или по сигналу сброса RESET). Остальные прерывания образуют группу I - прерываний, все они могут быть запрещены/разрешены путем соответственно установки/сброса бита I в регистре условий CCR (например командами SEI иCLI).
В этой группе высший приоритет имеет прерывание, определяемое состоянием младшей тетрады регистра HPRIO (см. рис. 7.1 и табл. 7.2). Далее приоритет источников прерывания падает в следующем порядке:прерывание IRQпрерывание реального временивходной захват 1входной захват 2входной захват 3выходное сравнение 1выходное сравнение 2выходное сравнение 3выходное сравнение 4Прерывания.41Лабораторная работа №7выходное сравнение 5переполнение таймерапереполнение счетчика пульсацийсчетчик пульсацийпоследовательный синхронный интерфейс (SPI)последовательный асинхронный интерфейс (SCI)Вызов прерывания влечет за собой запись основных регистров в стек, при этом порядокразмещения регистров следующий:SPSP-1SP-2SP-3SP-4SP-5SP-6SP-7SP-8SP-9СтекМладший байт программного счетчика - PCLСтарший байт программного счетчика - PCHМладший байт регистра Y - IYLСтарший байт регистра Y - IYHМладший байт регистра X - IXLСтарший байт регистра X - IXHАккумулятор A - ACCAАккумулятор B - ACCBРегистр условий - CCRàУказатель стека SP допрерыванияàУказатель стека SP послепрерыванияПосле выполнения подпрограммы обслуживания прерывания состояния основных регистров восстанавливается из стека при выполнении команды возврата RTI.Рассмотрим более подробно прерывание IRQ.
Оно имеет два источника, один из которых внешний, другой - внутренний, от системы обслуживания параллельного ввода/вывода.В данной лабораторной работе мы будем рассматривать только внешнее IRQ - прерывание.При возникновении запроса на прерывание от какого-нибудь из источников происходит генерация прерывания по вектору IRQ (находится по адресу $FFF2 для нормальных режимовработы и $00EE - для специальных).Вход прерывания IRQ микроконтроллера предназначен для обслуживания запросов напрерывание от внешних устройств.
В зависимости от состояния бита IRQE регистраOPTION, обнаружение запроса производится либо по низкому уровню (IRQE=“1”), либо поотрицательному перепаду (IRQE=“0”) на входе IRQ микроконтроллера. Для учебных целейна плате отладочного модуля предусмотрена кнопка IRQ (см. рис. NN технического описания на модуль), схемотехническое подключение которой представлено на следующем рисунке:Прерывания.42Лабораторная работа №7Рассмотрим пример обслуживания запроса прерывания от внешнего источника по линии IRQ.
В данном примере при нажатии на клавишу IRQ производится инверсия состояниялиний порта B (светодиодов).cpu6811portbequ$1f04; регистр данных порта Boptionequ$39; смещение для регистра конфигурацииorg$00eejmp$d100orgldx$d000#$1000clrbclrportboption,x,$20clibra*org$d100ldaaeorastaajsrrti#$ffportbportbdly06;;;;вектор прерывания по IRQ (режимbootstrap)переход на подпрограмму обслуживанияпрерывания;;;;;;;;Начало основной программыобщее смещение для внутреннихрегистровпогасить светодиодыустановить режим обнаружения внешнегопрерывания по уровнюразрешить I-прерываниязамкнутый цикл; Начало подпрограммы обслуживания; прерывания; инверсия состояния светодиодов; задержка 0.6с; возврат из прерыванияdly06j1ldx#$7f00; подпрограмма задержки 0.6сmul; задержка 30 цикловmulmuldexbnej1rtsЗапустите программу с адреса $D000.