МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
/
Звіт до лабораторної роботи № 1
Знайомство з інтегрованим середовищем розробки AVR Studio та програмою симуляції Proteus. Написання та відладка простих програм для AVR - мікроконтролерів
з навчальної дисципліни: “ Технології програмування ”
Варіант № 22
Львів – 2012
Мета роботи - ознайомитись з послідовністю створення та відладки програмно - апаратних засобів на основі мікроконтролерів сімейства AVR у програмі AVR Studio та Proteus7.
Завдання
Домашня підготовка до роботи
Вивчити теоретичний матеріал.
Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
Підготовити програму функціонування охоронної системи згідно індивідуального завдання у Табл. 1.
Таблиця 1
№
Кількість охоронних шлейфів з НЗР давачами
Кількість охоронних шлейфів з НЗМ давачами
Виводи для підкл. охоронних шлейфів з НЗР давачами
Виводи для підкл. охоронних шлейфів з НЗМ давачами
Час постановки та зняття з охорони T_Alarm, с
Частота блимання світлодіода F_Blick, Гц
Вивід для підкл. світлодіода
22
2
1
PD1, PD3
PB5
3.6
10
PB2
Виконати в лабораторії
Створити проект в AVR Studio, ввести свою програмe, провести її асемблювання.
В режимі покрокової вілладки переконатися в правильності роботи програми, перевірити дотримання заданих в завданні часових параметрів.
Відкрити файл LR_l.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи. У випадку виявлення відхилень в роботі внести потрібні виправлення.
Лістинг програми
.include "2313def.inc" ; Підключаємо заголовочний файл
; Робочий регістр
.def temp = r16
; Регістри затримки
.def Delay1 = r17
.def Delay2 = r18
.def Delay3 = r19
;////////////////////////////////////////////////////////////////////////////////////
.equ SHLEIF_NO_1 = PD1 ; Вивід для підключення Normal Open шлейфу (НРЗ)
.equ SHLEIF_NO_2 = PD3 ; Вивід для підключення Normal Open шлейфу (НРЗ)
.equ SHLEIF_NC = PB5 ; Вивід для підключення Normal Close шлейфу (Н3M)
.equ LED = PB2 ; Вивід для підключення світлодіоду
.equ SWITCH = PD0 ; Вивід для підключення секретної кнопки
;////////////////////////////////////////////////////////////////////////////////////
; Розрахунок часових затримок
.equ FCLK = 2000000 ; Тактова частота МК
.equ N_Alarm = (FCLK*3.6 - 15)/5 ; Затримка 3.6 секунди
.equ N_Blick = (FCLK/20 - 15)/5 ; Частота мигання 10 Гц
;////////////////////////////////////////////////////////////////////////////////////
; Сегмент коду
.cseg
; Початкова адреса
.org 0
ldi temp, 0xDF ; Ініціалізація
out SPL, temp ; стеку
rcall Pin_Init ; Налаштування виводів МК
No_Work: ; Режим очікування
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Виділити розряд РВ2
brne No_Work ; Якщо не натиснута, то перейти на No_Work
; Почекати час необхідний для виходу з об'єкту
Loop:
ldi Delay1, low(N_Alarm)
ldi Delay2, high(N_Alarm)
ldi Delay3, byte3(N_Alarm)
rcall Delay ; Виклик п/п часової затримки
; Режим охорони
cbi PORTB, LED ; Включити світлодіод сигналізації
; Перейти в режим сканування охоронних шлейфів
Start:
in temp, PIND ; Прочитати стан шлейфу 0
andi temp, (1<<SHLEIF_NO_1) ; Виділити розряд РD1
brne Next_1
rjmp Work ; Якщо є спрацювання, перейти на Work
Next_1:
in temp, PIND ; Прочитати стан шлейфу 1
andi temp, (1<<SHLEIF_NO_2) ; Виділити розряд РD3
brne Next_2
rjmp Work ; Якщо є спрацювання, перейти на
Next_2:
in temp, PINB ; Прочитати стан шлейфу 2
andi temp, (1<<SHLEIF_NC) ; Виділити розряд РВ5
brne Work ; Якщо є спрацювання, перейти на
; Якщо шлейфи не активні:
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Кнопка натиснута?
breq Next_3 ; Якщо так, перейти на Next_3
sbi PORTB, LED ; Виключити світлодіод сигналізації
rjmp No_Work ; Перейти в режим очікування
Next_3:
rjmp Start ; Повторити цикл опитування
; Почекати час необхідний для відключення сигналізації
Work:
ldi Delay1, low(N_Alarm)
ldi Delay2, high(N_Alarm)
ldi Delay3, byte3(N_Alarm)
rcall Delay
; Час вичерпано - перевірити стан секретної кнопки
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Кнопка натиснута (знято з охорони)?
breq Alarm ; Якщо ні, перейти на Alarm
; Охорона вчасно відключена
sbi PORTB, LED ; Виключити світлодіод сигналізації
rjmp No_Work ; і перейти в режим очікування
; Сигналізація спрацювала - режим тривоги
Alarm:
in temp, PORTB ; Прочитати стан світлодіоду
ldi Delay1, (1<<LED)
eor temp, Delay1 ; Інвертувати стан світлодіоду
out PORTB, temp ; Вивести в PORT_LED
ldi Delay1, low(N_Blick) ; Затримка
ldi Delay2, high(N_Blick)
ldi Delay3, byte3(N_Blick)
rcall Delay
rjmp Alarm ; Перейти на початок
;////////////////////////////////////////////////////////////////////////////////////
; Підпрограма часової затримки
Delay:
subi Delay1, 1
sbci Delay2, 0
sbci Delay3, 0
brcc Delay
nop
ret
;////////////////////////////////////////////////////////////////////////////////////
; Підпрограма ініціалізації виводів МК
Pin_Init:
; Налаштувати виводи SHLEIF_NO та SHLEIF_NC без підтягуючих резисторів
cbi PORTB, SHLEIF_NO_1
cbi PORTB, SHLEIF_NO_2
cbi PORTD, SHLEIF_NC
; Налаштувати виводи SHLEIF_NO та SHLEIF_NC на ввід
cbi DDRB, SHLEIF_NO_1
cbi DDRB, SHLEIF_NO_2
cbi DDRD, SHLEIF_NC
; Налаштувати вивід LED на вивід з логічною 1 на виході
sbi PORTB, LED
sbi DDRB, LED
; Налаштувати вивід SWITCH на ввід з підтягуючим резистором
sbi PORTD, SWITCH
cbi DDRD, SWITCH
ret ; Повернення з підпрограми
Схема симуляції в Proteus
/
Висновок
Під час виконання даної лабораторної роботи була розроблена програма функціонування охоронної системи, час постановки та зняття з охорони T_Alarm складає 3,6 с., частота блимання світло діода – 10 Гц. Також для програми створена схема охоронної системи.