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