Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы МДК 02.01 МКС / Методичка МДК 02.01 МКС.doc
Скачиваний:
4
Добавлен:
18.11.2023
Размер:
658.43 Кб
Скачать

Лабораторная работа №4

Исследование прерываний в МПС

Цель работы: Исследование прерываний микропроцессорных систем

Лабораторное задание

Разработать программу для микроконтроллера TinyAVR, обеспечивающую обработку прерываний.

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

Прерывание – сигнал, сообщающий процессору о наступлении какого-либо события. Прерывание прекращает нормальных ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием микроконтроллера.

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

Каждому прерыванию соответствует адрес в этой таблице, который загружается в счетчик команд при возникновении прерывания. Положение вектора в таблице также определяет и приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет прерывания.

Прерывания могут осуществляться по внутренним (таймер-счетчик) или внешним сигналам.

Лабораторное задание

Использую программную среду Proteus запрограммировать работу микроконтроллера на выполнение внутреннего и внешнего прерывания.

Порядок выполнения работы

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

Рисунок 1 – Электрическая схема устройства

  1. В программном окне «Source Code» программы Proteus набрать следующую программу:

.device ATtiny2313

.def temp=r16

.equ PERIOD_1 = 0

.cseg

.org 0

rjmp Init

.org 0x0005

rjmp TIM1_OVF ;Timer1 Overflow Handler

Init:

ldi temp,low(RAMEND)

out SPL,temp

clr temp

out DDRD,temp

ldi temp,255

out PORTD,temp

ser temp ;команда устанавливает все биты temp в «1»

out DDRB,temp ;переводит все биты потра B на вывод

clr temp ; обнуляет переменную temp

out PortB,temp ; команда отключает подтягивающие резисторы

SW:

ldi temp,0b11001100 ;команда записывает в temp значание 0b11001100

out PortB,temp ;в порт B записывается значение temp

ldi temp, (0<<WDIE | 1<<WDTON | 1<<WDE)

out WDTCR,temp

ldi temp, (0<<WDIE | 1<<WDTON | 0<<WDE)

out WDTCR,temp

WAIT_SW0:

sbic PIND,PERIOD_1

rjmp WAIT_SW1

ser temp

out PortB,temp

ldi temp, (1<<WDTON | 0<<WDIE | 1<<WDE | 1<<WDP3 | 0<<WDP2 | 0<<WDP1 | 1<<WDP0);включение таймера

out WDTCR,temp

ret

WAIT_SW1:

sbic PIND,3

rjmp WAIT_SW0

ldi temp,(0<<ISC11 | 0<<ISC10)

out MCUCR,temp

ldi temp,0b00010001

out PortB,temp

TIM1_OVF:

ldi temp,0b00000101

out TCCR1B,temp

ldi temp,0b00000100

out TIMSK,temp

out TIFR,temp

ldi temp,0xaa

out TCNT1H,temp; отправляем в старший регистр

out TCNT1L,temp; отправляем в младший регистр

sei

ret

  1. Путем нажатия кнопочных переключателей, убедится в работоспособности программы.

  2. Изменить схему устройства в соответствии с рисунком 2.

Рисунок 2- Электрическая схема устройства

  1. Запустить эмуляцию программы и убедится, что срабатывает только прерывание с наименьшим адресом.

Содержание отчета:

  1. Название и цель работы.

  2. Принципиальная схема устройства.

  3. Результаты моделирования.

Соседние файлы в папке Лабы МДК 02.01 МКС