- •Лабораторная работа №1
- •Лабораторная работа №2
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №3
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №4
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №5
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №6
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №7
- •В программном окне «Source Code» программы Proteus набрать следующую программу:
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №9
Лабораторная работа №4
Исследование прерываний в МПС
Цель работы: Исследование прерываний микропроцессорных систем
Лабораторное задание
Разработать программу для микроконтроллера TinyAVR, обеспечивающую обработку прерываний.
Краткие теоретические сведения
Прерывание – сигнал, сообщающий процессору о наступлении какого-либо события. Прерывание прекращает нормальных ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием микроконтроллера.
Последней командой подпрограммы обработки прерывания должна быть команда RETI, которая осуществляет возврат в основную программу и восстановление предварительно сохраненного счетчика команд.
Каждому прерыванию соответствует адрес в этой таблице, который загружается в счетчик команд при возникновении прерывания. Положение вектора в таблице также определяет и приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет прерывания.
Прерывания могут осуществляться по внутренним (таймер-счетчик) или внешним сигналам.
Лабораторное задание
Использую программную среду Proteus запрограммировать работу микроконтроллера на выполнение внутреннего и внешнего прерывания.
Порядок выполнения работы
Для выполнения работы необходимо в среде автоматизированного проектирования Proteus собрать схему устройства в соответствии с рисунком 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
Путем нажатия кнопочных переключателей, убедится в работоспособности программы.
Изменить схему устройства в соответствии с рисунком 2.
Рисунок 2- Электрическая схема устройства
Запустить эмуляцию программы и убедится, что срабатывает только прерывание с наименьшим адресом.
Содержание отчета:
Название и цель работы.
Принципиальная схема устройства.
Результаты моделирования.