Laby_MP / Отчет_№7_(ввод-вывод)
.docМИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГОУ ВПО «Чувашский государственный университет
имени И. Н. Ульянова»
Факультет энергетики и электротехники
Кафедра электрических и электронных аппаратов
Лабораторная работа №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.
|
Программа
$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 {конец}