Порты ввода-вывода

Контроллеры портов ввода-вывода

Контроллер порта ввода-вывода (КПВВ) обеспечивает интерфейс между периферийным устройством, подключенным к порту КПВВ, и системной шиной.

Порты ввода-вывода делятся на два типа в зависимости от количества бит, проходящих за один такт передачи:

– параллельные, в которых за один такт проходит несколько бит (например, 8 или 16 бит);

– последовательные, в которых за один такт проходит один бит.

Наиболее распространенные порты ввода-вывода.

RS-232 (COM) – интерфейс обмена данными по последовательному коммуникационному порту (СОМ-порту). С помощью данного интерфейса осуществляется работа и подключение таких устройств, как внешний модем, мышь и т. д.

IEEE 1284 (Instute of Electrical and Electronic Engineers 1284; LPT) – стандарт, описывающий спецификации параллельных скоростных интерфейсов SPP (Standard Parallel Port – стандартный параллельный порт), EPP (Enhanced Parallel Port – улучшенный параллельный порт), ECP (Еxtended Capabilities Port – порт с расширенными возможностями). Параллельный порт IEEE 1284 (LPT-порт) используется для принтеров, внешних запоминающих устройств, сканеров.

USB (Universal Serial Bus – универсальная последовательная шина) – универсальный последовательный интерфейс, пришедший на смену устаревшим портам RS-232 и IEEE 1284.

Поддерживает технологию Plug and Play с возможностью «горячей» замены, то есть замены устройств без необходимости выключения или перезагрузки компьютера. Для адекватной работы интерфейса необходима операционная система, которая корректно с ним работает.

Поддержка USB введена в Microsoft Windows 2000. К портам USB можно подключить до 127 устройств. Каждое устройство, подключенное непосредственно к порту, может работать в качестве разветвителя, то есть можно подключать к нему другие устройства.

Скорость передачи через порт – 480 Мбит/с. Кроме данных, через порт подается электропитание. В настоящее время большинство ПУ подключаются через порт USB.

PS/2 (Personal System – персональная система) – последовательный порт, разработанный фирмой IBM в середине 1980-х для своей серии персональных компьютеров IBM PS/2. В отличие от порта RS-232 порт PS/2 имеет более компактный разъем. Через порт подается также электропитание. В настоящее время используется вместе с портом USB.

IEEE 1394 (FireWire, iLink) – последовательный интерфейс, использующийся для подключения цифровых видеоустройств (видеокамер). Через порт возможна передача видеоизображения со скоростью 100-400 Мбит/с. Поддерживает технологию Plug and Play.

PCMCIA (Personal Computer Memory Card International Association; PC Card) – порт, используемый в переносных компьютерах для подключения новых устройств к нему без вскрытия корпуса компьютера.

Порт имеет разрядность данных/адреса – 16/26 бит, поддерживает автоконфигурирование, возможно подключение и отключение устройств в процессе работы компьютера.

Существует много ПУ, разработанных для переносных компьютеров и использующих порт PCMCIA.

Дата добавления: 2016-05-31; просмотров: 1102;

Источник: https://poznayka.org/s5669t1.html

Интерфейсы и порты ввода-вывода персонального компьютера

Компьютер состоит из множества отдельных устройств. Для взаимодействия между компонентами их необходимо связать физическими линиями (проводниками), которые обычно называют шинами.

Сочетание шины и правил передачи сигналов по ней образует интерфейс. Это совокупность средств сопряжения и связи устройств компьютера, обеспечивающая их эффективное взаимодействие.

Если интерфейс является общепринятым, например, утвержденным на уровне международных соглашений, то он называется стандартным.

Каждый из функциональных элементов (память, монитор или другие устройства) связан с шиной определенного типа – адресной, управляющей или шиной данных. Для согласования интерфейсов периферийные устройства подключаются к шине не напрямую, а через свои контроллеры (адаптеры) и порты примерно по схеме:

Контроллеры и адаптеры представляют собой комплекты электронных цепей, которыми снабжаются устройства компьютера для обеспечения совместимости их интерфейсов. Контроллеры осуществляют непосредственное управление периферийными устройствами по запросам микропроцессора.

Порты устройств представляют собой электронные схемы, содержащие один или несколько регистров ввода-вывода и позволяют подключать периферийные устройства ПК к внешним шинам микропроцессора. Различают последовательный, параллельный и игровой порты (или интерфейсы).

Последовательный порт (RS-232-C) обменивается данными с процессором побайтно, а с внешними устройствами – побитно. В операционных системах компьютера IBM PC каждому порту RS-232-C присваивается логическое имя COM1:-COM4:.

Параллельный порт (обозначаются LPT1-LPT4) получает и посылает данные побайтно. К последовательному порту обычно подсоединяют медленно действующие или достаточно удаленные устройства, такие, как мышь и модем. К параллельному порту подсоединяют более «быстрые» устройства – принтер и сканер.

Через игровой порт подсоединяется джойстик. Клавиатура и монитор подключаются к своим специализированным портам, которые представляют собой просто разъемы.

По функциональному назначению интерфейсы компьютера принято разделять на внешние (ввода-вывода) и внутренние.

Очевидно, что внешние интерфейсы предназначены для подключения периферийных устройств (принтеров, сканеров и тому подобного), а также пользовательских компонентов управления (клавиатура, мышь). С внутренними интерфейсами ситуация выглядит несколько сложнее.

Часть из них можно назвать системными интерфейсами, поскольку они фигурируют исключительно внутри платформы (системная шина, шина чипсета, шина памяти), а часть – локальными.

К широко распространенным локальным интерфейсам относятся ISA, PCI, AGP, IDE (ATA), COM, LPT, USB, IEEE 1394 (FireWire), SCSI, Serial ATA, PS/2, Game-port, MIDI, Ethernet, IrDA, Bluetooth и другие.

Поддерживаемые системой интерфейсы во многом определяют производительность компьютера в целом и возможность его развития. Как и везде, важным фактором является сбалансированный состав интерфейсов в компьютере: оптимальное соотношение передовых современных и морально устаревших стандартов, а также их соответствие решаемым задачам. Основное внимание уделим локальным и внешним интерфейсам.

Комплект системной логики (чипсет). Потенциальные возможности и эффективность компьютера во многом определяются установленным на материнской плате набором микросхем системной логики, называемым чипсетом (ChipSet).

Он обеспечивает работу процессора, системной шины (соединяет процессор и контроллер оперативной памяти), интерфейсов взаимодействия с оперативной памятью и другими компонентами компьютера.

Его основная задача – поддержка множества несовместимых напрямую интерфейсов.

Современные аппаратные интерфейсы и системная шина работают асинхронно, т.е. могут одновременно передавать и получать сигналы. Они не согласованы ни по характеру сигналов, ни по тактовой частоте, ни по пропускной способности. Для увязки данных и приведения их к удобной для обмена форме требуются операции преобразования и кэширования.

Многие современные чипсеты включают две «базовые» микросхемы, которые принято называть соответственно «North Bridge» (северный мост) и «South Bridge» (южный мост).

Северный мост обычно обеспечивает управление шиной AGP, шиной системной памяти, шиной PCI. Южный мост управляет интерфейсами IDE, USB, ACPI, IEEE 1294, имеет мост ISA-PCI, контроллеры клавиатуры, мыши, FDD.

Оба моста соединены шиной PCI или другим интерфейсом. Известны чипсеты, в которых встроены видео и звуковые контроллеры. Необходимо отметить, что чипсет не является отдельным устройством, подключаемым к системной плате.

Комплект системной логики всегда интегрирован с нее, а следовательно, разработкой и производством чипсетов будут заниматься фирмы, непосредственно производящие системные платы.

Наиболее распространены следующие чипсеты: NvidiaG-Force 2 (3, 4), VIA K8T800 PRO, VIA K8T890, Intel865PE, AMD-8000 и др.

Источник: https://cyberpedia.su/8xed04.html

Порты ввода-вывода

 

Порт ввода-вывода – логическое объединение сигнальных линий, через которое принимаются и передаются данные.
Каждая линия порта, как правило, обозначается как Pnx, где

  • n – обозначение порта;
  • x – номер бита (линии) в порте.

Каждый порт ввода-вывода обслуживают как минимум 3 служебных регистра:

  • регистр, содержащий данные (уровни сигналов) на всех линиях порта и используется для записи сигналов в порт;
  • регистр, содержащий состояния входов порта, доступен только для чтения, используется при чтении данных из порта;
  • регистр направления линий порта: каждая линия порта может быть сконфигурирована как вход или как выход в зависимости от значения бита этого регистра.

Если какая-то линия порта ввода-вывода в схеме не используется, она должна быть определена как выход (соответствующий бит регистра направления должен соответствовать выходу), и ее выходное значение должно быть равно 0.

Большинство линий ввода-вывода могут быть сконфигурированы для выполнения альтернативных функций, обозначенных в назначении выводов микроконтроллера.

Для всех линий портов ввода-вывода, как правило, доступна программная конфигурация входных подтягивающих резисторов. Подтягивающие резисторы осуществляют доопределение потенциалов «брошенных» входов напряжением высокого (Pull-up) или низкого (Pull-down) уровня.

Для обращения к отдельным линиям порта используется маскирование битов.

Входные элементы управления

В качестве входных элементов управления могут использоваться

  • другие элементы схемы;
  • тумблеры;
  • джамперы;
  • множественные переключатели;
  • кнопки.

Тумблеры предназначены для коммутации цепей управления. Обрабатываемый сигнал с тумблера – потенциальный.

Различают 1-позиционные и 2-позиционные тумблеры:

1-позиционные

2-позиционные

Джамперы, как правило, используются для переключения режима работы, и их состояние проверяется только в момент включения питания микроконтроллера.

Установка джампера замыкает 2 вывода, между которыми он установлен.

Множественные переключатели представляют собой набор 1-позиционных тумблеров в миниатюрном формате.

Кнопки предназначены для коммутации цепей управления.

Обрабатываемый сигнал с кнопки – импульсный и фиксирует момент нажатия кнопки и момент ее отжатия.

Выходные элементы управления

В качестве выходных элементов управления могут использоваться

  • другие элементы схемы;
  • элементы индикации (единичные светодиоды или светодиодные сборки, в частности, — 7-сегментные индикаторы).

Единичные светодиоды

7-сегментные индикаторы

Различают 7-сегментные индикаторы с общим анодом и с общим катодом.

При подаче логической единицы на соответствующий сегмент индикатора с общим катодом светодиод сегмента включается. При этом общий вывод сегментов (катод) должен быть соединен с логическим нулем.

При подаче логического нуля на соответствующий сегмент индикатора с общим анодом светодиод сегмента включается. При этом общий вывод (анод) должен быть соединен с логической единицей.

В таблице приведены коды для отображения цифр на 7-сегментном индикаторе

Цифра G F E D C B A Код
1 1 1 1 1 1 0x3F
1 1 0x06
1 1 1 1 1 0x5B
1 1 1 1 1 0х4F
1 1 1 1 0x66
1 1 1 1 1 0x6D
1 1 1 1 1 1 0x7D
1 1 1 0x07
1 1 1 1 1 1 1 0x7F
1 1 1 1 1 1 0x6F

Назад

Назад: Программирование микроконтроллеров

Источник: https://prog-cpp.ru/micro-ports/

Порты ввода-вывода: часть 1

Предлагаю серию статей, посвященных интересной, на мой взгляд, теме по компьютерной грамотности – порты ввода-вывода. Современные компьютеры оснащены различными портами для подключения внешних устройств с тем, чтобы эти устройства могли работать совместно с ПК. Название «порт» не является случайным.

Такие устройства ввода-вывода, которые именуются «порт», действительно имеют сходство с портами, куда корабли приходят после своего короткого или долгого плавания.

Порт нужен кораблю для того, чтобы произвести выгрузку и погрузку грузов (а это могут быть сыпучие грузы, контейнеры, нефть или газ, рыба и т.п.), произвести посадку и высадку пассажиров и экипажа, заправить корабль всеми необходимыми для его автономной работы компонентами (топливо, вода и т.п.), принять накопившиеся отходы.

В порту могут причаливать корабли, разные по своей конструкции, размерам, типам, назначениям. При этом порт должен уметь работать со всеми приходящими в него кораблями, в противном случае он вынужден отказывать этим кораблям в приеме.

Зачем компьютеру нужны порты и как они появились?

Точно также порты нужны компьютеру для того, чтобы с их помощью проводить «погрузку и выгрузку» информации, а точнее, ввод и вывод данных.

Например, они позволяют

  • вводить данные в ПК с клавиатуры, мобильного телефона, цифрового фотоаппарата, со сканера,
  • выводить результаты на монитор, на принтер,
  • записывать музыку с ПК на плеер или Ipod, а также книги на ридер (устройство для чтения книг)
  • и т.д.

Но такое многообразие внешних устройств, работающих с ПК, появилось далеко не сразу. С момента создания первых вычислительных машин их способность работать с внешними устройствами является чуть ли не самой главной задачей.

Действительно, кому нужно высокое быстродействие ПК, если нет возможности быстро ввести в него большое количество данных для последующей обработки? Если время, которое мы затратим на ввод данных, будет во много раз больше, чем время их обработки на компьютере, то тогда будет потерян всякий смысл такой автоматизации. Аналогично, если расчеты делаются быстро, а для получения результатов нужно ждать длительное время, такой быстрый расчет с крайне медленным выводом данных не имеет практического смысла.

Кстати, первые электронные вычислительные машины проектировались и создавались сразу же с подключенными к ним внешними устройствами, причем их число и возможности были строго ограничены.

Это были консоли для операторов в машинном зале, дисплеи для программистов и пользователей (как правило, в дисплейном зале), принтеры, дисковые и ленточные накопители, устройства ввода-вывода на перфоленты и перфокарты и т.п.

С развитием ПК и распространением их дома и в офисах ввод и вывод данных стал еще более актуальным и, самое главное, более разнообразным.

ПК были созданы так, чтобы иметь возможность подключения теоретически неограниченного количества всевозможных внешних устройств различного назначения:

  • клавиатуры, манипулятор мышь, мониторы, принтеры, сканеры, модемы и т.п.,
  • а также бытовых устройств (фотоаппараты, музыкальные проигрыватели и т.п.) или
  • специализированных устройств (например, миди-клавиатуры или синтезаторы и т.п.).

Что такое универсальные порты ввода-вывода

При таком разнообразии устройств ввода-вывода данных невозможно под каждое устройство создавать свой уникальный порт. Первоначально делались такие попытки, но это не оправдало себя. Гораздо более удобным оказалось создание универсальных портов ввода-вывода, к которым можно было подключать любые устройства по выбору пользователей.

Одними из первых универсальных портов были так называемые :

  • последовательный порт (COM-порт компьютера, сокращение COM происходит от Communication port, что означает «коммуникационный порт») и
  • параллельный порт (LPT-порт принтера, аббревиатура LPT означает Line Printer Terminal – «линия для подключения принтера»).

Отличаются они способом передачи данных между ПК и внешними устройствами.

Последовательные порты передают данные бит за битом, т.е. передаваемые байты информации проходят через порт последовательно по одному биту. За такую последовательную передачу информации эти порты и получили свое название.

Параллельные порты передают информацию целыми байтами, т.е. байты передаются через порт одновременно или параллельно, отсюда и название порта.

Рис. 1. Как выглядят USB и COM порты

Первые последовательные порты (COM-порты компьютера) работали гораздо медленнее параллельных портов, так как передача данных бит за битом требует значительно большего времени, чем одновременная передача целых байтов. Соответственно, к последовательным портам можно было подключать только относительно медленные устройства, например, манипуляторы мышь или модемы.

В настоящее время COM-порты применяются редко, в основном, для работы с разными датчиками, купюроприемниками и другими техническими устройствами.

Как узнать com порт и LPT-порт?

Узнать com порт (рис. 1) можно по внешнему виду разъёма порта, который выглядит как трапеция с закругленными углами с 9-ю (встречается чаще) или 25-ю (встречается намного реже) контактами «папа». Кстати, LPT-порт тоже имеет 25 контактов, но их тип – «мама».

Рис. 2. Как выглядит LPT порт

Такие быстродействующие устройства как, например, принтеры или сканеры, при подключении к последовательному порту начинали работать медленно и неэффективно.

Поэтому для обеспечения необходимого быстродействия эти устройства требовали подключения к параллельному LPT-порту, что обеспечивало на тот момент максимальную скорость работы и производительности.

Дальнейшее развитие компьютеров привело к тому, что стало необходимо повышать быстродействие и надежность передачи данных через порты. Даже быстродействующий параллельный порт уже не удовлетворял требованиям времени по нескольким причинам.

Например, этот порт был небезопасен как для компьютера, так и для подключаемого в него устройства, если, например, подключить или отключить внешнее устройство во время его работы. Это могло привести к поломке порта, компьютера или устройства. Также в силу архитектуры ПК количество параллельных портов было ограничено, этих портов могло быть только 2.

За счет развития инженерной мысли последовательные порты получили новые возможности, которые ставили их не только в один ряд с параллельными портами, но и делали более удобными для применения пользователями ПК. Скорость работы последовательных портов стала достаточной для подключения быстродействующих устройств. Появились возможности для дальнейшего наращивания их количества.

Универсальный USB-порт

В настоящий момент получили широкое распространение универсальные USB-порты компьютера. USB расшифровывается как Universal Serial Bus – «универсальная последовательная шина».

USB-порты компьютера удобны еще и тем, что от них автономные внешние устройства могут получать электрическое питание, что упрощает такие устройства и делает их меньшими по размерам и энергонезависимыми от электрических сетей.

Например, к USB портам компьютера могут подключаться внешние накопители на жестких дисках, CD и DVD дисководы, флешки, плейеры и другие устройства, которым теперь не нужны блоки питания и шнуры для подключения к электричеству, столь необходимому для их работы.

Дополнительно: Что делать, если USB устройство не опознано?

Итоги

Но самое важное в портах ввода и вывода состоит в том, что они стали своего рода стандартом для подключения внешних устройств. К данному стандарту стали стремиться все производители этих устройств, что позволило потребителям – пользователям ПК выбирать для себя те устройства, которые им более всего подходят, а не только те устройства, которые разработчики ПК предлагают вместе с ПК.

Такой стандарт приводит к конкуренции среди производителей, которая в свою очередь способствует повышению качества внешних устройств и к предложению устройств по приемлемой цене для потребителей.

Любой монополизм в этой сфере, если бы он имел место и был бы обусловлен конструктивными особенностями ПК, обязательно привел бы к значительному росту цен на внешние устройства, без которых ПК не стал бы таким популярным среди пользователей.

Упражнения по компьютерной грамотности:

1) Есть ли на Вашем компьютере COM порты? Если есть, то сколько их?

2) Есть ли на Вашем компьютере LPT порты? Если есть, то сколько их? 3) Есть ли на Вашем компьютере USB порты? Cколько их?

P.S. Рекомендую также прочитать:

Разъёмы ПК: часть 2

Подключение внешнего устройства к порту ввода – вывода ПК

Отключение внешнего устройства от порта ввода-вывода ПК

Перечень возможных портов на ПК

Получайте актуальные статьи по компьютерной грамотности прямо на ваш почтовый ящик.
Уже более 3.000 подписчиков

.

Важно: необходимо подтвердить свою подписку! В своей почте откройте письмо для активации и кликните по указанной там ссылке. Если письма нет, проверьте папку Спам.

Источник: https://www.compgramotnost.ru/sostav-computera/porty-vvoda-vyvoda-chast-1

Адреса портов ввода-вывода

ПодробностиРодительская категория: Системные платыКатегория: Системные ресурсы

Порты ввода-вывода позволяют установить связь между устройствами и программным обеспечением в компьютере.

Если вы хотите отправить какую-либо информацию в последовательный порт, то должны знать, какой порт ввода-вывода (радиоканал) он прослушивает.

Аналогично, если нужно получить данные из последовательного порта, следует прослушивать тот адрес, на который они передаются.

В отличие от прерываний IRQ и каналов прямого доступа к памяти, в персональных компьютерах существует великое множество портов ввода-вывода.

Существует 65535 портов, пронумерованных от 0000h до FFFFh, и это, пожалуй, самый удивительный артефакт в процессоре Intel. Хотя многие устройства используют до восьми портов, все равно их доступного количества более чем достаточно.

Самая большая проблема состоит в том, чтобы двум устройствам случайно не назначить один и тот же порт.

Современные системы, поддерживающие спецификацию Plug and Play, автоматически разрешают любые конфликты из-за портов, выбирая альтернативные порты для одного из конфликтующих устройств.

Хотя порты ввода-вывода обозначаются шестнадцатеричными адресами, подобными адресам памяти, они не являются памятью, они — порты. Различие состоит в том, что данные, отправленные по адресу памяти 1000h, будут сохранены в модуле памяти SIMM или DIMM.

Если вы отсылаете данные по адресу 1000h порта ввода-вывода, то они попадают на этот “канал” шины, и любое устройство, прослушивающее канал, может их принять.

Если никакое устройство не прослушивает этот адрес порта, то данные достигнут конца шины и будут поглощены ее нагрузочными резисторами.

Специальные программы — драйверы — взаимодействуют с устройствами, используя различные адреса портов. Драйвер должен знать, какие порты использует устройство, чтобы работать с ним. Обычно это не составляет проблемы, поскольку и драйвер, и устройство, как правило, поставляются одним и тем же производителем.

Системная плата и набор микросхем системной логики обычно используют адреса порто ввода-вывода от 0h до FFh, а все другие устройства — от 100h до FFFFh.

Чтобы выяснить, какие адреса порта используются в конкретной системной плате, загляните в прилагаемую к ней документацию или же воспользуйтесь диспетчером устройств Windows.

Устройства на шине, как правило, используют адреса, начиная с 100h.

Чтобы точно знать, какие адреса используют ваши устройства, настоятельно рекомендую обратиться к документации или просмотреть информацию об устройстве в диспетчере устройств Windows.

Практически все устройства на системных шинах используют адреса портов вводавывода. Большинство из них стандартизировано, поэтому, как правило, каких-либо конфликтов или проблем с адресами портов для этих устройств не возникает.

Источник: http://perscom.ru/system-plates/49-sistemnie-resursi/211-2012-02-22-21-13-02

Микроконтроллеры AVR. GPIO. Порты ввода-вывода

Долгое время мы оставляли без внимания микроконтроллеры AVR, и вот пришла пора исправить это недоразумение! Как и для других контроллеров, будем постепенно рассматривать различную периферию AVR’ок, сначала теорию, всякие регистры, ну и под конец небольшие примерчики.

В качестве IDE  я использую AVR Studio 5, шестую версию AVR Studio даже не пробовал, не так часто последнее время мне попадаются задачи для AVR ) А вообще неплохо иметь еще и установленную AVR Studio 4, потому что порой случается так, что запрограммировать контроллер из AVR Studio 5 не представляется возможным. Вот совсем недавно я хотел прошить ATMega2560 при помощи программатора STK500 и это оказалось неосуществимо через 5 студию ) Хорошо осталась со старых времен AVR Studio 4, и проблема решилась в течение пары минут.

Что тут еще можно сказать?.. Да в принципе, это все, можно переходить к делу;)

Начинать, естественно, будем с GPIO – портов ввода-вывода, потому как без них никуда ) И прежде чем описывать регистры, которые управляют работой портов, отмечу несколько «электрических» моментов.

На входе каждой ножки микроконтроллера заботливые разработчики поставили пару диодов, которые должны спасти микроконтроллер в случае превышения допустимого напряжения. НО! На деле все не столь радужно, и если подать на вход микроконтроллера, например, 7.5 Вольт, то контроллеру уже никто и ничто не поможет, проверено на собственном опыте. Поэтому все эксперименты нужно проводить аккуратно )

Теперь к регистрам. Вся работа с портами ввода-вывода в AVR’ках сосредоточена в трех регистрах – DDRx, PORTx, PINx. Символ «x» заменяется соответствующим названием порта (A,B…).

То есть, если мы хотим работать с портом A микроконтроллера, то нам нужны регистры DDRA, PORTA, PINA. Если мы хотим работать с пятым пином порта А (РА5), то нас интересует пятый бит упомянутых выше регистров.

Как видите, все довольно просто ) Осталось лишь разобраться, что же и куда надо записывать, за что отвечает каждый из этих регистров. Итак, начали…

Регистр DDRx.

DDRx отвечает за направление работы соответствующих выводов микроконтроллера. Каждый пин может быть либо входом, либо выходом, третьего не дано.

Для того, чтобы настроить вывод на работу в режиме входа в регистр DDR для этого порта нужно записать 0, для выхода – 1. Пусть нам нужно настроить РА6 как вход, а РА3 как выход.

Что делаем? Верно, третий бит регистра DDRA выставляем в 1, а в 6 бит все того же регистра DDRA записываем 0. Готово!

Регистр PINx.

В этот регистр мы записать ничего не можем, он предназначен исключительно для чтения данных. В этом регистре информация об уровне сигнала на соответствующем порте.

Как мы помним, микроконтроллер – это цифровое устройство, и сигналы на его ножках могут иметь либо высокий уровень (логическая 1), либо низкий (логический 0).

Если мы хотим узнать, что у нас там на входе РВ4, то нас интересует четвертый бит регистра PINB.

Регистр  PORTx.

С этим регистром чуть посложнее, чем с предыдущими. Его функциональность зависит от того, в какой направлении работают выводы микроконтроллера. Если вывод используется в качестве входа, то регистр PORTx задает тип входа. Тут возможно два варианта:

PORTx = 1 – при такой конфигурации мы получаем вход с подтяжкой вверх (PullUp)

PORTX = 0 – высокоимпедансный вход (Hi-Z) – это значит, что сопротивление порта настолько велико, что его можно считать бесконечным )

Итак, продолжаем с регистром PORTx. Если вывод работает в качестве выхода, а в регистре PORTx единица – то на выводе будет высокий уровень сигнала, аналогично, PORTx = 0 – низкий уровень.

Давайте небольшой пример для иллюстрации

Источник: https://microtechnics.ru/mikrokontrollery-avr-gpio-porty-vvoda-vyvoda/

Порты ввода/вывода информации

Все четыре порта МК51 предназначены для ввода или вывода информации побайтно. Схемотехника портов ввода/вывода МК51 для одного бита показана на рис. 3.4 (порты 1 и 2 имеют примерно такую же структуру, как и порт 3). Каждый порт содержит управляемые регистр-защелку, входной буфер и выходной драйвер.

Выходные драйверы портов 0 и 2, а также входной буфер порта 0 используются при обращении к внешней памяти (ВП). При этом через 1 порт 0 в режиме временного мультиплексирования сначала выводится младший байт адреса ВП, а затем выдается или принимается байт данных. Через порт 2 выводится старший байт адреса в тех случаях, когда 1 разрядность адреса равна 16 бит.

Все выводы порта 3 могут быть использованы для реализации альтернативных функций, перечисленных в таблице 8.1. Альтернативные функции могут быть задействованы путем записи 1 в соответствующие биты регистра-защелки (Р3.0-Р3.7) порта 3.

Таблица 8.1. Альтернативные функции порта 3

Символ Позиция Имя и назначение
мRD P3.7 Чтение. Активный сигнал низкого уровня формируется аппаратурно при обращении к ВПД
мWR P3.6 Запись. Активный сигнал низкого уровня формируется аппаратурно при обращении к ВПД
T1 P3.5 Вход таймера/счетчика 1 или тест-вход
T0 P3.4 Вход таймера/счетчика 0 или тест-вход
мINT1 P3.3 Вход запроса прерывания 1. Воспринимается сигнал низкого уровня или срез
мINT0 P3.2 Вход запроса прерывания 0. Воспринимается сигнал низкого уровня или срез
TXD P3.1 Выход передатчика последовательного порта в режиме УАПП. Выход синхронизации в режиме сдвигающего регистра
RXD P3.0 Вход приемника последовательного порта в режиме УАПП. Ввод/вывод данных в режиме сдвигающего регистра

Порт 0 является двунаправленным, а порты 1, 2 и З – квазидвунаправленными. Каждая линия портов может быть использована независимо для ввода или вывода информации. Для того чтобы некоторая линия порта использовалась для ввода, в D-триггер регистра-защелки порта должна быть записана 1, которая закрывает МОП-транзистор выходной цепи.

По сигналу СБР в регистры-защелки всех портов автоматически записываются единицы, настраивающие их тем самым на режим ввода.

Все порты могут быть использованы для организации ввода/вывода информации по двунаправленным линиям передачи. Однако порты 0 и 2 не могут быть использованы для этой цели в случае, если МК-система имеет внешнюю память, связь с которой организуется через общую разделяемую шину адреса/данных, работающую в режиме временного мультиплексирования.

Запись в порт. При выполнении команды, которая изменяет содержимое регистра-защелки порта, новое значение фиксируется в регистре в момент S6P2 последнего цикла команды.

Однако опрос содержимого регистра-защелки выходной схемой осуществляется во время фазы Р1 и, следовательно, новое содержимое регистра-защелки появляется на выходных контактах порта только в момент S1P1 следующего машинного цикла.

Нагрузочная способность портов. Выходные линии портов 1, 2 и 3 могут работать на одну ТТЛ-схему. Линии порта 0 могут быть нагружены на два входа ТТЛ-схем каждая.

Линии порта 0 могут работать и на n-МОП-схемы, однако при этом их необходимо подключать на источник электропитания через внешние нагрузочные резисторы за исключением случая, когда шина порта 0 используется в качестве шины адреса/данных внешней памяти.

Входные сигналы для МК51 могут формироваться ТТЛ-схемами или n-МОП-схемами. Допустимо использование в качестве источников сигналов для МК51 схем с открытым коллектором или открытым стоком. Однако при этом время изменения входного сигнала при переходе из 0 в 1 окажется сильно затянутым.

Особенности работы портов. Обращение к портам ввода/вывода возможно с использованием команд, оперирующих с байтом, отдельным битом и произвольной комбинацией бит.

При этом в тех случаях, когда порт является одновременно операндом и местом назначения результата, устройство управления автоматически реализует специальный режим, который называется “чтение-модификация-запись”.

Этот режим обращения предполагает ввод сигналов не с внешних выводов порта, а из его регистра-защелки, что позволяет исключить неправильное считывание ранее выведенной информации.

Подобный механизм обращения к портам реализован в следующих командах:

ANL – логическое И, например ANL Р1, А;

ORL – логическое ИЛИ, например ORL P2, А;

XRL – исключающее ИЛИ, например XRL РЗ, А;

JBC – переход, если в адресуемом бите единица, и последующий сброс бита, например JBC P1.1, LABEL;

CPL – инверсия бита, например CPL P3.3;

INC – инкремент порта, например INC P2;

DEC – декремент порта, например DEC P2;

DJNZ – декремент порта и переход, если его содержимое не равно нулю, например DJNZ РЗ, LABEL;

MOV PX.Y, C – передача бита переноса в бит Y порта X;

SET PX.Y – установка бита Y порта X;

CLR PX.Y – сброс бита Y порта X.

Совсем не очевидно, что последние три команды в приведенном списке являются командами “чтение-модификация-запись”. Однако это именно так. По этим командам сначала считывается байт из порта, а затем записывается новый байт в регистр-защелку.

Причиной, по которой команды “чтение-модификация-запись” обеспечивают раздельный доступ к регистру-защелке порта и к внешним выводам порта, является необходимость исключить возможность неправильного прочтения уровней сигналов на внешних выводах.

Предположим для примера, что линия Y порта Х соединяется с базой мощного транзистора и выходной сигнал на ней предназначен для его управления. Когда в данный бит записана 1, то транзистор включается.

Если для проверки состояния исполнительного механизма (в нашем случае – мощного транзистора) прикладной программе требуется прочитать состояние выходного сигнала в том же бите порта, то считывание сигнала с внешнего вывода порта, а не из D-триггера регистра-защелки порта приведет к неправильному результату: единичный сигнал на базе транзистора имеет относительно низкий уровень и будет интерпретирован в МК как сигнал 0. Команды “чтение-модификация-запись” реализуют считывание из регистра-защелки, а не с внешнего вывода порта, что обеспечивает получение правильного значения 1.

На рис. 3.5 приведены временные диаграммы, иллюстрирующие процесс выполнения операций ввода/вывода информации через порты МК51.

Источник: https://megaobuchalka.ru/7/3095.html

Лекции – Микропроцессорная техника – файл Лекция_4.doc

Лекции – Микропроцессорная техника
скачать (4640.4 kb.)

Реклама MarketGid:
Лекция №4

Порты ввода/вывода

Микроконтроллеры серии AVR всегда имеют в своём составе от одного до семи портов ввода/вывода. Каждый разряд такого порта подсоединен к одному из выводов (контактов) микросхемы. Порты ввода/вывода служат для обмена информацией с внешними устройствами.

Порты могут быть полными и неполными. Полный порт содержит 8 разрядов. В неполных портах задействовано менее восьми разрядов. Каждый порт имеет свое имя. Они именуются латинским буквами от A до G.

Для управления каждым портом ввода/вывода используют три специальных регистров ввода/вывода (РВВ). Это регистры: PORTx, DDRx и PINx. Под «х» здесь подразумевается конкретная буква – имя порта. Например, для порта А имена регистров управления будут такими: PORTА, DDRА и PINА.

Рассмотрим теперь назначение каждого из этих регистров:

^ – регистр данных (используется для вывода информации);

DDRx – регистр направления передачи информации;

PINx – регистр ввода информации.

Отдельные разряды приведенных выше регистров также имеют свои имена.

^ обычно именуются как Pxi, где «i» – номер соответствующего разряда. К примеру разряды порта PORTА будут именоваться следующим образом: РА0, РА1, РА2 – РА7.

Разряды регистра DDRx именуются как DDXi, для порта А: DDА0, DDА1 – DDА7.

Разряды регистра PINx именуются как PINxi, для порта А: PINА0, PINА1 – PINА7.

Для других портов буква А заменяется соответственно на B, C, D, E, F, G. Упрощенная функциональная схема одного разряда порта ввода/вывода приведена на рис.___.Любой порт ввода-вывода МК серии AVR устроен таким образом, что каждый его разряд может работать как на ввод, так и на вывод информации. То есть он может быть и входом и выходом. Для переключения режимов работы служит регистр DDRx.

Каждый разряд регистра DDRx управляет своим разрядом порта. Если в каком либо разряде регистра записан ноль, то соответствующий разряд порта работает как вход. Если же в этом разряде единица, то разряд порта работает на выход.Рис.___ На рис.___ представлена более детализированная функциональная схема одного разряда порта, поясняющая основные режимы портов ввода/вывода.Рис.

__________

^

Для того, чтобы выдать нужную информацию на внешний вывод микросхемы МК, нужно в соответствующий разряд регистра DDRx записать логическую единицу, а затем записать байт данных в регистр PORTx.

При этом содержимое соответствующего бита этого байта тут же появится на внешнем выводе микросхемы и будет присутствовать там постоянно, пока не будет заменено другим, либо пока данная линия порта не переключится на ввод.

^

Для того чтобы прочитать информацию с внешнего вывода МК, необходимо сначала перевести нужный разряд порта в режим ввода. То есть записать в соответствующий разряд регистра DDRx ноль. Только после этого на данный вывод МК можно подавать цифровой сигнал от внешнего устройства. Далее МК просто читает байт из регистра PINx.

Содержимое соответствующего бита прочитанного байта будет соответствовать сигналу на внешнем выводе порта.Порты ввода/вывода МК серии AVR имеют еще одну полезную функцию. В режиме ввода информации они могут при необходимости подключать к каждому выводу порта внутренний нагрузочный резистор. Внутренний резистор позволяет значительно расширить возможности порта.

Такой резистор создает вытекающий ток для внешних устройств, подключенных между выводом порта и общим проводом. Благодаря этому резистору упрощается подключение внешних контактов и кнопок. Обычно контакты требуют внешнего резистора. Теперь внешнего резистора можно обойтись.

Включением и отключением внутренних резисторов управляет регистр PORTx, если порт находится в режиме ввода. Указанные режимы сведены в таблицу ___ (конфигурирование порта ввода/вывода).

DDxn Pxn Режим Резистор Примечание
Вход Отключен Вывод отключен от схемы
1 Вход Подключен Вывод является источником тока
1 Выход Отключен На выходе «0»
1 1 Выход Отключен На выходе «1»
y1 y2 /y1 f () /f Примечание
1 1 Резистор не подключен
1 1 1 Внутренний (подтягивающий) резистор подключен
1 1 Резистор не подключен
1 1 1 Резистор не подключен

Задание значения выходного сигнала на отдельных выводах порта выполняется с использованием команд с мнемокодами:

CBIPortX, I ; задание низкого уровня

SBIPortX, I ; задание высокого уровня.

При совместном использовании всех разрядов порта для приема и выдачи байтов используются команды с мнемокодами

INRd, PinX ; ввод байта

OUTPortX, Rd ; вывод байта.

Обращение к параллельному порту для приема и выдачи байов может быть выполнено с использованием команд с обращением по адресам в адресном пространстве SRAM:

LDRd, Y ; ввод байта

STY, Rd ; вывод байта.

При этом в качестве адресов используются номера регистров ввода/вывода, увеличенные на $20.

Например, для МК ATmeg128 адреса регистров порта А приведены в таблице:

Имя регистра PORTА DDRА PINА
Адрес $3B $3A $39

При пуске и перезапуске МК все разряды регистров PORTХ и DDRХ всех портов сбрасываются в нулевое состояние и выводы портов работают в режиме входов и находятся в высокоимпедансном (Z) состоянии. Исключение из данного правила составляют несколько МК, в которых реализованы специфические схемы для одного из портов (МК типов t15, t28, m163). Регистр PINХ не имеет аппаратной реализации, это имя используется в командах, по которым выполняется чтение байтов на выводах порта. Для управления каждым портом ввода/вывода используют три специальных регистров ввода/вывода (РВВ). Это регистры: PORTx, DDRx и . Регистр непосредственного чтения состояний линий порта PINxn доступен только для чтения, в то время, как регистры данных и управления доступны как для чтения, так и для записи. Однако в любой разряд регистра PINxn возможна запись логической единицы. При этом выполнение этой операции приведет к переключению значений разряда PORTxn (с единицы на ноль и обратно), независимо от значения разряда DDRxn. Для управления подключением всех нагрузочных резисторов МК возможно использование специального бита PUD регистра управления МК MCUCR. Если бит PUD установлен в единичное состояние, то все нагрузочные резисторы всех портов отключены. Таким образом, приведенная ранее таблица режимов работы выводов портов, должна быть дополнена состояниями, зависящими от бита PUD :

DDxn Pxn PUD Режим Резистор Примечание
Х Ввод Отключен Вывод отключен от схемы третье состояние (Z-состояние)
1 Ввод Подключен Вывод является источником тока
1 1 Ввод Отключен Вывод отключен от схемы третье состояние (Z-состояние)
1 Х Выход Отключен На выходе «0»
1 1 Х Выход Отключен На выходе «1»

^

В статическом состоянии при низком уровне выходного сигнала ток нагрузки IOL должен быть не более, чем 20 мА, при высоком уровне сигнала ток нагрузки IOН должен быть не более , чем 3 мА.

При этом суммарный ток нагрузки для всех выводов микроконтроллера должен превышать некоторое пороговое значение (200 – 400 мА для микроконтроллеров различных типов) и суммарный ток нагрузки для выводов МК, расположенных на одной стороне корпуса микросхемы, также должен быть не более заданного порогового значения (100-200 мА для МК разных типов).

Схема, изображенная на рис. ___, отражает лишь универсальную функцию портов ввода/вывода. На самом деле любой вывод кроме основных функций имеет ряд дополнительных. Поэтому реальная схема сложнее приведенной. В каждую такую схему добавляются элементы, реализующие дополнительные функции.

^

Порт А.

Порт А присутствует в ограниченном количестве МК семейства AVR (например, AT90S8515, ATmega128).

Порт А наряду с общими функциями ввода/вывода, в качестве особой функции через этот порт осуществляется управление работой мультиплексированной шины адресов и данных, если к МК подключено внешнее запоминающее устройство RAM.

На этот случай порт А оснащен внутренними подтягивающими резисторами. Схема подключения порта А в этом случае была рассмотрена ранее (при рассмотрении структуры SSRAM).

Порт В.

Порт В присутствует во всех представителях базовой серии семейства AVR. Наряду с выполнением общих функций ввода/вывода, он также выполняет и некоторые особые функции.

Занятость порта В в отношении этих альтернативных функций для разных представителей МК базовой серии семейства AVR различна и задается явным образом при описании регистра данного порта для каждого МК.

В частности этот порт часто используется для реализации последовательного интерфейса SPI, особенности функционирования которого будут рассмотрены на отдельной лекции.

Выводы порта В часто используются для организации входов аналоговых компараторов, а также тактовых входов таймеров/счетчиков.

Порт С.

Порт С присутствует в ограниченном количестве МК семейства AVR (например, AT90S4414, AT90S8515, ATmega128).

Порт С наряду с общими функциями ввода/вывода, в качестве особой функции через этот порт выполняется вывод старшего адресного байта адресной шины, в случае подключения внешней памяти RAM.

На этот случай порт С оснащен внутренними подтягивающими резисторами. Схема подключения порта С в этом случае была рассмотрена ранее (при рассмотрении структуры SRAM).

Порт D.

Порт D присутствует во всех МК семейства AVR, однако в моделях AT90S1200, AT90S2313 его ширина составляет только 7 разрядов, поскольку из-за наличия на корпусе только 20 выводов от разряда PD7 пришлось отказаться. Наряду с общими функциями ввода/вывода, порт D также выполняет некоторые особые функции. Занятость порта D в отношении этих альтернативных функций для разных представителей микроконтроллеров различна и задается явным образом при описании регистра данных порта для каждого МК. Некоторые альтернативные функции разрядов регистра PORTD: формирование стробирующих сигналов при обращении к внешней памяти RAM (/RD, /WR), тактовые входы для таймеров/счетчиков (Т1, Т0), входы для приема сигналов внешних прерываний (INT0, INT1), информационные входы (TxD, RxD) приемопередатчика UART.Рассмотрим пример использования портов ввода/вывода для управления некоторым абстрактным процессом, функциональная схема которого представлена на рис.____.Рис.____.Как видно из представленной схемы, для управления процессом задействованы 4 порта микроконтроллера: PortA, PortB – на ввод информации (ввод кодов управления процессом и кода сигнала обратной связи); PortC – на вывод информации (код сигнала управления исполнительной системой объекта управления); PortЕ – порт, младшая тетрада которого программируется на вывод и используется для формирования кода сканирования клавиатуры (рассмотрим на отдельной лекции), старшая тетрада – используется для ввода кода нажатой клавиши (рассмотрим на отдельной лекции). Листинг программы, реализующей операции ввода/вывода информации приведен в приложении.Скачать файл (4640.4 kb.)

Источник: http://gendocs.ru/v256/?cc=10

ATmega128. Порты ввода вывода

Порты ввода вывода

Введение

Все порты ввода-вывода (ПВВ) AVR-микроконтроллеров работают по принципу чтение-модификация-запись при использовании их в качестве портов универсального ввода-вывода. Это означает, что изменение направления ввода-вывода одной линии порта командами SBI и CBI будет происходит без ложных изменений направления ввода-вывода других линий порта.

Данное распространяется также и на изменение логического уровня (если линия порта настроена на вывод) или на включение/отключение подтягивающих резисторов (если линия настроена на ввод). Каждый выходной буфер имеет симметричную характеристику управления с высоким втекающим и вытекающим выходными токами.

Выходной драйвер обладает нагрузочной способностью, которая позволяет непосредственно управлять светодиодными индикаторами. Ко всем линиям портов может быть подключен индивидуальный выборочный подтягивающий к плюсу питания резистор, сопротивление которого не зависит от напряжения питания.

На всех линиях ПВВ установлены защитные диоды, которые подключены к VCC и Общему (GND), как показано на рисунке 29. Подробный перечень параметров ПВВ приведен в разделе “Электрические характеристики”.

Рисунок 29 – Эквивалентная схема линии ПВВ

Ссылки на регистры и биты регистров в данном разделе даны в общей форме. При этом, символ “x” заменяет наименование ПВВ, а символ “n” заменяет номер разряда ПВВ.

Однако при составлении программы необходимо использовать точную форму записи. Например, PORTB3, означающий разряд 3 порта B, в данном документе записывается как PORTxn.

Адреса физических регистров ввода-вывода и распределение их разрядов приведены в разделе “Описание регистров портов ввода-вывода”.

Для каждого порта ввода-вывода в памяти ввода-вывода зарезервировано три ячейки: одна под регистр данных – PORTx, другая под регистр направления данных – DDRx и третья под состояние входов порта – PINx.

Ячейка, хранящая состояние на входах портов, доступна только для чтения, а регистры данных и направления данных имеют двунаправленный доступ.

Кроме того, установка бита выключения подтягивающих резисторов PUD регистра SFIOR отключает функцию подтягивания на всех выводах всех портов.

Ниже приведено описание порта ввода-вывода для универсального цифрового ввода-вывода. Большинство выводов портов поддерживают альтернативные функции встроенных периферийных устройств микроконтроллера. Описание альтернативных функций приведено далее в подразделе “Альтернативные функции порта” (см. также описание функций соответствующих периферийных модулей).

Обратите внимание, что для некоторых портов разрешение альтернативных функций некоторых выводов делает невозможным использование других выводов для универсального цифрового ввода-вывода.

Порты в качестве универсального цифрового ввода-вывода

Все порты являются двунаправленными портами ввода-вывода с опциональными подтягивающими резисторами. Рисунок 30 иллюстрирует функциональную схему одной линии порта ввода-вывода, обозначенный как Pxn.

Рисунок 30 – Организация универсального цифрового ввода-вывода (1)

Прим. 1: Сигналы WPx, WDx, RRx, RPx и RDx являются общими в пределах одного порта. Сигналы clkI/O, SLEEP, и PUD являются общими для всех портов.

Настройка выводов

Режим и состояние для каждого вывода определяется значением соответствующих разрядов трех регистров: DDxn, PORTxn и PINxn. Как показано в “Описании регистров портов ввода-вывода” доступ к битам DDxn возможен по адресу DDRx в пространстве ввода-вывода и, соответственно, к битам PORTxn по адресу PORTx, а к битам PINxn по адресу PINx.

Биты DDxn регистра DDRx определяют направленность линии ввода-вывода. Если DDxn = 1, то Pxn конфигурируется на вывод. Если DDxn=0, то Pxn конфигурируется на ввод.

Если PORTxn = 1 при конфигурации линии порта на ввод, то разрешается подключение подтягивающего резистора. Для выключения данного резистора необходимо записать в PORTxn лог. 0 или настроить линию порта на вывод. Во время сброса все линии портов находятся в третьем (высокоимпедансном) состоянии, даже если не работает синхронизация.

Если PORTxn = 1 при конфигурации линии порта на вывод, то состояние выхода будет определяться значением PORTxn.

Поскольку одновременная запись в регистры DDRx и PORTx невозможна, то при переключении между третьим состоянием ({DDxn, PORTxn} = 0b00) и выводом лог. 1 ({DDxn, PORTxn} = 0b11) должно возникнуть промежуточное состояние или с подключенным подтягивающим резистором ({DDxn, PORTxn} = 0b01) или с выводом лог.

0 ({DDxn, PORTxn} = 0b10). Как правило, переход через состояние с подключением подтягивающего резистора эквивалентно состоянию вывода лог.1, если вывод микроконтроллера связан с высокоимпедансным входом.

В противном случае, необходимо установить бит PUD регистра SFIOR для выключения всех подтягивающих резисторов на всех портах

Переключение между вводом с подтягивающими резисторами и выводом низкого уровня связано с аналогичной проблемой. Поэтому, пользователь вынужден использовать или третье состояние ({DDxn, PORTxn} = 0b00) или вывод лог. 1 ({DDxn, PORTxn} = 0b11) в качестве промежуточного шага.

В таблице 25 подытоживается действие управляющих сигналов на состояние вывода.

Таблица 25 – Настройка вывода порта

DDxn PORTxn PUD (в SFIOR) Ввод-вывод Подтягивающий резистор Комментарий
X Ввод Нет Третье состояние (Z-состояние)
1 Ввод Да Pxn будет источником тока при подаче внешнего низкого уровня
1 1 Ввод Нет Третье состояние (Z-состояние)
1 X Вывод Нет Вывод лог. 0 (втекающий ток)
1 1 X Вывод Нет Вывод лог. 1 (вытекающий ток)

Считывание состояние вывода

Независимо от значения бита направления данных DDxn состояние вывода порта может быть опрошено через регистровый бит PINxn. Как показано на рисунке 30 регистровый бит PINxn и предшествующая ему триггерная защелка составляют синхронизатор.

Данный подход позволяет избежать метастабильности, если изменение состояния на выводе произошло около фронта внутренней синхронизации. Однако такой подход связан с возникновением задержки. На рисунке 31 представлена временная диаграмма синхронизации во время опроса внешне приложенного к выводу уровня.

Длительности минимальной и максимальной задержек на распространение сигнала обозначены как tpd,max и tpd,min, соответственно.

Рисунок 31 – Синхронизация во время опроса приложенного к выводу порта уровня

В следующих примерах показано как установить на линиях 0 и 1 порта В уровень лог. 1, а на линиях 2 и 3 – лог. 0, а также как настроить линии 4…7 на ввод с подключением подтягивающих резисторов на линиях 6 и 7.

Результирующее состояние линий считываются обратно, но, с учетом сказанного выше, включена инструкция nop для обеспечения возможности обратного считывания только что назначенного состояния некоторых выводов.

Пример кода на Ассемблере (1) … ; Разрешаем подтягивание и устанавливаем высокие выходные уровни ; Определяем направления данных линий портов ldi r16,(1

Источник: http://radio-hobby.org/modules/news/article.php?storyid=837

Проектирование МПС

Источник: http://dfe.petrsu.ru/koi/posob/projmps/strk7.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

8XC196KC/KD содержит следующие внутренние периферийные устройства, обеспечивающие специальные функции для ряда прикладных задач: – стандартные порты ввода/вывода (Standard Input/ Output Ports); – последовательный порт ввода/вывода (Serial Port); – модуль быстрого ввода/вывода (High Speed Input/ Output – HSIO); – аналого-цифровой преобразователь (Analog-to-Didital Converter – ADC); – широтно-импульсный модулятор (Pulse Width Modulator – PWM);

– сторожевой таймер (Watchdog Timer).

Периферийные устройства 8ХС196КC/KD отображаются и управляются через регистры спецфункций, доступ к которым осуществляется непосредственно или через горизонтальные окна в младшем регистровом файле.

8XC196KC/KD имеет пять 8-разрядных портов для приема и передачи данных, представленных в параллельном формате (P0, P1, P2, P3 и P4). Одни из них являются только портами ввода, другие – только портами вывода, а третьи могут использоваться как для ввода, так и для вывода данных.

Почти все разряды параллельных портов выполняют альтернативные функции. Конкретная функция порта ввода/вывода программируется в соответствующем управляющем регистре специальных функций (Special Funktion Register, SFR).

Порт 0 – только для ввода, он используется как входной для 8-канального АDC и может быть использован для чтения цифровых сигналов.

Порт 1 – квазидвунаправленный порт. Выводы порта 1 мультиплексируются с сигналами управления шиной и двумя выводами широтно-импульсного модулятора.

Порт 2 содержит 3 типа разрядов: квазидвунаправленные, ввода и вывода. Некоторые функции 8XC196KC/KD совместно используют разряды ввода и вывода порта 2.

Порты 3 и 4 – двунаправленные порты с открытым стоком, которые используются совместно как 16-разрядная внешняя шина адреса/данных.

Последовательный порт ввода/вывода – асинхронно-синхронный порт, вклю-чающий универсальные асинхронные приемник и передатчик (Universal Asynchronous Recevier and Transmitter – UART).

UART имеет 3 асинхронных режима и 1 синхронный. Порт функционально со-вместим с последовательным портом семейства MСS-51, хотя для управления портами используется различное программное обеспечение.

Асинхронные режимы полнодуплексные. Первый асинхронный стандартный 8-битовый режим используется для нормальных последовательных связей, два других 9-битовых асинхронных режима – для межпроцессорных связей.

Синхронный режим сдвигового регистра предназначен для расширения ввода/вывода через последовательный порт.

Блок быстрого ввода/вывода предназначен для приема и регистрации входных событий и формирования и выдачи выходных событий. Событием является изменение значения сигнала в какой-либо точке схемы МК. Различают единичные события (пере-ход с нулевого уровня сигнала на единичный) и нулевые события (замена единичного значения нулевым).

HSIO содержит 4 индивидуальных модуля: счетчик 1 и счетчик 2, устройство быстрого ввода (High Speed Input – HSI) и устройство быстрого вывода (High Speed Output – HSO).

В режиме ввода при приеме и регистрации входного события запоминается время появления события определенного типа на определенном входе модуля HSI.

В режиме вывода при формировании и выдаче выходного события в определенное, за-ранее заданное время на определенном выходе устройства HSO появляется событие заданного типа. Вместе эти модули формируют гибкую, основанную на “таймерах/счетчиках” систему ввода/вывода.

Счетчик 1 – счетчик свободного доступа, значение которого увеличивается че-рез каждые восемь временных состояний. Он – временная основа модуля быстрого ввода и иногда – модуля быстрого вывода.

Счетчик 2 предназначен для счета положительных и отрицательных фронтов на его входе. Он может использоваться как временная основа для модуля быстрого вывода, как счетчик или как дополнительный таймер.

Модуль быстрого ввода (HSI модуль) может записывать времена внешних событий с разрешающей способностью в 8 временных состояний. Он может контролировать четыре входа с независимо перестраиваемой конфигурацией и фиксировать значение счетчика 1, когда происходят события заданного типа.

HSI модуль может запоминать до восьми событий ввода (значения счетчика 1): семь в семиуровневом стеке FIFO и одно в выходном регистре HSI.

Модуль быстрого вывода (HSO модуль) может формировать и выдавать события в определенные времена, заданные в счетчике 1 или счетчике 2. Эти программируемые события включают старт ADC, сброс счетчика 2, генерацию до четырех программных таймеров, установку или очистку одной (или более) из шести линий вывода HSO.

HSO модуль сохраняет отложенные события и соответствующие им времена в ассоциативном запоминающем устройстве (Content-Addressable Memory – CAM). CAM может хранить до восьми строк. Каждая строка определяет время наступления и тип события, должно ли происходить прерывание и какой задействован счетчик – первый или второй.

АDC преобразовывает аналоговое напряжение входа в цифровой эквивалент. 8-канальный аналого-цифровой преобразователь может выполнять 8- и 10-битовое преобразования. Время выборки/хранения и время преобразования программируются.

Автоматизация аналого-цифрового преобразования и сохранение результата облегчаются режимом сканирования ADC сервера периферийных транзакций.

ADC может также работать как программируемый компаратор и вызывать прерывания, когда напряжение на входе превысит пороговое значение.

Могут быть осуществлены преобразования уровня аналоговой земли и опорного напряжения, результаты которых используются для вычисления коэффициента преобразования и погрешности смещения нуля.

Основные компоненты ADC – схема выборки и хранения, мультиплексор с 8 каналами и 10-битовый регистр последовательного приближения.

Широтно-импульсный модулятор предназначен для формирования и выдачи импульсной последовательности с постоянным периодом и изменяемой скважностью импульсов. МК 8XC196KC/KD имеет три модуля PWM. Период следования импульсов – 256 или 512 временных состояний – программируется.

Сторожевой таймер предназначен для перевода МК в состояние сброса при об-наружении ошибок программного обеспечения.

Сторожевой таймер – шестнадцатиразрядный счетчик, ведущий счет на сложе-ние с частотой счета Fosc/2. При переполнении счетчика формируется сигнал RESET, который переводит схему МК в состояние сброса и удерживает ее в этом состоянии в течение времени, равного 32Tosc.

Программа, выполняемая без сбоев, должна периодически сбрасывать счетчик в нулевое состояние. При сбое в ходе программы сброс сторожевого таймера своевременно не выполняется.