МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ЛАБОРАТОРНА РОБОТА № 2
з курсу “ Мікропроцесорні пристрої ”
ДОСЛІДЖЕННЯ АРХІТЕКТУРИ МІКРОКОНТРОЛЕРА СІМЕЙСТВА MCS-51 (AT90S8515 та AT89S52) З ВИКОРИСТАННЯМ ЛАБОРАТОРНОГО СТЕНДУ EV8031/AVR
Львів – 2011
Мета роботи
Вивчення внутрішньої структури мікроконтролера сімейства MCS-51 фірми Atmel (AT90S8515 та AT89S52), зокрема, програмно-доступних елементів та системи команд, використовуючи лабораторний стенд EV8031/AVR (V3.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 Кбайт.
Структурна схема МК.
Лістинги перевірених програм.
Тестові програми
Програма 1
ORG 100H ; Початок програми
mov R1, #45h ; R1← 45
; Переслати безпосередньо
;у 8-розрядний реєстр R1 число 45
add R1, # EA ; R1←R1+EA
; Додати до вмісту реєстру R1 число EA
mov R2, R1 ; R2←R1
; Переслати вміст реєстру R1 в реєстр R2
END ; Закінчення програми
Програма 2
ORG 0 ; Початок програми
Con:mov R1, #04h ; записати в R1 число 04
mov R4, #30h ; записати в R4 число 30
mov DPTR, # 0B000h ; занести в реєстр DPTR адресу Інд.DD17, DD18
mov A, R1 ; записати в А значення R1
add A, R4 ; додати вміст реєстрів А і R4
; та занести суму у реєстр А
movx @DPTR, A ; висвітити на Інд. DD17, DD18 A
mov A, #00h ; обнулити A
jmp Con ; перейти на початок
END ; Закінчення програми
Індивідуальні завдання
Програма 3
Завдання №1
Занести в реєстр R4 двійково-десяткове число 0Х, в реєстр R6 - двійково-десяткове число Х0, суму чисел відобразити на першому і другому знакомісці статичної індикації; Х - будь-якa цифра від 0 до 9.
Виберемо : Х = 5.
0A000h – адреса лівої пари (третє і четверте знакомісця) статичного індикатора.
0В000h – адреса правої пари (перше і друге знакомісце) статичного індикатора.
Лістинг
ORG 0 ; Початок програми
Con:mov R4, #05h ; записати в R4 число 05
mov R6, #050h ; записати в R6 число 50
mov DPTR, # 0B000h ; занести в реєстр DPTR адресу Інд.DD17, DD18
mov A, R4 ; записати в А значення R4
add A, R6 ; додати вміст реєстрів А і R6
; та занести суму у реєстр А
movx @DPTR, A ; висвітити на Інд. DD17, DD18 A
mov A, #00h ; обнулити A
jmp Con ; перейти на початок
END ; Закінчення програми
Програма 4
Завдання №7
Занести в реєстр R0 двійково-десяткове число ХХ, поперемінно відображати молодшу і старшу тетраду на першому і четвертому знакомісці статичної індикації з частотою 1 Гц.
Виберемо : Х = 5.
0A000h – адреса лівої пари (третє і четверте знакомісця) статичного індикатора.
0В000h – адреса правої пари (перше і друге знакомісце) статичного індикатора.
Лістинг
ORG 0 ; Початок програми
Start:
mov R0, #055h ; записати в R0 число 55
mov 0F0H, #010h ; записати в В число 10
mov A, R0 ; записати в А значення реєстру R0
div AB ; ділення А на реєстр В
mov 0F0H, #00h ; обнулити в В
mov 0F0H, #010h ; записати в В число 10
mul AB ; множення А на В. А – старша тетрада
mov R4, А ; записати в R4 значення A. R4 – старша тетрада
mov A, #00h ; обнулити A
mov 0F0H, #00h ; обнулити в В
mov 0F0H, #010h ; записати в В число 10
mov A, R0 ; записати в А значення реєстру R0
div AB ; ділення А на реєстр В. В – молодша тетрода
mov A, #00h ; обнулити A
mov A, 0F0H ; записати в A значення B
mov R5, A ; записати в R5 значення A. R5 – молодша тетрада
mov A, #00h ; обнулити A
Cycle:
mov A, R5 ; записати в А значення R5
mov DPTR, # 0A000h ; занести в реєстр DPTR адресу індикації
movx @DPTR, A ; висвітити на лівій парі індикатора значення А
call zat ; виклик підпрограми затримки Zat
mov A, #00h ; обнулити A
movx @DPTR, A ; висвітити 0 на лівій парі індикатора
mov A, R4 ; записати в А значення R4
mov DPTR, # 0В000h ; занести в реєстр DPTR адресу індикації
movx @DPTR, A ; висвітити на правій парі індикатора значення А
call zat ; виклик підпрограми затримки Zat
mov A, #00h ; обнулити A
movx @DPTR, A ; висвітити 0 на правій парі індикатора
jmp Cycle ; Зациклюємо відображення тетрад
Zat: ; Підпрограма затримки Zat
mov R3,#05h ; записати в R3 число 5
C3: mov R1,#0FFh ; записати в R1 число 255
C1: mov R2,#0FFh ; записати в R2 число 255
C2: djnz R2,C2 ; інкремент R2 і перехід на С2 якщо 0
djnz R1,C1 ; інкремент R1 і перехід на С1 якщо 0
djnz R3,C3 ; інкремент R3 і перехід на С3 якщо 0
ret ; повернення з підпрограми
END ; Закінчення програми
Висновок: на даній лабораторній роботі ми навчилися писати програми для мікроконтролера EV 8031, а також ознайомилися з його системою команд. Згідно лабораторного завдання були написані та відлагоджені чотири програми для відображення інформації на дисплеї стенду. Стандартна підпрограма затримки була вдосконалена для забезпечення часового інтервалу в 1с.