Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_ВЕ51_6ЛЕТ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.48 Mб
Скачать

Контрольные вопросы

1. Сколько портов ввода/вывода содержит МК ВЕ51?

2. Какое специальное назначение имеют порт Р0 и порт Р2 МК ВЕ51?

3. Каково функциональное назначение порта Р3?

4. Как обратиться к разряду порта на языке СИ51?

5. Как вывести число в порт МК ВЕ51?

6. Какие операции можно осуществлять над содержимым портов ввода/вывода ВЕ51?

7. Где реализованы порты ввода/вывода ВЕ51?

8. Что такое «принцип наложения сред» и с какой целью он используется в архитектуре однокристальных контроллеров?

Домашнее задание к выполнению лабораторной работы №2

1. Составьте отчет по результатам выполнения лабораторной работы №1. Отчет должен содержать функциональные схемы разработанных МПС и соответствующие программные модули согласно заданиям 1, 2.

2. Проанализируйте структуру МПС, представленную на рис. 5. Спроектируйте МПС в соответствии с вариантом за и напишите программу, обеспечивающую:

Рис. 5. Схема подключения к ВЕ51 восьмисегментных

индикаторов и тумблерного регистра

- ввод восьмибитного двоичного кода с тумблерного регистра;

- преобразование его в двоично-десятичное представление;

- выдачу двоично-десятичного кода на восьмисегментные индикаторы.

Варианты заданий:

а) подключить восьмисегментные индикаторы и тумблерный регистр через буферные регистры по общей ШД – порт Р0, управляющие сигналы – порт Р1;

б) подключить восьмисегментные индикаторы и тумберный регистр через буферные регистры по общей ШД – порт Р0, управляющие сигналы – порт Р2;

в) подключить восьмисегментные индикаторы и тумберный регистр через буферные регистры по общей ШД – порт Р1, управляющие сигналы – порт Р0;

г) подключить восьмисегментные индикаторы и тумберный регистр через буферные регистры по общей ШД – порт Р1, управляющие сигналы – порт Р2;

д) подключить восьмисегментные индикаторы и тумберный регистр через буферные регистры по общей ШД – порт Р2, управляющие сигналы – порт Р0;

е) подключить восьмисегментные индикаторы и тумберный регистр через буферные регистры по общей ШД – порт Р2, управляющие сигналы – порт Р1.

3. Изучите подсистему внешних прерываний ВЕ51.

Лабораторная работа №2 система внешних прерываний

МК ВЕ51

Цель работы: изучение основ организации и программирования подсистемы внешних прерываний в МПС на базе однокристальных микроконтроллеров.

Краткие теоретические сведения

Внешние прерывания инициируются сигналами на входах INT0 (вывод Р3.2) и INT1 (вывод Р3.3). Микроконтроллер реагирует на прерывание, если установлен соответствующий флаг в регистре TCON (IE0 или IE1) (TCON образовано от слов Timer Control, IE – Interrupt Enable). Флаг ЕА (Enable interrupt) разрешает работу всех прерываний, для каждого из которых установлен бит в TCON. Прерывания INT0 и INT1 (от слова interrupt) могут быть вызваны уровнем или переходом сигнала из 1 в 0 на входах микроконтроллера. Тип прерывания определяют управляющие биты IT0, IT1 (interrupt type) в регистре TCON. Если один из этих битов ITi (i=0,1) установлен, то прерывание вызывается по перепаду 1-0 на соответствующем входе INTi (i=0,1) микроконтроллера. Если биты ITi (i=0,1) сброшены, то прерывание вызывается при наличии низкого уровня на соответствующем входе. Когда все рассмотренные выше биты (ITi, IЕi, (i=0,1), ЕА) установлены соответствующим образом, то при возникновении прерывания инициируется вызов соответствующей программы–обработчика прерывания. Сброс флага IЕi, (i=0,1), выполняется автоматически в случае, если прерывание вызвано перепадом сигнала на входе INTi (i=0,1). Если же вход прерывания INTi (i=0,1) настроен на срабатывание по низкому уровню, то состояние IЕi, (i=0,1) должна отслеживать программа-обработчик данного прерывания.

Внешние прерывания INT0 и INT1 могут (если разрешены) вызываться либо установкой низкого уровня на соответствующем выводе микроконтроллера (на реальном объекте), либо программной установкой битов Р3.2 и/или Р3.3 (в среде моделирования микроконтроллера).

Вектора внешних прерываний следующие: 0х03Н –INT0, 0x13Н – INT1. Другими словами, если прерывание происходит по INT0 (INT1), то адрес программы-обработчика прерывания содержится по адресу 0х03Н (0х13Н). Запись адресов происходит на этапе работы редактора связей (линкёра).

Разработаем структуру МПС и напишем программный модуль, обеспечивающий изменение состояния светодиода по запросу от специальной кнопки. Функциональная схема МПС представлена на рис. 6. К выводу P3.2 (INT0) подключена кнопка. Для подавления дребезга использован RS-триггер. По нажатию кнопки на вывод Р3.2 подается сигнал низкого уровня, что приводит к вызову программы -обработчика прерывания.

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

#include <REG51.H>

sbit s=P0^1;

sbit I=P3^2;

Рис.6. Функциональная схема подключения к ВЕ51 кнопки и светодиода

void PP() interrupt 0

{

//моделирование отжатой кнопки

I=1;

//запрещение прерываний

//(команда необязательная –

//по усмотрению разработчика программы)

EA=0;

//изменение состояния светодиода

s=~s;

//снятие блокировки прерывания;

//обязательно, если присутствует EA=0;

EA=1;

}

main()

{

EA=1;//снятие блокировки прерывания

EX0=1;//разрешение внешнего прерывания

IT0=1;//тип прерывания – пр срезу

for(;;);//бесконечный цикл

}

Ключевое слово interrupt используется для объявления функции, с которой оно применяется, как обработчика прерывания. В среде KeilµVision после слова interrupt пишется приоритет прерывания в соответствии в табл. 3. Микроконтроллер ВЕ51 позволяет использовать 5 типов прерываний (два внешних прерывания, два прерывания таймеров и прерывание последовательного порта). В табл. 3 приведены перечень прерываний, их вектора и приоритеты.

Таблица 3

Вектора и преоритеты прерываний

Приоритет прерывания

Описание

Вектор прерывания

0

Внешнее прерывание INT0

0х003

1

Прерывание таймера 0

0х00B

2

Внешнее прерывание INT1

0х013

3

Прерывание таймера 1

0х01B

4

Прерывание последовательного порта

0х023

В других средах, например, при использовании компилятора ICC8051, обработчик прерываний описывается следующим образом:

void PР() interrupt [0x003]

{}

PР() – имя обработчика прерывания, а в квадратных скобках указывается вектор прерывания.