Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPSU_laboratornye.doc
Скачиваний:
73
Добавлен:
11.05.2015
Размер:
1.26 Mб
Скачать

Лабораторная работа №3.Организация ввода/вывода информации. Механизм прерываний

Цель работыизучить основные приёмы, используемые при организации обмена данными через порты ввода/вывода (I/O).

Краткие теоретические сведения

Порты I/Oотносятся к периферии МК и являются средством его общения с внешними устройствами. Каждый порт имеет три регистра:

DDRx, PINx, PORTx. Где “x” имя порта (A,B,C,Dи т.д.), количество которых различается, в зависимости от модели контроллера.

  • DDRxопределяет направление передачи данных порта на ввод либо вывод. Запись 0x00 настраивает порт на ввод данных. Например, запись в регистрDDRAзначения 0b11111100, настроит нулевую и первую линии порта А на режим ввода, а остальные на вывод.

  • PINx – регистр, в который читается состояние логических уровней на выводах контроллера.

  • PORTx– регистр, из которого данные попадают на соответствующие выводы контроллера при выводе.

Вывод данных из контроллера производится командой OUT, а ввод –командойIN(например,in r16, PinA, илиout PortB, r16). При этом соответствующие выводы предварительно должны быть настроены на ввод либо на вывод данных.

Для непосредственной работы с линиями портов ввода/вывода удобно пользоваться командами SBI,CBIиSBIS,SBIC. Первая устанавливает указанный бит в порту, а вторая сбрасывает. Например:

cbi PortA,7 ; обнулить 7й бит в регистре ввода-вывода PortA

sbi PortB,6 ; выставить 6й бит в регистре ввода-вывода PortB

SBIC проверяет состояние разряда регистра ввода/вывода. Если разряд сброшен, команда, следующая за sbic Address,bitпропускается. SBISнаоборот, пропускает команду, следующую заsbis Address,bitесли разряд установлен. Следует помнить, что эти команды актуальны только в пределах пространства регистровI/O.

Задание на лабораторную работу

Задача 3.1.Написать программу, обеспечивающую отображение состоянияi-го иj-го битов операнда на линиях порта Biиjсоответственно. Адрес операнда 02** в памяти данных. Собрать модель схемы в Proteus и подключить к выводам порта Biиjсветодиоды, отображающие состояние операнда. Программу проверить для операндов FF, 0F, F0, 00.

Задача 3.2.Написать программу, обеспечивающую отображение состояния клавиши, подключенной к линииiпорта B, с помощью светодиода, подключенного к линииjпортаD(нажато – горит, отжато – не горит). Промоделировать работу схемы в Proteus.

Задача 3.3.Написать программу, обеспечивающую подсчёт нажатий на клавишу, подключенную к линииiпорта B. Отобразить десятичный эквивалент количества нажатий на двух семисегментных индикаторах, подключенных к порту D. Сброс в 0 клавишей на линииjпорта B. При достижении значения счётчика 99 значение больше не увеличивать. Промоделировать работу схемы в Proteus.

Задача 3.4.Написать программу, обеспечивающую увеличение либо уменьшение десятичного счётчика в зависимости от нажатия клавиш “+” или “-“, подключенных к линиямiиjпортаD. Отобразить десятичное значение на двух семисегментных индикаторах, подключенных к портуB. При опросе клавиш задействовать механизм внешнего прерывания. Сброс в 0 клавишей на линииkпортаD. При достижении значения счётчика 99 значение больше не увеличивать, а также не уменьшать менее 0. Промоделировать работу схемы в Proteus.

Задача 3.5.Написать программу, обеспечивающую работу энкодера, подключенного к выводам портаDiиj. Отобразить десятичный эквивалент поворота ручки энкодера на двух семисегментных индикаторах, подключенных к портуB. При опросе энкодера задействовать механизм внешнего прерывания. Сброс в 0 клавишей на линииkпортаD. При достижении значения счётчика 99 значение больше не увеличивать, а также не уменьшать менее 0. Промоделировать работу схемы в Proteus.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]