Лабораторные МС 68HC11 (1086185), страница 6
Текст из файла (страница 6)
Адрес обработчика прерывания SWI должен быть расположен по адресу $fff6, если работа происходит в нормальномрежиме работы, или по адресу $bff6, если в специальном. В режиме bootstrap по адресам$bf40Þ$bfff находится bootstrap ПЗУ, в котором вектора прерываний указывают на ячейкипамяти внутреннего ОЗУ. Таким образом, в исследуемых в данной лабораторной работе экспериментах для задания окончательного адреса перехода мы будем использовать адреса $f4$f6, в которых будет расположена команда безусловного перехода JMP.Для возврата из прерывания используется команда RTI. Она восстанавливает значениярегистров из запомненных в стеке, тем самым осуществляется возврат к прерванной программе с сохранением состояния регистров.Небольшая программа демонстрирует работу этих двух команд:cpu6811org$00f4; установка вектора обработчикаjmpih; прерывания SWIorg$c800ldaa #$55swi; вызов прерыванияcomaswicomaswicomaswidonebra*ihldx#$1f04; обработчик прерывания осуществляетstaa 0,x; отображение числа из регистра Aldy#$500; на светодиодах и задержку C10мсdelaydeybnedelayrtiПопробуйте выполнить эту программу в пошаговом режиме (как было указано в предыдущейработе, обработчик прерывания будет выполняться за 1 шаг) и с установкой точек останована метке ih.
Посмотрите содержимое области данных выше указателя стека (стекового фрэйма) и убедитесь, что все регистры процессора были сохранены.gen_intКоманды передачи управления. Специальные команды.28Лабораторная работа №53. Специальные командыКак отмечалось ранее, к специальным командам относятся команды, переводящиеконтроллер в режим низкого потребления энергии.Команда WAI переводит контроллер в режим ожидания первого немаскированногопрерывания. При этом сохранение регистров происходит в момент выполнения командыWAI, а не в момент обнаружения прерывания.Команда STOP выполняет остановку всех внутренних генераторов микроконтроллера иперевод системы в режим минимального энергопотребления.
В случае, если установлен бит Sрегистра CCR, то команда STOP выполняется как команда NOP. Восстановление системы изрежима минимального энергопотребления может произойти в случае появления прерыванийот RESET, XIRQ или немаскированного прерывания IRQ. В случае, когда установлен бит Xрегистра CCR, маскирующий прерывание XIRQ, и происходит это прерывание, то выполнение программы происходит со следующей за STOP команды.
В некоторых масках семействаM68HC11 была допущена ошибка, приводящая к неправильному интерпретированию кодакоманды в некоторых особых случаях, поэтому фирма Motorola рекомендует перед командойSTOP помещать команду NOP, таким образом исключая эту ошибку.Команды передачи управления. Специальные команды.29Лабораторная работа №55. Контрольные вопросы1. Каково различие между командами JMP и BRA?2. Объясните различие между командами WAI и STOP.3. Каким образом можно реализовать переход к подпрограмме, не используя команд BSR иJSR?4.
Произойдет ли вызов программного прерывания при установленном флаге I в регистреCCR?5. Какие команды относятся к знаковым командам условного перехода?6. Какие виды переходов Вам известны?7. Каково назначение команд BLE, BSR, BCS, BRCLR?8. Сколько операндов и какие используются командами условного перехода по состояниюбита?9. Реализуйте (примерно) команды BRCLR и BRSET через другие команды.10.Каков результат выполнения фрагмента программы:ldaa #34ldab #$34cbabmil2beql3bradonel2ldaa #45bradonel3ldaa #$23doneclrb11.Можно ли выполнить переход, аналогичный переходу по команде BCS, используя команды BNE и BLE?12.Каким образом можно осуществить корректный выход из подпрограммы, не используякоманду RTS?13.Какие команды относятся к беззнаковым командам условного перехода?14.Для какой цели используются команды WAI и STOP?15.Каково назначение команд BLE, RTI, JSR, BEQ?6.
Задания1. Напишите программу, осуществляющую сложение двух 4-х байтных чисел, представленных в формате BCD.2. Реализуйте перевод двухбайтного числа в формате BCD в двоичный формат.3. Напишите программу, копирующую блок данных, расположенных по адресам$c900Þ$c920, в соответствующие ячейки $0000Þ$0020.
При этом данные перезаписываются только в том случае, если бит 3 в соответствующей ячейке памяти сброшен.4. Написать программу подсчета суммы 8-битных беззнаковых чисел, расположенных вячейках $c900Þ$c9ff. Результат поместить в регистр Y.5. Произвести сортировку по возрастанию чисел, расположенных в ячейках $c900Þ$c9ff.6. Произвести подсчет количества отрицательных, положительных чисел и нулей в областипамяти $c900Þ$c9ff.7. Написать программу, подсчитывающую количество установленных битов в ячейках памяти $c900Þ$c91f.
Результат поместить в регистр X.8. Произвести сортировку по убыванию чисел, расположенных в ячейках $c900Þ$c9ff.9. Написать программу, производящую подсчет количества нечетных чисел в ячейках$c900Þ$c9ff.10. Написать программу преобразования двоичных чисел, расположенных в ячейках$c900Þ$c91f, в BCD формат. Результат разместить в ячейках $c920-$c95f.Команды передачи управления. Специальные команды.30Лабораторная работа №511.Написать программу подсчета суммы 8-битных знаковых чисел, расположенных в ячейках$c900Þ$c9ff.12.Произвести операцию “логическое ИЛИ” между битом 2 и битом 5 для ячеек памяти,расположенных по адресам $c900Þ$c91f, результат при этом должен быть записан в бит 3соответствующей ячейки.13.Произвести обмен старших тетрад ячеек, расположенных в блоках $c900Þ$c91f и$c920Þ$c93f.14.Перестроить массив данных размером 256 байт в обратном порядке.
Т.е. первый байт меняется местами с последним, второй с предпоследним и т.п.15.Напишите программу, осуществляющую сдвиг массива данных размером 64 байта на4 бита влево.16.Напишите программу, зеркально перестраивающую биты в массиве данных размером256 байт. Т.е. нулевой бит первого элемента массива становится последним битом последнего элемента, первый бит первого элемента - 6-м последнего элемента и т.д.17.Напишите программу вычисления факториала числа, заданного в регистре B.Команды передачи управления.
Специальные команды.31Лабораторная работа №6Лабораторная работа №6Порты параллельного ввода/вывода.1. ВведениеВ данной лабораторной работе изучается процесс взаимодействия с портами параллельного ввода/вывода.2. Порты параллельного ввода/выводаМикроконтроллер MC68HC11E1 имеет пять параллельных портов ввода/вывода: A, B,C, D и E.
Каждая линия ввода/вывода многофункциональна, т.е. за исключением простогопараллельного обмена может выполнять дополнительные функции (например, линии портаE могут быть настроены на работу в качестве входов встроенного АЦП; линии порта D могутслужить линиями обмена последовательных интерфейсов; линии порта A могут быть подключены к системе таймера и т. д.).
При работе в режиме обычного ввода/вывода линии портов B, E, а также линии 0, 1, 2, 4, 5, 6 порта A имеют фиксированные направления передачиданных, в то время как направления обмена линий портов C, D и линий 3 и 7 порта A можнозадавать программно. Каждому порту ввода/вывода соответствует внутренний регистр в адресном пространстве микроконтроллера. Для портов A, B, C, D, E эти регистры называютсяPORTA, PORTB, PORTC, PORTD, PORTE соответственно.
Биты регистра соответствуютлиниям порта, причем если линия настроена на ввод информации, то при чтении регистрасоответствующий бит примет состояние присутствующее на линии на момент чтения; еслилиния настроена на вывод, то установленное программно состояние бита управляет выходным состоянием соответствующей линии. Для настройки направления обмена линий портовC и D существуют регистры DDRC и DDRD соответственно. Если какой-либо бит регистранаправления установлен в “0”, то соответствующая линия настраивается на ввод, и наоборот, состояние “1” программирует линию на вывод. Направление обмена линий 3 и 7 портаA задается битами DDRA3 и DDRA7 регистра PACTL.Линии портов B и C кроме обычного ввода/вывода поддерживают режим параллельного обмена с сигналами квитирования. Кроме этого, если у микроконтроллера нет внутреннейпамяти (например, у MC68HC11E1 нет ПЗУ) или ее объем недостаточен, то через эти линииможно подключить внешнюю память.
Режим работы с внешней памятью называется расширенным мультиплексным режимом работы микроконтроллера (о подробностях его установкисм. описание на микроконтроллер). При работе в этом режиме для обеспечения обмена свнешней памятью через порты B и C выводится внутренняя магистраль адреса/данных микроконтроллера. Через порт B выводится старший байт адреса, а через порт C - данные имладший байт адреса. Для отделения данных от адреса порт C должен включаться через регистр, защелкивающий младший байт адреса по сигналу AS микроконтроллера.
Вариантсхемотехнической реализации внешней магистрали адреса/данных представлен на рис. 6.1.Кроме шины адреса (A0-A15) и шины данных (D0-D7) здесь показано формирование сигналов записи (WR) и чтения (RD).Порты параллельного ввода/вывода.32Лабораторная работа №6Рис. 6.1 Реализация внешней магистрали адреса/данных микроконтроллера MC68HC11E1.В отладочном модуле HC11EVB порты B и C также используются для обмена с внешнейпамятью (ОЗУ емкостью 16 кбайт, занимающее адресное пространство $C000-$FFFF). Длятого, чтобы компенсировать “потерю” портов В и С в модуле предусмотрена микросхемаэмулятор MC68HC24, которая имеет два порта, аналогичных по функциональным возможностям (подразумевается режим портов при работе с внутренней памятью) соответствующимпортам микроконтроллера.
Регистры управления этими портами также находятся внутриэмулятора и располагаются они в другом месте адресного пространства. Новые адреса этихрегистров представлены ниже:$xF02PIOC; регистр управления параллельного; вводом/выводом$xF03PORTC; регистр данных порта C$xF04PORTB; регистр данных порта B$xF05PORTCL; альтернативный регистр порта C$xF07DDRC; регистр направления порта C$xF3CHPRIO; регистр высшего приоритета; I-прерывания$xF3DINIT; регистр организации памятиПервая тетрада адреса определяется содержимым младших 4-х бит регистра INIT и после сброса принимает значение $01.