У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 1 Вводвывод данных маскирование данных.

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

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

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

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.4.2025

Лабораторная работа №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:

  •  выводится младший байт адреса А0…А7 при работе с внешней памятью,
  •  выдается и принимается байт данных,
  •  задаются данные при программировании внутреннего ЭСППЗУ и читается содержимое внутренней памяти программ.

Ниже, на рисунках 4-6 приведены принципиальные схемы портов ввода/вывода микросхем серии МК51, построенных по n-МОП технологии. Микросхемы, построенные по КМОП-технологии (AT89S8253) отличаются от них только выходным каскадом (типом выходных транзисторов и  способами их подключения),  управляющая логика не меняется.

Порт Р1- двунаправленный TTL-совместимый порт ввода/вывода. Р1, как и порты Р2, Р3 имеет внутренние подтягивающие резисторы, подключенные к цепи питания и выполненные в виде транзисторов N2 (рисунки 4-6). 

Рисунок 4. Электрическая схема порта Р1

Использование выходных каскадов позволяет снизить время переключения из состояния «0» в состояние «1» (за счет  использования N1), увеличить выходной ток и снизить шумы. На рисунке 4 транзисторы N1 и N2 подключены к источнику питания, а N к общей шине.

Через Р1 задается младший байт адреса при программировании внутреннего ЭСППЗУ и при чтении внутренней памяти программ.

Порт Р2. Через этот порт:

  •  выводится старший байт адреса А8-А15 при работе с внешней памятью программ и внешней памятью данных,
  •  задается старший байт (А8-А14) адреса при программировании внутреннего ЭСППЗУ и при чтении внутренней памяти программ.

Рисунок 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.  логическое «И» - умножение числа (в аккумуляторе) и маски. Очищает бит числа, если в соответствующем бите маски будет записан «0», и не изменяет его, если в бите маски записана «1». Обнуляет отдельные биты числа;
  2.  логическое «ИЛИ» - сложение числа (в аккумуляторе) и маски. Устанавливает бит числа в «1», если в таком же бите  маски будет записана «1», не изменяет его, если в этом юите – «0». Применяется для установки  отдельные битов в «1»;
  3.  Логическое «исключающее ИЛИ» числа (в аккумуляторе) и маски. Инвертирует содержание бита числа, если в соответствующем бите маски записана «1» и не изменяет его, если в этом бите - «0».

Пример маскирования чисел приведен в таблице 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 Какие команды работают в режиме «чтение-модификация-запись»?




1. варіантів міжнародного обміну товарами без посередництва грошей світова торгівля еволюціонувала до станов
2. і. Бір с~ра~ мазалайды мені к~ндіз ж~не т~нде- Б~л ~мірге келген ма~сатым мені~ неде Ма~сатым нені к~зде.html
3. тематикаКонтрольная работа по тему Дифференциальные уравнения
4. Игтисадиййат маркетинг вя менеъмент кафедрасыны мцдири Протокол 02 11
5. ~а~тарынан енгізілген жанама салы~тарды~ ішіндегі е~ ма~ыздысы ~осыл~ан ~~н салы~ы 1994 жылы жасалып шы~а.html
6. вариант ответа. Заранее признательны Вам за помощь Насколько Вы информированы о наличии благотворительн
7. Право
8. культура и цивилизация Понятия культура и цивилизация имеют разный исторический масштаб- культу
9. Задание Введение Назначение химический состав и свойства стали 1 2 3
10. правового договора правовая природа функции