Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроц техника / 4 курс_МТ_МСУД / Лаб.раб 1 порты ввода вывода печать.doc
Скачиваний:
19
Добавлен:
10.02.2015
Размер:
1.19 Mб
Скачать

Программирование портов мк

Для работы с кнопками порт должен быть сконфигурирован как входной.

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