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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Лабораторная работа №1
Ввод-вывод данных, маскирование данных.
Цель работы изучить варианты подключения простейших устройств ввода вывода к МК АТ89S8253, способы маскирования данных.
Теоретическое введение
Порты ввода/вывода. Для подключения периферии МК имеет 4 8битных двунаправленных порта ввода/вывода, подключенных к внешним индикаторам и кнопкам как показано на рисунках 1 и 2.
Рисунок 1 схема подключения индикаторов-светодиодов
Рисунок 2 схема подключения кнопок.
В данном МК нет регистра специального назначения, определяющего направление передачи информации, поэтому, направление определяется по сигналу записи, поступающему на фиксатор-защелку (см пример на Рис.3).
Рисунок 3. Схема электрическая порта 0 МК.
Порт Р0 не имеет внутренних подтягивающих резисторов. Транзистор N1 в выходном каскаде выводов порта Р0 открыт только тогда когда через эти выводы выдается «1» при обращениях к внешней памяти. Во всех других режимах работы транзистор N1 заперт. Таким образом, при использования Р0 в качестве выходного порта общего назначения, на его выводы устанавливают внешние подтягивающие резисторы для задания уровня «1». Запись «1» в защелку вывода порта Р0 закрывает транзистор N и при отсутствии внешнего подтягивающего резистора переводит выводы порта в высокоимпедансное состояние и они могут использоваться как входные. Каждый из выводов порта может работать независимо от других.
Все разряды фиксаторов-защелок (D-триггеров) портов Р0-Р3 по сбросу устанавливаются в «1». Если защелка вывода порта содержит «0», порт работает как выходной, если «1», то как входной.
Через Р0:
Ниже, на рисунках 4-6 приведены принципиальные схемы портов ввода/вывода микросхем серии МК51, построенных по n-МОП технологии. Микросхемы, построенные по КМОП-технологии (AT89S8253) отличаются от них только выходным каскадом (типом выходных транзисторов и способами их подключения), управляющая логика не меняется.
Порт Р1- двунаправленный TTL-совместимый порт ввода/вывода. Р1, как и порты Р2, Р3 имеет внутренние подтягивающие резисторы, подключенные к цепи питания и выполненные в виде транзисторов N2 (рисунки 4-6).
Рисунок 4. Электрическая схема порта Р1
Использование выходных каскадов позволяет снизить время переключения из состояния «0» в состояние «1» (за счет использования N1), увеличить выходной ток и снизить шумы. На рисунке 4 транзисторы N1 и N2 подключены к источнику питания, а N к общей шине.
Через Р1 задается младший байт адреса при программировании внутреннего ЭСППЗУ и при чтении внутренней памяти программ.
Порт Р2. Через этот порт:
Рисунок 5. Электрическая схема порта Р2.
Порт Р3. Каждая линия Р3 кроме универсального назначения (линий ввода/вывода) имеет альтернативную функцию (см таблицу описания МК). Альтернативная функция реализуется, если в соответствующем этой линии разряде фиксатора-защелки записана «1» (см рисунок 6).
Рисунок 6. Электрическая схема порта Р3
Чтение и запись информации
Чтение данных организуется 2 типами команд: командами, считывающими информацию с выходов защелок и командами, считывающими информацию с внешних контактов выводов порта. Команды, считывающие информацию с выходов защелок, реализуют режим «чтение-модификация-запись», заключающийся в том, что команда считывает состояние защелки, если нужно, изменяет его и записывает результат обратно в защелку. Чтение состояния порта с выхода защелки позволяет исключить неправильную интерпретацию уровня напряжения на выводе порта. Например, если порт используется для управления базой n-p-n транзистора и в защелке записана «1» транзистор открывается. Если после того как транзистор откроется МК прочитает состояние внешнего контакта, то получит «0», так как это напряжение базы открытого транзистора. Если же считать состояние вывода из защелки, то получим правильный результат «1».
Команды, работающие в режиме «чтение-модификация-запись»:
ANL |
Логическое И |
ORL |
Логическое ИЛИ |
XRL |
Исключающее ИЛИ |
CLR |
Очистка аккумулятора или бита |
CPL |
Инверсия аккумулятора или бита |
JBC |
Переход, если бит установлен и очистка этого бита |
INC |
Инкремент |
DEC |
Декремент |
DJNZ |
Декремент и переход, если не равно нулю |
MOV |
Пересылка |
SETB |
Установка бита |
Запись данных. При записи данных новое значение записывается в защелку в последней фазе машинного цикла команды. Однако, новое содержимое выводится на выходной контакт порта только в начальной фазе следующего машинного цикла
Маскирование данных.
Очень часто при написании программы требуется маскировать данные (накладывать маску). Маска управляющий код, разрешающий/запрещающий отдельные разряды основного кода. Таким образом, маскирование изменение некоторых разрядов (битов) числа.
Наиболее часто маскирование организуют с помощью следующих операций:
Пример маскирования чисел приведен в таблице 1:
Таблица 1
Операция (в 16-м коде) |
Число (двоичный код) |
Маска (двоичный код) |
Результат маскирования |
комментарий |
0x3A & 0xAC |
00111010 |
10101100 |
00101000 |
Логическое умножение байтов |
0x3A | 0xAC |
00111010 |
10101100 |
10111110 |
Логическое сложение байтов |
0x3A ^ 0xAC |
00111010 |
10101100 |
10010110 |
Логическое «исключающее ИЛИ» |
Проведение таких операций возможно как с содержимым аккумулятора и внутренними регистрами МК. В приведенной ниже программе дан пример маскирования отдельных битов.
Программирование портов МК
Для работы с кнопками порт должен быть сконфигурирован как входной.
Если проект работает с кнопками (то есть использует библиотеку кнопок), должна быть определена внешняя переменная Button_Pin:
extern sbit Button_Pin;
В проекте используется функция Button, имеющая 2 параметра.Она описана в библиотеке Button, которую нужно подключить к проекту см. «Работа с менеджером проектов».
unsigned short Button (unsigned short time, unsigned short active_state)
параметр time определяет время в миллисекундах;
параметр active_state определяет какое состояние считать активным: лог. «1» или «0».
Функция Button возвращает два значения:
255- если вывод находится в активном состоянии,
0 если в неактивном состоянии.
Пример объявления переменной в программе:
sbit Button_Pin at P0_0;
приведенная ниже программа демонстрирует использование кнопки 0 порта 3 - P3.0. Программа все время отслеживает состояние кнопки P3.0, при нажатии (подаче 0) на портах Р1, Р2 и Р0 наблюдается одно состояние, если же кнопка не нажата, то другое. Причем, на порты Р1 и Р0 выводятся простые числа, а на порт Р2 маскированное число.
sbit Button_Pin at P3.B0; //объявление Button_Pin по порту 0, разряду 0.
void main()
{
P3 = 255; // Р3 сконфигурирован как входной все выключено
do
{
if (Button(1, 1)) //если не нажата кнопка Р0.0
{P1 = 0x00; // на выходе Р1 записано число "0", вывод простой
P0 = 0xaa; // на выходе Р0 записано число "аа", вывод простой
P2=P0 | 0x10; // на выходе Р2 записано число "аа" с маской 0х10 по ИЛИ
}
if (Button(1, 0)) // если нажата кнопка Р0.0 (есть переход из 1 в 0)
{P1 = 0xF0; //режим «запись»
P0 = 0xff;
P2=P2&0x10; //режим «чтение-модификация-запись»
}
} while(1); // конец цикла
}
Порядок выполнения работы
1 Изучить теоретическое введение, описание МК: карты памяти МК АТ89S8253, схем электрических принципиальных портов ввода/вывода, электрическую схему подключения портов ввода/вывода лабораторного стенда. Изучить порядок работы со стендом.
2 Перевести заданные числа из десятичного кода в 16-ричный и двоичный код.
3.1 В соответствии с вариантом задания изменить программный код: при нажатии кнопки вывести на индикаторы байт числа (режим простого вывода) и один байт с маской, если кнопка не нажата, выводить байт с двумя другими масками, причем на одном из портов (любом) организовать режим «чтение-модификация-запись».
4 Установить джампер J6 в положение GND, а резисторы Порт 0-Порт3 в положение «pull-up».
5 Аналогично таблиц 1 преобразовать заданное число с помощью 3-х масок: &, |, и ^. Записать результаты преобразования в таблицу. Вывести на указанный порт заданное число (с тремя масками). Результат наблюдать на светодиодах лабораторного стенда.
Варианты задания
№ вар-а |
Простой ввод/вывод |
Маска (для маскированного вывода) |
Входной порт |
Выходные порты |
1 |
71 |
100 |
Р3 |
Р1, Р2 |
2 |
12 |
70 |
Р1 |
Р3, Р0 |
3 |
145 |
45 |
Р0 |
Р1, Р2 |
4 |
69 |
13 |
Р2 |
Р3, Р1 |
5 |
107 |
43 |
Р3 |
Р1, Р2 |
6 |
204 |
90 |
Р0 |
Р3, Р1 |
7 |
117 |
89 |
Р2 |
Р1, Р3 |
8 |
129 |
41 |
Р1 |
Р3, Р0 |
9 |
51 |
94 |
Р3 |
Р1, Р2 |
Содержание отчета
1 Схема подключения портов ввода/вывода и индикаторов портов.
2 Таблица с результатами преобразования (маскирования) данных,
3 Программный код для каждого типа вывода.
4 Результаты работы программы.
Вопросы для защиты
1 Каковы особенности порта 0 МК?
2 Каковы особенности порта 1 МК?
3 Каковы особенности порта 2 МК?
4 Каковы особенности порта 3 МК?
5 Что такое маскирование данных, назначение маскирования?
6 Что такое «подтягивающие» резисторы, каково их назначение?
7 Зачем порты содержат фиксаторы-защелки?
8 Какие особенности режимов чтения данных у МК серии 51?
9 Какие команды работают в режиме «чтение-модификация-запись»?