[257]Лабораторные_МС_68HC11 (1086954), страница 7
Текст из файла (страница 7)
Сколько операндов и какие используются командами условного перехода по состояниюбита?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. Работа с регистрами эмулятора не отличается от работы сПорты параллельного ввода/вывода.33Лабораторная работа №6аналогичными регистрами микроконтроллера, за исключением того, что те биты этих регистров, которые не задействованы для управления работой портов B и C, не используются.Таким образом, не используются старшая тетрада регистра INIT, и в регистре HPRIO используются только биты 4 (IRV) и 5 (SMOD).
Более подробную информацию об эмуляторесм. описание на модуль HC11EVB.Параллельные порты ввода/вывода B и C кроме режима обычного параллельного ввода/вывода, в котором информация записанная в соответствующий регистр порта выводитсянепосредственно через линии вывода, а информация присутствующая на линиях ввода может быть считана непосредственно из соответствующего регистра порта, поддерживают двадополнительных режима работы: простой стробируемый ввод/вывод и ввод/вывод с полнойподдержкой сигналами квитирования.
Рассмотрим особенности этих режимов:Режим простого стробируемого ввода/вывода выбирается сбросом бита HNDS регистраPIOC (см. рис. 2). В этом режиме запись в порт C сторобируется сигналом по внешней линииSTRA контроллера, аналогично порт B стробируется на вывод линией STRB. При обнаружении на линии STRA активного фронта (активный фронт строба A для всех режимов управляется состоянием бита EGA регистра PIOC, при EGA=“0” активный фронт - отрицательный, при EGA=“1” активный фронт - положительный) текущее состояние на линиях портаC копируется в регистр-защелку порта C PORTCL (адрес $1005) и в регистре PIOC устанавливается флаг стробирования STAF регистра PIOC.
Если в регистре PIOC установлен битразрешения прерываний по стробу A, производится запрос внутреннего прерывания (поIRQ). Сброс флага STAF производится при чтении регистра PIOC (с установленным флагомSTAF) и последующим чтении регистра PORTCL, причем запись в регистр PORTCL производится независимо от того, был ли флаг STAF ранее очищен или нет. На линию STRB в режиме простого стробируемого ввода/вывода подается импульс длительностью 2 E цикла (E внутренняя частота синхронизации контроллера) при каждой записи данных в порт B.
Активный уровень импульса определяется состоянием бита INVB регистра PIOC. ПриINVB=“0” активный уровень низкий, при INVB=“1” активный уровень высокий.$10027STAF6STAI5CWOM4HNDS3OIN2PLS1EGA0INVBСостояниепосле сброса00000-11PIOCРис. 6.2 Регистр управления параллельным вводом/выводом PIOC.Режим параллельного ввода/вывода с полным квитированием установления связи использует порт C и линии STRA и STRB.
Существуют два основных режима (ввод и вывод) и дополнительно к ним вариант режима вывода с квитированием установления связи, которыйдопускает работу порта C в трех состояниях. Во всех режимах с полным квитированием установления связи вывод STRA является входом, работающим по фронту, а STRB - выходом.В режиме ввода STRA - является линией управления записью в регистр PORTCL извнешней системы, а линия STRB - линия вывода сигнала готовности, управляемая логикоймикроконтроллера.При определении сигнала готовности, внешнее устройство помещает данные на линиипорта C, после чего оно подает импульс на линию STRA. По активному фронту на линииSTRA данные на входе порта C копируются в регистр PORTCL, устанавливается флаг STAF(не обязательно вызывая прерывание) и сбрасывается сигнал готовности на линии STRB.Сброс сигнала готовности автоматически препятствует стробированию внешними устройствами новых данных в порт C.
Чтение порта C (независимо от состояния флага STAF)устанавливает сигнал готовности на линии STRB, сигнализируя о том, что в порт C можнозаписывать новые данные.Порты параллельного ввода/вывода.34Лабораторная работа №6Линия STRB может быть настроена (битом управления PLS регистра PIOC) как импульсный выход (PLS=“1”, импульсный режим) или статический выход (PLS=“0”, статический режим).Протокол режима ввода не оказывает никакого эффекта на использование линий портаC в качестве статических входов или статических выходов.
Чтение регистра данных PORTCвсегда возвращает логические уровни на выводах порта C (для линий настроенных на ввод).Запись как в регистр PORTC, так и в регистр PORTCL посылает информацию в выходнойрегистр порта C, не влияя на стробирование ввода с квитированием.В режиме вывода на линию STRB выводится сигнал готовности и линия STRA являетсявходной линией подтверждения (работающая по фронту), сообщающая микроконтроллеру отом, что выходные данные приняты внешним устройством.