Лабораторные МС 68HC11 (1086185), страница 7
Текст из файла (страница 7)
Работа с регистрами эмулятора не отличается от работы сПорты параллельного ввода/вывода.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 являетсявходной линией подтверждения (работающая по фронту), сообщающая микроконтроллеру отом, что выходные данные приняты внешним устройством.
В разных вариантах этого протокола линия STRA используется также и в качестве линии разрешения вывода.Микроконтроллер помещает данные на выходные линии порта C и подтверждает этодействие сигналом на линии STRB. После этого внешнее устройство считывает данные с последующим подтверждением по линии STRA, означающим, что на порт C уже можно выводить новые данные.
Активный перепад на линии STRA позволяет сбросить линию STRB иустановить флаг STAF. В на установку флага STAF программа выводит через порт C новыеданные. Запись данных в регистр PORTCL вызывает появление этих данных на выходныхлиниях порта C и подачу сигнала подтверждения по линии STRB.Существуют варианты протокола вывода, которые допускают режим работы регистра Cв третьем состоянии, то есть возможно прямое соединение этого 8-разрядного порта с другими устройствами, имеющими трехстабильные выходы без использования других вспомогательных схем.Во время нахождения линии STRA в неактивном состоянии направление передачи навсех линиях порта C определяется содержимым регистра направления, то есть линии настроенные как входы находятся в высокоимпедансном состоянии. При активизации линии STRAвсе линии порта C становятся выходами независимо от содержимого регистра направления.Следует заметить, что в рассматриваемом протоколе чтение порта C всегда будет возвращатьвеличину на входе выходных буферов порта, независимо от состояния регистра направления,поскольку эти линии могут не иметь значащих данных в варианте данного протокола с третьим состоянием.
Эта особенность делает непрактичным использование некоторых линийпорта C для ввода во время протокола вывода, но не мешает им являться статическими выходами.Для учебных целей на плате отладочного модуля предусмотрены набор переключателейС7-С0 (см. рис.2 технического описания на модуль), подключенных к порту С эмулятора,кнопка PA0, подключенная к линии 0 порта A микроконтроллера и набор светодиодов B7B0, подключенных к порту B. Схемотехнически это подключение представлено на следующем рисунке:Порты параллельного ввода/вывода.35Лабораторная работа №6Представленные ниже эксперименты иллюстрируют возможности простого параллельного ввода вывода через порты В и С.
При проведении экспериментов должна быть установлена перемычка J10 для возможности изменения состояния линии 0 порта A с помощьюкнопки PA0.С помощью команды отладчика “Memory Modify” откройте ячейку памяти $1000, соответствующую регистру данных порта A. При этом младший бит регистра должен быть установлен в “1” (т.к. кнопка PA0 не нажата и на линии 0 порта А присутствует высокий уровень). Нажмите кнопку PA0 и удерживая ее вновь откройте ячейку $1000.
Убедитесь, чтомладший бит изменил свое значение на “0”, отобразив таким образом состояние линии 0порта А при нажатой клавише PA0.Откройте ячейку памяти $1F04, соответствующую регистру данных порта B. Запишитев нее произвольное число и убедитесь, что оно отобразилось в двоичном виде на светодиодах(горящий светодиод соответствует логической “1”, погашенный - “0”).Рассмотрим программу, производящую опрос состояния переключателей порта C и запись полученной информации в порт B (на светодиоды) при нажатии на клавишу PA0.cpu6811portaequ$00; смещение для регистра данных порта Aportbequ$1f04; регистр данных порта Bportcequ$1f03; регистр данных порта Cddrcequ$1f07; регистр направления порта Corgldy$d000#$1000; общее смещение для внутренних; регистровclrddrc; настройка линий порта C на вводj1brset porta,y,$01,j1 ; ожидание нажатия на PA0ldaa portc; запись в аккумулятор A состояния; переключателейstaa portb; вывод полученных данных в порт Bbraj1; переход на началоЗапустите программу с адреса $D000.
Наберите на переключателях какое-нибудь двоичное число (логический “0” соответствует нижнему положению переключателя), нажимаяклавишу PA0, убедитесь, что состояние переключателей отображается на светодиодах. Обратите внимание, что в начале программы производится настройка направлений обмена линийПорты параллельного ввода/вывода.36Лабораторная работа №6порта C (логический “0”, записанный в определенный бит регистра направления программирует соответствующую ему линию ввода/вывода на ввод). Линия 0 порта A и линии портаB имеют фиксированные направления обмена и не требуют настройки.Примечание.
При программировании линий порта C на вывод, переключатели, соответствующие этим линиям, должны быть установлены в верхнее положение (состояние логической “1”),иначе микросхема эмулятора может выйти из строя.В заключение рассмотрим программу реализующую мигание светодиодов с частотой 1Гц и скважностью 3 (напомним, что скважностью называется отношение периода сигнала кдлительности импульса). Для организации временных задержек воспользуемся тем свойством, что каждая команда микроконтроллера выполняется за фиксированное количествовнутренних циклов синхронизации. Количество циклов выполнения для команд микроконтроллеров семейства M68HC11 представлено в соответствующей таблице в описании намикроконтроллер.
Длительность цикла для микроконтроллера MC68HC11E1 определяетсякак 4/f, где f - частота внешнего кварцевого генератора. Для отладочной платы HC11EVBf=8 МГц и, таким образом, длительность одного цикла составляет 0.5 мкс. Следовательно,если команда выполняется за 3 цикла (например команда PSHA), то длительность ее выполнения составит 3 x 0.5= 1.5 мкс.cpu6811portbequ$1f04; регистр данных порта Bj1orgclrabne$d000j2; обнулить счетчик; если содержимое счетчика не равно 0,; то не зажигать светодиоды, иначеldab #$ffstab portb; зажечь светодиодыj2ldy#51282; цикл задержки на 1/3 секундыloopnopnopnopdeybneloopclrbstab portb; погасить светодиодыinca; увеличить содержимое счетчика на 1cmpa #3; если его содержимое меньше 3,bnej1; то переход на начало,clra; иначе обнулить счетчикbraj1; и переход на началоРассмотрим работу программы.