Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра КСА
Лабораторна робота №2
з курсу «Мікропроцесорні пристрої»
Дослідження архітектури мікроконтролера сімейств MCS – 51 (AT90S8515 та AT89S52)з використанням лабораторного стенда EV8031/AVR.
Мета роботи: вивчення внутрішньої структури мікроконтролера сімейств MCS – 51 фірми Atmel (AT90S8515 та AT89S52), зокрема, програмно-доступних елементів та систем команд, використовуючи лабораторний стенд EV8031/AVR(V 3.2); набути досвіду розроблення простих програм, діагностики помилок, завантаження програм у пам’ять мікроконтролера та запуску їх на виконання.
ТЕОРЕТИЧНА ЧАСТИНА
Структурна схема МК
Призначення його основних складових
Процесор з гарвардською структурою реалізує повне логічне та фізичне розділення адресних просторів та інформаційних шин для звертання до пам’яті програм та пам’яті даних. Така побудова дуже близька до структури цифрових сигнальних процесорів і збільшує продуктивність МК. Процесор працює одночасно як з пам’яттю програм, так і з пам’яттю даних. Розрядність шини адреси пам’яті 16 біт. В МК типу AVR використовується конвеєрна технологія. Внаслідок цього цикл “вибирання-виконання” суттєво скорочений, тобто машинний цикл, на протязі якого виконується команда, складає всього один період тактової частоти.
Реєстровий файл займає молодші 32 байти в загальному адресному просторі МК (рис.2). Шість з 32-х реєстрів файлу можуть використовуватися як три 16-розрядні вказівники (X, Y, Z Pointers) адреси при непрямій адресації даних. Один з цих вказівників (Z Pointer) використовується також для доступу до даних, записаних в пам’яті програм МК. Використання 16-бітних вказівників (X, Y, Z Pointers) суттєво підвищує швидкість пересилання даних при виконанні прикладних програм.
Пам’ять програм. Всі AVR МК мають Flash-пам’ять програм, яка може завантажуватися як звичайним програматором, так і з допомогою SPI(serial peripheral interfase)-інтерфейсу, зокрема, безпосередньо на платі. Кількість циклів перезапису - не менше 1000.
Пам’ять даних. Всі AVR МК мають також енергонезалежну пам’ять даних з електричним стиранням EEPROM. Цей тип пам’яті використовується для зберігання проміжних даних, різних констант, таблиць перекодування і т.п. Дані в EEPROM можуть завантажуватися як через SPI-інтерфейс, так і за допомогою звичайного програматора. Кількість циклів перезапису складає не менше 100000. Два програмованих біти захисту інформації дозволяють захистити пам’ять від несанкціонованого доступу.
Внутрішня оперативна пам’ять SRAM (статичного типу) є у всіх МК AVR сімейства Classic та Mega і у деяких типах сімейства Tiny. Деякі МК допускають під’єднання зовнішньої памяті даних об’ємом до 64 Кбайт.
Периферія МК AVR. До периферійних пристроїв належать 8-розрядні паралельні порти вводу/виводу, послідовний порт, таймери/лічильники, внутрішній тактовий генератор та контролер переривань.
Приклад команд окремих груп та директив
Команди переміщення:
MOV ad, A – переміщення з акумулятора за прямою адресою
Арифметичні команди:
ІNC DPTR – інкремент вказівника даних
Логічні команди:
CLR A – скидання акумулятора
Команди операцій з бітами:
ORL C, bit – логічне «АБО» біта і прапорця С
Команди переходів:
DJNZ R, ad8 – декремент R і перехід, якщо не нуль
Програми виконані в лабораторії
Вміст реєстрів R1і R4 додати та висвітити на індикаторі
Мнемокод
Операнди
Коментарі
ORG
Con:mov
mov
mov
mov
add
movx
mov
jmp
END
0
R1, #04h
R4, #30h
DPTR, #0B000h
A, R1
A, R4
@DPTR, A
A, #00h
Con
; початок роботи програми
; записати в R1 число 04
; записати в R4 число 30
;занести в реєстр DPTR адресу Інд. DD17, DD18
;записати в A значення R1
;додати вміст реєстрів А і R4 та занести суму у реєстр А
; висвітити на Інд. DD17, DD18A
; обнулити А
; перейти на початок
;кінець програми
Результат роботи програми
/
Індивідуальне завдання
№
Текст індивідуального завдання
2
Занести в комірку з адресою B0h внутрішньої памяті МК двійково-десяткове число 0Х, в реєстр R3 і число Х0, суму чисел відобразити на другому та третьому знакомісці статичної індикації з частотою 0,5Гц.
Мнемокод
Операнди
Коментарі
org 0
Start:
mov
mov
mov
add
add
mov
mov
div
mov
mov
mul
mov
mov
mov
mov
mov
mov
mov
div
mov
mov
mov
mov
Cycle:
mov
mov
movx
Call zat
mov
movx
mov
mov
movx
mov
movx
jmp Cycle
zat:
mov
C1: mov
C2: djnz
djnz
ret
END
org 0
R3,#050h
R2, #009h
0F0H, #010h
A, R3
A, R2
R3,A
A,R3
AB
0F0H,#00h
0F0H,#010h
AB
R4, A
A, #00h
0F0H,#00h
0F0H,#010h
A, R3
DPTR ,#0B000h
A, R3
AB
A,#00h
A,0F0H
R5,A
A, #00h
A, R5
DPTR, #0B000h
@ DPTR,A
A, #00h
@DPTR,A
A, R4
DPTR, #0A000h
@ DPTR,A
A, #00h
@DPTR ,A
R3, #0FFh
R2, #0FFh
R2,C2
R3,C1
ret
END
; початок роботи програми
; записати в реєстр R3 число 050h
; записати в реєстр R2 число 009h
; переміщення числа 010h за прямою адресою
; додати реєстр R3 і акумулятор
; додати реєстр R2 і акумулятор
; переміщення з акумулятора в реєстр R3
; переміщення з реєстру R3 в акумулятор
; ділення акумулятора на реєстр B
; переміщення числа 00h за прямою адресою
; переміщення числа 010h за прямою адресою
; ділення акумулятора на реєстр B
; переміщення з акумулятора в реєстр R4
; записати в акумулятор число 00h
; переміщення числа 00h за прямою адресою
; переміщення числа 010h за прямою адресою
; переміщення з акумулятора в реєстр R3
; занести в реєстр DPTR вказівника на адресу правої пари статичного індикатора
; переміщення з реєстру R3 акумулятор
; ділення акумулятора на реєстр B
; записати в акумулятор число 00h
; записати в акумулятор 0F0H
; переміщення з акумулятора в реєстр R5
; записати в акумулятор 00h
; мітка
; переміщення з реєстру R5 в акумулятор
; занести в реєстр DPTR вказівника на адресу правої пари статичного індикатора
; передача за посиланням вмісту акумулятора
; команда виклику підпрограми переривання
; записати в акумулятор число 00h
; передача за посиланням вмісту акумулятора
; переміщення з реєстру R4 акумулятор
; занести в реєстр DPTR вказівника на адресу лівої пари індикатора
; передача за посиланням вмісту акумулятора
; записати в акумулятор число 00h
; передача за посиланням вмісту акумулятора
; (загасити індикатори)
; перехід на мітку Сycle
;
; мітка
; записати в реєстр R3 число 0FFh
; записати в реєстр R2 число 0FFh
; декремент R2 і перехід якщо не нуль
; декремент R3 і перехід якщо не нуль
; (часова затримка на двох регістрах із декрементом у вкладеному циклі)
; повернення з підпрограми
; закінчення програми
Результат роботи програми
/
Висновок: Висновок: на даній лабораторній роботі ми навчилися писати програми для мікроконтролера EV 8031, а також ознайомилися з його системою команд. Згідно з лабораторним завданням ми виконали приклад наведеної програми, та розробили програму по індивідуальному завданню. Також ми навчились відображати числа на другому та третьому знакомісці статичної індикації та навчились задавати частоту відображення цих чисел.