МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ, АВТОМАТИКИ ТА МЕТРОЛОГІЇ
КАФЕДРА ”ЗАХИСТ ІНФОРМАЦІЇ”
/
Звіт
до лабораторної роботи № 2
з курсу: "Мікропроцесори в системах ТЗІ"
Варіант №4
Мета роботи – ознайомитись з роботою периферійних модулів (каналового компаратора,EEEPROM-пам’яті),системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів Розширити навики створення та відладки програтно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.
ЗАВДАННЯ
Домашня підготовка до роботи :
1. Вивчити теоретичний матеріал.
2. Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
3. Підготовити програму функціонування охоронної системи згідно індивідуального завдання
Виконати в лабораторії
1. Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2. В режимі покрокової відладки переконатися в правильності роботи програми.
3. Відкрити файл LR_2.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
4. Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи: відсутність спарцювання, спарцювання аналогового давача, спрацювання цифрового давача.
Лістинг програми
; *******************************************
; Автор: ПІБ *
; Дата: 01.09.2010 *
; Версія: 1.0 *
; Ім'я файлу: LR_2.asm *
; Тип МК: AT90S2313 *
; Тактова частота: 7.3728 MГц *
; *******************************************
;
; Параметри системи:
; Рівень спрацювання аналогового давача: 4.7 В
; Тип цифрового давача: НРЗ
; Вивід для підключення цифрового давача: PD3/INT1
; Вивід для підключення світлодіоду: РВ5
; Адреса комірки ЕЕPROM для зберігання кількості спрацювань цифрового давача: 0x3D
; Адреса комірки ЕЕPROM для зберігання кількості спрацювань аналогового давача: 0x41
; Режим пониженого енергоспоживання: Idle
; Напруга живлення: 5 В
;////////////////////////////////////////////////////////////////////////////
.include "2313def.inc"
;////////////////////////////////////////////////////////////////////////////
.def temp = r16 ; Робочий регістр
.def EE_Addr_Reg = r17 ; Регістр зберігання адреси EEPROM
.def EE_Data_Reg = r18 ; Регістр зберігання даних EEPROM
;////////////////////////////////////////////////////////////////////////////
.equ Analog_Addr = 0x41 ; Адреса EEPROM для аналогового давача
.equ Digital_Addr = 0x3D ; Адреса EEPROM для цифрового давача
.equ LED_DDR = DDRD
.equ LED_PORT = PORTD
.equ LED_PIN = PD5
;////////////////////////////////////////////////////////////////////////////
.cseg ; Початок сегменту Flash-пам'яті
.org 0 ; Адреса початку програми
rjmp RESET ; Вектор скиду
reti ; rjmp INT0_EXT
rjmp INT1_EXT ; Вектор зовнішнього переривання 0 з виводу PD3
reti ; rjmp TIM_CAPT1
reti ; rjmp TIM_COMP1
reti ; rjmp TIM_OVF1
reti ; rjmp TIM_OVF0
reti ; rjmp UART_RXC
reti ; rjmp UART_DRE
reti ; rjmp UART_TXC
rjmp ANA_COMP ; Вектор переривання від аналогового компаратора
;////////////////////////////////////////////////////////////////////////////
.org 0x0B ; Початок основної програми
RESET:
; Ініціалізація стеку
ldi temp, low(0xDF)
out SPL, temp
; Налаштування виводів аналогового компаратора
cbi DDRB, PB0 ; Вивід РВ0 - вхід
cbi DDRB, PB1 ; Вивід РВ1 - вхід
cbi PORTB, PB0 ; Відключити внутрішній підтягуючий резистор для РВ0
cbi PORTB, PB1 ; Відключити внутрішній підтягуючий резистор для РВ1
; Налаштування виводів світлодіода
sbi LED_PORT, LED_PIN ; Світлодіод виключений
sbi LED_DDR, LED_PIN ; Вивід LED_PIN - вихід
; Налаштування виводу для підключення цифрового давача
cbi DDRD, PD3 ; Вивід РD3 - вхід
cbi PORTD, PD3 ; Відключити внутрішній підтягуючий резистор для РD3
ldi temp, (1<<ACIE) | (1<<ACIS1) | (1<<ACIS0) ; Дозволити переривання від АК,
; переривання генерується при
; переході з 0 в 1
out ACSR, temp ; Сконфігурувати аналоговий компаратор
; Налаштувати режим пониженого енергоспоживання і умову генерації переривання INT0
ldi temp, (1<<ISC11) | (1<<SE) ; Режим енергоспоживання Idle: SM = 0,
; зовнішні переривання по спадаючому фронту
out MCUCR, temp ; Сконфігурувати регістр MCUCR
; Дозволити зовнішнє переривання INT1
ldi temp, (1<<INT1)
out GIMSK, temp
; Загальний дозвіл переривань: І = 1
sei
Loop:
sleep ; Перехід в режим пониженого енергоспоживання
rjmp Loop ; Після спрацювання давача знову перейти в режим
; пониженого енергоспоживання
;////////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////////
INT1_EXT: ; П/п обробки переривання INT0
cbi LED_PORT, LED_PIN ; Включити світлодіод
ldi EE_Addr_Reg, Digital_Addr ; Завантажити в регістр адреси EEPROM адресу
; цифрового давача
rcall EEPROM_Read ; Прочитати з EEPROM кількість спацювань
; цифрового давача
inc EE_Data_Reg ; Збільшити кількість спрацювань на 1
rcall EEPROM_Write ; Зберегти кількість спацювань цифрового
; давача в EEPROM
reti ; Вийти з переривання
;////////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////////
ANA_COMP: ; П/п обробки переривання від аналогового компаратора
cbi LED_PORT, LED_PIN ; Включити світлодіод
ldi EE_Addr_Reg, Analog_Addr ; Завантажити в регістр адреси EEPROM адресу
; аналогового давача
rcall EEPROM_Read ; Прочитати з EEPROM кількість спацювань
; аналогового давача
inc EE_Data_Reg ; Збільшити кількість спрацювань на 1
rcall EEPROM_Write ; Зберегти кількість спрацювань аналогового
; давача в EEPROM
reti ; Вийти з переривання
;////////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////////
EEPROM_Write: ; П/п запису байту в EEPROM
sbic EECR, EEWE ; Чекати, доки прапорець EEWE не буде скинутий
rjmp EEPROM_Write
out EEAR, EE_Addr_Reg ; Завантажити адресу для запису
out EEDR, EE_Data_Reg ; Завантажити дані для запису
sbi EECR, EEMWE ; Встановити мастер-біт дозволу запису
sbi EECR, EEWE ; Встановити біт дозволу запису
ret ; Вихід з п/п запису байту в ЕEPROM
;////////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////////
EEPROM_Read: ; П/п читання байту з EEPROM
sbic EECR, EEWE ; Чекати, доки прапорець EEWE не буде скинутий
rjmp EEPROM_Read
out EEAR, EE_Addr_Reg ; Завантажити адресу для читання
sbi EECR, EERE ; Встановити прапорець дозволу читання
in EE_Data_Reg, EEDR ; Прочитати дані
ret ; Вихід з п/п читання байту з ЕEPROM
;////////////////////////////////////////////////////////////////////////////
Схема симуляції в Proteuz
/
Висновок: ознайомились з роботою периферійних модулів (каналового компаратора,EEEPROM-пам’яті),системою переривань та внутрішніми режимами роботи AVR-мікроконтролерів Розширити навики створення та відладки програтно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.