- •Однокристальный миКрОконтроллер к1816ве51 методические указания
- •Введение
- •Контрольные вопросы
- •Домашнее задание к выполнению лабораторной работы №2
- •Лабораторная работа №2 система внешних прерываний
- •Краткие теоретические сведения
- •Задания на лабораторную работу
- •Контрольные вопросы
- •Краткие теоретические сведения к заданию 2
- •Краткие теоретические сведения к заданию 3
- •Контрольные вопросы
- •Регистр режима работы таймера/счетчика
- •Регистр управления/статуса таймера
- •Регистр управления/статуса уапп
- •Регистр управления мощностью рум
- •Настройка таймера 1 для управления частотой работы уапп
- •Регистр масок прерывания (рмп)
- •Регистр приоритетов прерывания
- •Библиографический список
- •Содержание
- •Однокристальный миКрОконтроллер к1816ве51 методические указания
- •394026 Воронеж, Московский просп., 14
Контрольные вопросы
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Р() – имя обработчика прерывания, а в квадратных скобках указывается вектор прерывания.
