МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Звіт до лабораторної роботи №1
з курсу «МІКРОПРОЦЕСОРНІ ПРИСТРОЇ»
ЗНАЙОМСТВО З ІНТЕГРОВАНИМ СЕРЕДОВИЩЕМ РОЗРОБКИ AVR STUDIO ТА ПРОГРАМОЮ СИМУЛЯЦІЇ PROTEUS. НАПИСАННЯ ТА ВІДЛАДКА ПРОСТИХ ПРОГРАМ ДЛЯ AVR- МІКРОКОНТРОЛЕРІВ
Львів – 2010
Мета роботи: ознайомитись з послідовністю створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмі AVR Studio та Proteus 7.
Завдання
1. Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2. В режимі покрокової відладки переконатися в правильності роботи програми, перевірити дотримання заданих в завданні часових параметрів.
3. Відкрити файл LR_1.dsn в програмі Proteus, внести зміну у схему відповідно до свого індивідуального завдання, підключити до МК отриманий AVR Studio hex- файл.
Кіл-сть охорон. шлейфів з НРЗ давачами
Кіл-сть охорон. шлейфів з НЗМ давачами
Виводи для підкл. охорон. шлейфів з НРЗ давачами
Виводи для підкл. охорон. шлейфів з НЗМ давачами
Період опиту-вання шлейфів T_Scan, с
Час постано-вки та зняття з охорони T_Alarm, с
Частота імпульсів сирени та світло- діода F_Blick,c
Вивід для підкл.
світло-
діода
Вивід для підкл. сирени
1
1
PB7
PD6
0,005
3
320
PD3
PD0
4. Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи. У випадку виявлення відхилень в роботі внести потрібні виправлення.
Лістинг програми отриманої в AVR Studio
.include <2313def.inc>
.def temp = r16
.def d_mask = r17
.def b_mask = r18
.def Delay1=r20
.def Delay2=r21
.def Delay3=r22
.equ T_Scan=3997 ; T_scan time 0.005 s
.equ T_Alarm=2399997 ; T_Alarm time 3 s
.equ T_Blick=2497 ; T_Blick time 1/320
.cseg
.org 0
ldi r16, 0xdf
out spl, r16 ;Ініціалізація стеку
rcall InitIO ;ініціалізація вводів/виводів
;Чекаємо доки ввімкнуть кнопку сигналізації
check_turn_on:
in temp, PIND
bst temp, 1
brts check_turn_on
; Перед постановкою на охорону необхідно почекати 3 сек
ldi Delay1, low(T_Alarm) ; виставляємо час очікуваня
ldi Delay2, high(T_Alarm)
ldi Delay3, byte3(T_Alarm)
rcall Delay
; Вмикаємо світлодіод
cbi PORTD, 3
ldi d_mask, 0b01000000
ldi b_mask, 0b10000000
; Опитуємо давачі
check_davach:
in temp, PINB
eor temp, b_mask
brne Alarm
in temp, PIND
and temp, d_mask
brne Alarm
in temp, PIND ;перевіряємо чи сигналізація ввімкнена
bst temp, 1
brts check_turn_on ;якщо перемикач вимкнено переходимо на початак ;затримка T_Scan
ldi Delay1, low(T_Scan)
ldi Delay2, high(T_Scan)
ldi Delay3, byte3(T_Scan)
rcall Delay
rjmp check_davach
; один з давачів спрацював
Alarm:
; очікуємо вимкнення сигналізації
ldi Delay1, low(T_Alarm)
ldi Delay2, high(T_Alarm)
ldi Delay3, byte3(T_Alarm)
rcall Delay
; перевіряємо чи її вимкнено
in temp, PIND
bst temp, 1
brtc Blick_Alarm ;якщо не вимкнено ввімкнути сирену
;вимикаємо світлодіод
sbi PORTD, 3
rjmp check_turn_on
Blick_Alarm:
; змінюємо стан світлодіода
sbic PIND, 3 ; if cleared skip next
cbi PORTD, 3
sbis PIND, 3 ; if set skip next
sbi PORTD, 3
; змінюємо стан сирени
sbic PIND, 0 ; if cleared skip next
cbi PORTD, 0
sbis PIND, 0 ; if set skip next
sbi PORTD, 0
; затримка
ldi Delay1, low(T_Blick)
ldi Delay2, high(T_Blick)
ldi Delay3, byte3(T_Blick)
rcall Delay
rjmp Blick_Alarm
InitIO: ; Ініціалізація портів вводу/виводу
cbi DDRD, 6
sbi PORTD, 6
cbi DDRB, 7
sbi PORTB, 7
cbi DDRD, 1 ; перемикач
sbi PORTD, 1
sbi DDRD, 3 ; Світлодіод
sbi PORTD, 3
sbi DDRD, 0 ; сирена
cbi PORTD, 0
ret
Delay:
subi Delay1, 1
sbci Delay2, 0
sbci Delay3, 0
brcc Delay
nop
ret
T_Scan= (0,005*4*106-15)/5=3997 с,
T_Alarm= (3*4*106-15)/5= 2399997 с,
T_Blick= (1/320 *4*106-15)/5= 2497 с.
Схема симуляції в Proteus
Висновок: в даній лабораторній роботі я навчилася вводити і асемблювати програму в AVR Studio, а також симулювати схему пожежної сигналізації в Proteus.