Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Laby_MP / Отчет_№7_(ввод-вывод)

.doc
Скачиваний:
15
Добавлен:
06.02.2015
Размер:
49.15 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГОУ ВПО «Чувашский государственный университет

имени И. Н. Ульянова»

Факультет энергетики и электротехники

Кафедра электрических и электронных аппаратов

Лабораторная работа №7

Ввод-вывод дискретных данных

Вариант 2

Выполнили студенты

гр. ЭТ-21-10

Гаврилов А.Ю.

Шоглев Р.Г.

Проверил:

Никифоров И.К.

Чебоксары 2014

Лабораторная работа 7

Ввод-вывод дискретных данных

Цель работы: Исследование методов параллельного ввода-вывода дискретной информации микроконтроллера ADuC812.

Задание: написать программу, выполняющую ввод байта данных из заданного порта, проверку битов этого байта на наличие сигналов “0” или “1” и вывод мигающих битов через другой порт с заданной выдержкой времени. для МК ADuC812 согласно варианту, указанный в таблице 1.

Общие сведения

Микроконтроллер ADuC812 содержит четыре параллельных порта ввода-вывода данных Р0-Р3. На плате эмулятора порт Р1используется для ввода аналоговых сигналов, к портам Р0,Р2 и Р3 подключены светодиоды и линии этих портов выведены на разъемы, что позволяет подключать к плате внешние устройства.

К линиям Р3.2-Р3.5 порта Р3 подключены кнопки КТ1-КТ4 (обозначенные на плате как Int0, Tmr0, Int1, Tmr1) для имитации подачи сигналов прерывания INT0, T0, INT1 и T1 соответственно. Для активации сигналов прерывания нужно замкнуть перемычки J3-J6 и нажать соответствующую кнопку, при этом на вход ПРВ подается сигнал «0». В данной работе эти входы используются не как входы сигналов ПРВ, а как входы дискретных сигналов порта Р3.

Вводимые и выводимые данные всех портов отображаются в окне Ports как побайтно, так и побитно.

Таблица 1.

Вариант

2

Порт ввода

Р3

Порт вывода

Р2

Проверять биты порта ввода на значение

“1” на “0”

“2” на “1”

Мигающие биты порта вывода

1, 3, 5

Выдержка времени ПП Delay, мс

200

Программа

$MOD812 {присоединение модуля ADuС812}

LED1 EQU P2.1 {биту P2.1 присваиваем имя LED1}

LED3 EQU P2.3 {биту P2.3 присваиваем имя LED3}

LED5 EQU P2.5 {биту P2.5 присваиваем имя LED5}

ORG 0000H {начальный адрес программы}

MOV P2,#00 {обнуляем порт P2}

CIKL1:

MOV 20H,P3 {перемещаем значение P2 в ячейку 20Н}

MOV C,00H {перемещаем содержимое 00H в C}

ANL C,1 {операция лог. умножения С на 1}

JC CIKL1 {переход по СIKL1, если С=1}

MOV 20H,P3 {перемещаем значение P3 в ячейку 20H}

MOV C,01H { перемещаем содержимое 01H в C }

ANL C,1 { операция лог. умножения С на 1}

JNC CIKL1 { переход по СIKL1, если С=0}

CIKL2:

LCALL DELAY {вызов подпрограммы DELAY}

CPL LED1 {переключить светодиод LED1}

CPL LED3 {переключить светодиод LED3}

CPL LED5 {переключить светодиод LED5}

LJMP CIKL1 {переход к циклу}

DELAY: MOV R7,#200 {перемещаем const 200 в R7}

DLY1: MOV R6,#230 {перемещаем const 230 в R6}

DJNZ R6,$ {230*2,17 мкс=500мкс}

DJNZ R7,DLY1 {200*500 мкс=100мс}

RET

END {конец}