МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
ЗВІТ
до лабораторної роботи №1
з курсу: «Технології програмування»
на тему:
«Знайомство з інтегрованим середовищем розробки AVR Studio та
програмою симуляції Proteus.
Написання та відладка простих програм для AVR-мікроконтролерів»
МЕТА РОБОТИ
Ознайомитися з послідовністю створення та вікладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR у програмах AVR Studio та Proteus 7
ЗАВДАННЯ
Створити проект в AVR Studio , ввести свою програму , провести її асемблювання
В режимі покрокової відкладки переконатися в правильності роботи програми, перевірити дотримання заданих в завданні часових параметрів
Відкрити файл LR_1.dsn в програмі Proteus , внести зміни в схему відповідно до свого індивідуального завдання , підключити до МК отриманий в AVR Studio hex-файл
Запустити режим симуляції схеми та перевірити правильність функцонування охоронної системи у всіх режимах роботи. У випадку виявлення відхилень в роботі внести потрібні виправлення.
№
Кількість охоронних
шлейфів з НРЗ давачами
Кількість охоронних
шлейфів з НЗМ давачами
Виводи для підкл.
охоронних
шлейфів з НРЗ давачами
Виводи для підкл.
охоронних
шлейфів з НЗМ давачами
Час постановки та зняття з охорони T_Alarm, с
Частота
блимання світлодіода F_Blick,
Гц
Вивід для підкл. світлодіода
4
2
2
PB3, PB5
PD0, PD4
2.5
12
PD3
КОД ПРОГРАМИ
; *******************************************
; Автор: Мовчан Б. М. *
; Дата: 01.11.2015 *
; Версія: 1.0 *
; Ім'я файлу: LR_1.asm *
; Тип МК: AT90S2313 *
; Тактова частота: 4 MГц *
; *******************************************
;////////////////////////////////////////////////////////////////////////////////////
include "2313def.inc" ; Підключаємо заголовочний файл
; Робочий регістр
.def temp = r16
; Регістри затримки
.def Delay1 = r17
.def Delay2 = r18
.def Delay3 = r19
;////////////////////////////////////////////////////////////////////////////////////
.equ SHLEIF_SHL0 = PB3 ; Вивід для підключення Normal Open шлейфу (НРЗ - SHL0)
.equ SHLEIF_SHL1 = PB5 ; Вивід для підключення Normal Open шлейфу (НРЗ - SHL1)
.equ SHLEIF_SHL2 = PD0 ; Вивід для підключення Normal Closed шлейфу (НЗМ - SHL2)
.equ SHLEIF_SHL3 = PD4 ; Вивід для підключення Normal Closed шлейфу (НЗМ - SHL3)
.equ LED = PD3 ; Вивід для підключення світлодіоду
.equ SWITCH = PD6 ; Вивід для підключення секретної кнопки
;////////////////////////////////////////////////////////////////////////////////////
; Розрахунок часових затримок
.equ FCLK = 3000000 ; Тактова частота МК
.equ N_Alarm = ((FCLK*25/10) - 15)/5
; Затримка 2.5 секунди
.equ N_Blick = 12 ; Частота мигання 12 Гц
;////////////////////////////////////////////////////////////////////////////////////
; Сегмент коду
.cseg
; Початкова адреса
.org 0
ldi temp, 0xDF ; Ініціалізація
out SPL, temp ; стеку
rcall Pin_Init ; Налаштування виводів МК
No_Work: ; Режим очікування !
in temp, PIND ; Прочитати стан секретної кнопки ! цикл опитування кнопки
andi temp, (1<<SWITCH) ; Виділити розряд РВ3 !
brne No_Work ; Якщо не натиснута, то перейти на No_Work !
; Почекати час необхідний для виходу з об'єкту
Loop:
ldi Delay1, low(N_Alarm)
ldi Delay2, high(N_Alarm)
ldi Delay3, byte3(N_Alarm)
rcall Delay ; Виклик п/п часової затримки
; Режим охорони
cbi PORTD, LED ; Включити світлодіод сигналізації
; Перейти в режим сканування охоронних шлейфів
Start:
in temp, PINB ; Прочитати стан шлейфу 0
andi temp, (1<<SHLEIF_SHL0) ; Виділити розряд РВ0
brne Next_1 ; Якщо немає спрацювання, перейти на Next_1
rjmp Work ; Якщо є спрацювання, перейти на Work
Next_1:
in temp, PINB ; Прочитати стан шлейфу 0
andi temp, (1<<SHLEIF_SHL1) ; Виділити розряд РВ0
brne Next_2 ; Якщо немає спрацювання, перейти на Next_1
rjmp Work ; Якщо є спрацювання, перейти на Work
Next_2:
in temp, PIND ; Прочитати стан шлейфу 0
andi temp, (1<<SHLEIF_SHL2) ; Виділити розряд РВ0
breq Next_3 ; Якщо немає спрацювання, перейти на Next_1
rjmp Work ; Якщо є спрацювання, перейти на Work
Next_3:
in temp, PIND ; Прочитати стан шлейфу 1
andi temp, (1<< SHLEIF_SHL3) ; Виділити розряд РВ1
brne Work ; Якщо є спрацювання, перейти на Work
; Якщо шлейфи не активні:
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Кнопка натиснута?
breq Next_4 ; Якщо так, перейти на Next_2
sbi PORTD, LED ; Виключити світлодіод сигналізації
rjmp No_Work ; Перейти в режим очікування
Next_4:
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 PORTD, LED ; Виключити світлодіод сигналізації
rjmp No_Work ; і перейти в режим очікування
; Сигналізація спрацювала - режим тривоги
Alarm:
in temp, PORTD ; Прочитати стан світлодіоду
ldi Delay1, (1<<LED)
eor temp, Delay1 ; Інвертувати стан світлодіоду
out PORTD, 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_SHL0
cbi PORTB, SHLEIF_SHL1
cbi PORTD, SHLEIF_SHL2
cbi PORTD, SHLEIF_SHL3
; Налаштувати виводи SHLEIF_NO та SHLEIF_NC на ввід
cbi DDRB, SHLEIF_SHL0
cbi DDRB, SHLEIF_SHL1
cbi DDRD, SHLEIF_SHL2
cbi DDRD, SHLEIF_SHL3
; Налаштувати вивід LED на вивід з логічною 1 на виході
sbi PORTD, LED
sbi DDRD, LED
; Налаштувати вивід SWITCH на ввід з підтягуючим резистором
sbi PORTD, SWITCH
cbi DDRD, SWITCH
ret ; Повернення з підпрограми
;////////////////////////////////////////////////////////////////////////////////////
СХЕМА СИМУЛЯЦІЇ PROTEUS
ВИСНОВОК
В даній лабораторній роботі я ознайомився з середовищем Proteus та AVR Studio . Синтезував свою першу схему згідно зі своїм варіантом. Вніс відповідні корективи до програми згідно свого варіанту. Також ознайомилися з принципом роботи охоронної системи.