Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





 

Внешние прерывания инициируются сигналами на входах 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

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

Приоритет прерывания Описание Вектор прерывания
  Внешнее прерывание INT0 0х003
  Прерывание таймера 0 0х00B
  Внешнее прерывание INT1 0х013
  Прерывание таймера 1 0х01B
  Прерывание последовательного порта 0х023

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

 

void PР() interrupt [0x003]

{}

 

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

 

Date: 2016-07-25; view: 269; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию