МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
ДЕРЖАВНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Вивчення внутрішніх модулів та режимів роботи AVR-мікроконтролерів
Лабораторна робота № 2
З курсу «Мікропроцесорні пристрої»
Львів 2010
Мета роботи – ознайомитись з роботою внутрішніх модулів, системою переривань та режимами роботи AVR-мікроконтролерів.
ЗАВДАННЯ
Домашня підготовка до роботи
1.Вивчити теоретичний матеріалю
2.Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
3.Підготувати програму функціонування охоронної системи
Виконати в лабораторії
1.Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2.В режимі покрокової відладки переконатися в правильності роботи програми.
3.Відкрити файл-схему у програмі Proteus, підключити до МК hex-файл.
4.Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи.
ТЕКСТ ПРОГРАМИ
.include <2313def.inc>
.def temp = r16
.equ LED = 4
.equ AIN0 = 0
.equ AIN1 = 1
.equ analog_addres = 0x60
.equ digit_addres = 0x10
.cseg
.org 0;
rjmp begin;
rjmp digit_int;
reti;
reti;
reti;
reti;;
reti;
reti;
reti;
reti;
rjmp analog_int;обробка переривання дла аналогового компаратора
begin:
ldi temp, low(RAMEND);стек в кінець
out SPL, temp;
sbi DDRD, LED;налаштування виводу для СД
sbi PORTD, LED;СД(викл)
cbi DDRB, AIN0;налаштування вводу№0 для анал компаратора
cbi PORTB, AIN0;
cbi DDRB, AIN1;налаштування вводу№1 для анал компаратора
cbi PORTB, AIN1;
cbi ACSR, 0;налаштування компаратора на будь-яку зміну стану
cbi ACSR, 1;налаштування компаратора на будь-яку зміну стану
sbi ACSR, 3;дозвіл на перериваня від компаратора
cbi DDRD, 2;налаштування вводу для кнопки
sbi PORTD, 2;підтягуємо резистор
ldi temp, 0b01000000
out GIMSK, temp;дозвіл зовн переривання інт0
ldi temp, 0b00100010
out MCUCR, temp;втановлюємо переривання по зрізі
;і встановлення сплячого режиму
;в режимі IDLE
ldi temp, analog_addres;
out EEAR, temp ;завантажуємо адресу в адресний реєстр енерг.незал памяті
clr temp ;обнуляємо
write_a:
sbic EECR, EEWE ;чекаємо коли звільниться память для запису
rjmp write_a;
out EEDR, temp ;обнуляємо байт в памяті
sbi EECR, EEMWE ;дозвіл на запис
sbi EECR, EEWE ;запис в память
ldi temp, digit_addres;
out EEAR, temp ;завантажуємо адресу в адресний реєстр енерг.незал памяті
clr temp ;обнуляємо
write_d:
sbic EECR, EEWE ;чекаємо коли звільниться память для запису
rjmp write_d;
out EEDR, temp ;обнуляємо байт в памяті
sbi EECR, EEMWE ;дозвіл на запис
sbi EECR, EEWE ;запис в память
wait:
sei; дозвід обробки переривань
; sleep
rjmp wait;
;----------------
analog_int:
ldi temp, analog_addres;
out EEAR, temp ;завантажуємо адресу в адресний реєстр енерг.незал памяті
sbi EECR, EERE ;встановлюємо біт читання з памяті
in temp, EEDR ;читаємо з памяті попередню кількість викликів
inc temp ;збільшуємо на 1
n_write:
sbic EECR, EEWE ;чекаємо коли звільниться память для запису
rjmp n_write;
out EEDR, temp ;завантажуємо = кількість викликів + 1
cli ;заборона переривань
sbi EECR, EEMWE ;дозвіл на запис
sbi EECR, EEWE ;запис в память
sei; дозвід обробки переривань
cbi PORTD, LED ;СД вкл
reti
;----------------
digit_int:
ldi temp, digit_addres;
out EEAR, temp ;завантажуємо адресу в адресний реєстр енерг.незал памяті
sbi EECR, EERE ;встановлюємо біт читання з памяті
in temp, EEDR ;читаємо з памяті попередню кількість викликів
inc temp ;збільшуємо на 1
nn_write:
sbic EECR, EEWE ;чекаємо коли звільниться память для запису
rjmp nn_write;
out EEDR, temp ;завантажуємо = кількість викликів + 1
cli ;заборона переривань
sbi EECR, EEMWE ;дозвіл на запис
sbi EECR, EEWE ;запис в память
sei; дозвід обробки переривань
cbi PORTD, LED ;СД вкл
reti
СХЕМА
ВИСНОВОК
На даній лаболаторній роботі я ознайомився з послідовністю створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.