- •В.В. Ткачов, г. Грулер, н. Нойбергер, с.М. Проценко, м.В. Козарь
- •Передмова
- •Загальні поняття й структура систем керування
- •Дискретні або цифрові ск
- •Основи обчислювальної техніки
- •Основи булевої алгебри
- •Базові логічні елементи
- •Реалізація логічних елементів (ле)
- •Діодні логічні елементи
- •Транзисторні логічні елементи
- •Комбінаційні пристрої
- •Дешифратори, мультиплексори, демультиплексори
- •Арифметичні пристрої Напівсуматор
- •Повні двійкові суматори
- •Однорозрядний двійковий суматор
- •Багаторозрядний суматор
- •Арифметико-логічні пристрої
- •Цифрові пристрої послідовністного типу Тригери
- •Регістри
- •Паралельний регістр
- •Послідовний регістр
- •Лічильники
- •Підсумовуючі двійкові лічильники
- •Організація пам'яті
- •Оперативні запам'ятовувальні пристрої
- •Постійні запам'ятовувальні пристрої
- •Методи й способи реалізації дискретних і цифрових су
- •Контрольні запитання
- •2. Загальні відомості про мікроконтролери
- •Структура й функціональні можливості базової моделі мcs-51 (мк51)
- •Програмно доступні ресурси мк51
- •Методи адресації в мк51
- •Система команд мк51
- •Арифметичні команди
- •Логічні команди
- •Команди пересилання
- •Команди передачі керування
- •Команди роботи з бітами
- •Контрольні запитання
- •3. Порти вводу/виводу інформації
- •Контрольні запитання
- •4. Організація переривань
- •Контрольні запитання
- •5. Організація тимчасових затримок у мікропроцесорних системах
- •Контрольні запитання
- •Правила написання програм для мк 51
- •Компілятор для мікроконтролерів сімейства мк51
- •Синтаксис мови асемблера
- •Директиви асемблера
- •Обчислення під час транслювання
- •Порівняння під час транслювання
- •Повідомлення про помилки асемблювання
- •Методика роботи з компілятором x8051
- •Діалоговий режим
- •Режим командного рядка
- •6.8. Редактор зв'язків для компілятора мікроконтролера сімейства мк51
- •Приклади вводу інформації з дискретних датчиків
- •Організація передачі інформації в послідовному форматі в мікропроцесорних системах (мпс)
- •Принципи передачі інформації з послідовного каналу зв'язку
- •Послідовний інтерфейс у мікроконтролері мсs51
- •Режим роботи 0
- •Контрольні запитання
- •9. Послідовні шинні системи (канали зв'язку)
- •Загальні поняття про електронні шинні системи
- •Різновиди послідовних шинних систем
- •Окремі приклади інтерфейсів та послідовних шин
- •Інтерфейс rs 232
- •Визначення логічного рівня
- •Розведення контактів та сигналів
- •Довжина кабелю
- •З’єднання rs 485
- •Концепція шини
- •Передача даних на рівні розрядів
- •Керування доступом до спільного ресурсу (розподіл доступу до шини) та тактова синхронізація
- •Адресація користувачів шини ( I 2c – блоки)
- •Can (Controller Area Network –мережа контролерів)
- •Фізичні характеристики
- •Характеристики протоколу рівня передачі бітів
- •Протоколи застосування на базі can
- •Основні характеристики can
- •Контрольні запитання
- •Приклади розробки систем керування на базі мк-51
- •Система керування з неперервними характеристиками
- •Система керування кроковим двигуном
- •Практична частина Лабораторна робота №1
- •Методика виконання.
- •Вихідні дані для програми:
- •Лабораторна робота №2
- •Індивідуальні задання:
- •Лабораторна робота №3
- •Методика виконання:
- •Задання:
- •Лабораторна робота №4
- •Методика виконання:
- •Варіанти задань
- •Лабораторна робота №5 Дослідження тимчасових затримок у мп системах
- •Приклад:
- •Методика виконання:
- •Варіанти задань.
- •Лабораторна робота №6
- •Методика виконання:
- •Задання:
- •Лабораторна робота №7 Дослідження послідовного інтерфейсу в
- •Методика виконання.
- •Список літератури
- •Для нотаток
- •Для нотаток
- •Для нотаток
Вихідні дані для програми:
перше значення дорівнює номеру за списком, помноженому на 5.
друге значення дорівнює номеру за списком, помноженому на 7.
Звіт повинен містити текст програми й результати виконання кожної операції.
Лабораторна робота №2
Дослідження внутрішньої й зовнішньої пам'яті даних і пам'яті програм
Ціль роботи: закріпити знання студентів при роботі з відлагоджувачем, вивчення команд пересилань із непрямою адресацією, покажчиків, роботу з масивами.
Теоретичні відомості. Пам'ять даних необхідна для приймання, зберігання й видачі інформації, використовуваної в процесі виконання програми. Пам'ять програм призначена для їх зберігання, а також для приймання, зберігання й видачі інформації, використовуваної в процесі виконання програми.
Для звертання до зовнішньої пам'яті даних використовується команда MOVX. Є два типи команд, що відрізняються забезпеченням 8-бітової або 16- бітової непрямої адреси до зовнішнього ОЗП даних. У першому випадку необхідно використовувати регістри R0 і R1 банків регістрів, уміст яких забезпечує 8-бітову адресу, яка мультиплексується з даними порту Р0. У другому випадку при виконанні вищевказаної команди покажчик даних DPTR генерує 16-бітова адреса.
Команда MOVC A,@A+dptr здійснює звертання до пам'яті програм і пересилає з неї байт коду в акумулятор. Адреса зчитуваного байта обчислюється як сума 8-бітового вихідного вмісту акумулятора без знака й умісту DPTR. Тому в лабораторній роботі перед звертанням до ПП рекомендується скинути вміст акумулятора.
При асемблерному програмуванні мікроконтролерів сім’ї МК51 здійснювати бітову адресацію можна, указавши адресу біта або безпосередньо
168
сам біт. Наприклад, запис JNB A.4,M1 або JNB Е4Н,M1 (адреса четвертого біта акумулятора) буде сприйматися відлагоджувачем однаково.
Нижче наведені фрагменти вікон робочого середовища Mcstudio і пояснення виконання команд пересилань із непрямою адресацією
Непряма адресація
Рис. 1. Виконання команди mov A,@R1
Команда MOV A,@Ri виконує пересилання в акумулятор умісту гнізда внутрішньої пам'яті даних. Адреса регістру (галузі 1) вказується в молодшому біті коду операції. Адреса гнізда (галузі 2) перебуває в регістрі-покажчику. Регістром-покажчиком можуть виступати тільки регістри R0 і R1.
Рис. 2. Виконання команди mov @r0,A
Команда MOV @Ri,A виконує пересилання вмісту акумулятора в гніздо внутрішньої пам'яті даних. Адреса гнізда перебуває в регістрі-покажчику. Регістром-покажчиком можуть виступати тільки регістри R0 і R1.
Приклад задання. Написати програму для мікроконтролера МCS-51, яка складає за модулем два елементи двох масивів довжиною 10 байтів. Перший масив перебуває у внутрішній пам'яті даних контролера, починаючи з адреси 60h. Другий – у пам'яті програм контролера, починаючи з адреси 40h. Результат додавання за модулем масивів записується на місце першого. Якщо в четвертому біті результату додавання за модулем два є «1», то, починаючи з адреси 51h у зовнішній пам'яті даних, записується адреса цього байта. Після обробки масиву в гніздо 50h зовнішньої пам'яті даних записується кількість отриманих покажчиків. При роботі із зовнішньою пам'яттю використовується однобайтова адресація.
Примітка. При написанні програми задається лише один масив, що перебуває в пам'яті програм, починаючи з адреси 40Н. Другий масив можна
169
задати безпосередньо в процесі роботи з відлагоджувачем, записавши елементи масиву в заданій області внутрішньої пам'яті даних (у цьому випадку – з адреси 60Н) і зберігши їх в окремому файлі. Результат виконання програми значення вихідного масиву можна побачити у вікні резидентної пам'яті даних (РПД). Для цього в головному меню необхідно вибрати пункт Вид – Резидентна пам'ять даних.
Текст програми мовою Асемблера
org 00h
MOV
R0,#60H
;
початкова
адреса
масиву, що
перебуває у
ВПД
MOV
R1,#51H
;
початкова
адреса
масиву
в
зовнішній
ПД
MOV
R2,#00H
;
кількість
отриманих
покажчиків
при
адресації
до
зовнішньої ПД
MOV
R3,#0AH
;
кількість
елементів
масивів
M2:
CLR
A
;
скидання
вмісту
акумулятора
MOVC
A,@A+dptr ;
додавання
за
модулем
два
n-х
елементів
масивів
XRL
A,@R0 ;
і
пересилання
результату
на
місце
першого
MOV
@R0,A
JNB
A.4,M1 ;
перевірка
на
«1»
четвертого
біта
результату
додавання
за
модулем
два
MOV A,R0 ; запис адреси результату додавання за модулем два, у якому
; четвертий біт одиничний
MOVX
@R1,A
INC R1 ; інкремент адрес масивів
INC R2 M1: INC R0
INC dptr
DJNZ R3,M2 ; перевірка масивів на їхнє закінчення
MOV
R1,#50H ;
запис
кількості
отриманих
покажчиків
при
адресації
MOV
A,R2 ;
до
зовнішньої
пам'яті
в гніздо
50h
зовнішньої
пам'яті
даних
MOVX
@R1,A
org 40h
M3: DB 01H,12H,43H,36H,0feh,37H,63H
DB 80h,0ach,91H ; задання масиву в пам'яті програм
End
Звіт повинен містити текст програми, текст індивідуального завдання й блок-схему алгоритму, результат виконання програми.
Початок 1
Пересилання
вмісту
акумулятора
за
адресою,
що
зберігається
в
R1
Інкремент
R0,
R1
Інкремент
R2,
DPTR
Декремент
R3
Пересилання в R0 початкової адреси масиву в ВПД
Пересилання в R1 початкової адреси масиву покажчиків
Адреса, у якій зберігається кількість покажчиків при адресації до ВПД
Кількість елементів масивів – в R3
Ні R3=0
Так
Збереження
в
R1
числа
50Н
Пересилання
вмісту
R2
в
акумулятор
Пересилання
вмісту
акумулятора
за
адресою
в
R1
Кінець
Пересилання в акумулятор вмісту комірки пам'яті програм, що перебуває за адресою в DPTR
Додавання за модулем два
Збереження вмісту акумулятора за адресою в R0
А.4=0
Так
170
|
Ні |
Пересилання вмісту гнізда, що зберігається за адресою в R0 в акумулятор |
|
|
|
1
Блок-схема програми складання за модулем двох масивів
171
