МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ, АВТОМАТИКИ ТА МЕТРОЛОГІЇ
КАФЕДРА ”ЗАХИСТ ІНФОРМАЦІЇ”
/
Звіт
до лабораторної роботи № 1
з курсу: "Мікропроцесори в системах ТЗІ"
Варіант №4
Мета робот – ознайомитись з послідовністю створення та відладки програмно- апаратних засобів на основі мікроконтролерів сімейства AVR у програмах AVR Studio та Proteus 7.
ТЕОРЕТИЧНІ ВІДОМОСТІ
AVR Studio 4 є інтегрованим середовищем розробки для написання та відлагодження програмного забезпечення мікроконтролерів сімейства AVR. AVR Studio 4 надає засоби управління проектами, редагування та асемблювання вихідних кодів, підтримки мов високого рівня С/С++. Також AVR Studio 4 дає змогу проводити симуляцію роботи програми, програмування кристалу мікроконтролера, здійснювати апаратну відладку.
Виконати в лабораторії
1. Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2. В режимі покрокової відладки переконатися в правильності роботи програми,
перевірити дотримання заданих в завданні часових параметрів.
3. Відкрити файл LR_1.dsn в програмі Proteus, внести зміни у схему відповідно до свого
індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
4. Запустити режим симуляції схеми та перевірити правильність функціонування
охоронної системи у всіх режимах роботи. У випадку виявлення відхилень в роботі внести потрібні виправлення.
Лістинг програми
; *******************************************
; ?????: ??? *
; ????: 01.09.2010 *
; ??????: 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_NC = PB2 ; Вивід для підключення Normal Closed шлейфу (НЗМ)
.equ LED = PD5 ; Вивід для підключення світлодіоду
.equ SWITCH = PD0 ; Вивід для підключення секретної кнопки
;////////////////////////////////////////////////////////////////////////////////////
; Розрахунок часових затримок
.equ FCLK = 4000000 ; Тактова частота МК
.equ N_Alarm = (FCLK*4 - 15)/5 ; Затримка 4 секунди
.equ N_Blick = (FCLK/20 - 15)/5 ; Частота мигання 5 Гц
;////////////////////////////////////////////////////////////////////////////////////
; Сегмент коду
.cseg
; Початкова адреса
.org 0
ldi temp, 0xDF ; Ініціалізація
out SPL, temp ; стеку
rcall Pin_Init ; Налаштування виводів МК
No_Work: ; Режим очікування
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Виділити розряд РВ0
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_NO) ; Виділити розряд РВ0
// brne Next_1 ; Якщо немає спрацювання, перейти на Next_1
// rjmp Work ; Якщо є спрацювання, перейти на Work
//Next_1:
in temp, PINB ; Прочитати стан шлейфу 1
andi temp, (1<< SHLEIF_NC) ; Виділити розряд РВ2
brne Work ; Якщо є спрацювання, перейти на Work
; Якщо шлейфи не активні:
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Кнопка натиснута?
breq Next_2 ; Якщо так, перейти на Next_2
sbi PORTD, LED ; Виключити світлодіод сигналізації
rjmp No_Work ; Перейти в режим очікування
Next_2:
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_NO
cbi PORTB, SHLEIF_NC
; ; Налаштувати виводи SHLEIF_NO та SHLEIF_NC на ввід
// cbi DDRB, SHLEIF_NO
cbi DDRB, SHLEIF_NC
; Налаштувати вивід LED на вивід з логічною 1 на виході
sbi PORTD, LED //?
sbi DDRD, LED //?
; Налаштувати вивід SWITCH на ввід з підтягуючим резистором
sbi PORTD, SWITCH
cbi DDRD, SWITCH
ret ; Повернення з підпрограми
Схема симуляції в Proteuz
/
Висновок: ознайомились з послідовністю створення та відладки програмно- апаратних засобів на основі мікроконтролерів сімейства AVR у програмах AVR Studio та Proteus 7.