Робота з переферією LED-індикатора

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
ТК-33

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”   / Лабораторна робота № 3 на тему: «Робота з переферією LED-індикатора» «Робота з панеллю кнопок» Мета роботи: ознайомитися із командами мови програмування Assembler та принципами керування мікроконтролерами. Основні теоретичні відомості Асемблер (assembler) — система програмування, яка включає мову асемблера та транслятор з цієї мови. Є мовою програмування низького рівня. Чим нижчий рівень мови програмування, тим ближча специфіка роботи програми до самого процесора, для якого вона й була написана. Вважається, що мови низького рівня складніші й потребують більш вузької спеціалізації програміста, оскільки програма написана на асемблері для одного типу процесорів виявиться не завжди придатною для роботи з іншими процесорами. З іншого боку програми написані на асемблері компактні та швидкі. Асемблер підтримує безліч директив. Директиви не транслюються безпосередньо в коди операції. Навпаки, вони використовуються, щоб коригувати місце розташування програми в пам'яті, визначати макрокоманди, ініцілізувати пам'ять і так далі. Тобто це вказівки самому ассемблеру, а не команди мікроконтролера.  Всі директиви асемблера наведені в табл. 1.2. Таблиця 1.2.  Директиви асемблера Директива Опис  BYTE Зарезервувати байт під змінну  CSEG Сегмент кодів  DB Задати постійним (и) байт (и) в пам'яті  DEF Задати символічне ім'я регістру  DEVICE Задати для якого типу мікроконтролера компілювати  DSEG Сегмент даних  DW Задати постійне (і) слово (а) в пам'яті  EQU Встановіть символ рівний вираженню  ESEG Сегмент EEPROM  EXIT Вихід з файлу  INCLUDE Включити вихідний код з іншого файлу  LIST Включити генерацію .lst - файлу  NOLIST Вимкнути генерацію .lst - файлу  ORG Початкова адреса програми  SET Встановіть символ рівний виразу   Синтаксис всіх директив наступний:  . [Директива]  Тобто перед директивою повинна стояти крапка. Інакше асемблер сприймає це як мітку.  Дамо кілька пояснень найбільш важливим директивам асемблера Код програми: ;-----------------— test program —---------- DSEG ; створюємо сегмент даних ;зарезервуємо в SRAM початкові адреси програми 20H, 30H, 60H ORG 20H  ; ... ORG 30h;  ; ... ORG 60H  Stack: DS 20H ; встановлюємо стек на адресі 20H CSEG ; початок сегменту кодів ;декларація адрес ORG 0000H  jmp start  ORG 0003H reti  ORG 000BH reti  ORG 0013H reti  ORG 001BH reti  ORG 0023H reti  ORG 0030H ;---------------------------------------------------- Start: mov sp, #(stack-1) mov p0, #11111111B mov p1, #11111111B mov p2, #11111111B mov p3, #11111111B mov DPTR, #0A006h mov A, #00000001B ;##################################### ;## Main ## ;##################################### MAIN: movx @DPTR, A ; вводимо в регістр DPTR адресу індикації call knopka1 ; запуск функції для першої кнопки rl A ; рух світла діодів в ліву сторону call knopka2 ; запуск функції другої кнопки jmp m4 ; стрибок до мітки 4 m4: call Delay ; викликаємо функцію затримки jmp MAIN ; стрибок до мітки MAIN ;------------------------------------------------------- ; Procedures ;------------------------------------------------------- knopka1: ; функція натискання кнопки 1 jb p3.2,m1 ; перевірка натискання кнопки 1, якщо кнопка натиснута - перехід до мітки 1 m1: rr A ; рух світла діодів вправо knopka2: ; функція натискання кнопки 2 jb p3.3,m3 ; перевірка чи натиснута перша кнопка 2, якщо вірно - перехід на мітку 3 mov r3,#033h ; записуємо в r3 значення 33 m3: mov r3,#066h ; записуємо в r3 значення 66 Delay: ; функція затримки push 2 ; вставляємо в стек значення з регістру 2 (поміщається першим) push 3 ; вставляємо в стек значення з регістру 3 (поміщається першим) d_m2: mov r2,#0ffh ; записуємо в r3 значення 0ff d_m1: djnz r2,d_m1 ; декремент і перехід, якщо значення рівне 0, містить 2 цикли djnz r3,d_m2 ; цикл затримки іпульсу за рахунок регістра зсуву pop 3 ; виймаємо зі стеку значення, і поміщаємо в регістр 3 pop 2 ; виймаємо зі стеку значення, і поміщаємо в регістр 2 ret ; кінець роботи програми Висновок:На цій лабораторній роботі я досліджував Комутаційний блок типу "ЧАС-ПРСТІР" з двома різними принципами побудови: це з розбиттям вх./вих. трактів на групи та без розбиття їх на групи. Я мав змогу за допомогою програми спостерігати за кожним кроком комутації кодового слова двох різних комутаційних блоків. Порівнюючи їх в роботі та по економічності очевидно, що КБ без розбиття ГТ на групи є дешевшою. Але швидкодія такої схеми повинна бути дуже високою, тому що в ІЗП на протязі одного циклу повинні записатися і зчитатися всі канальні інтервали всіх групових трактів. Щодо КБ з розбиттям ГТ на групи, то вимога до швидкодії таких схем буде в [g] разів менша Проте к-сть АЗП та ІЗП зростає, що призводить до подорожання такого КБ. Тому використання такої схеми буде доцільніше і необхідним при великій к-сті КІ та ГТ!! МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”   / Лабораторна робота № 4 на тему: «Табулювання функції sin2x» «Вивід табульованої функції на осцилограф» Виконав: Студент групи ТК-33 Романьчук О.О. Перевірив Яремко О.М. Мета роботи: ознайомитися із командами мови програмування Assembler та принципами керування мікроконтролерами. Основні теоретичні відомості Асемблер (assembler) — система програмування, яка включає мову асемблера та транслятор з цієї мови. Є мовою програмування низького рівня. Чим нижчий рівень мови програмування, тим ближча специфіка роботи програми до самого процесора, для якого вона й була написана. Вважається, що мови низького рівня складніші й потребують більш вузької спеціалізації програміста, оскільки програма написана на асемблері для одного типу процесорів виявиться не завжди придатною для роботи з іншими процесорами. З іншого боку програми написані на асемблері компактні та швидкі. Асемблер підтримує безліч директив. Директиви не транслюються безпосередньо в коди операції. Навпаки, вони використовуються, щоб коригувати місце розташування програми в пам'яті, визначати макрокоманди, ініцілізувати пам'ять і так далі. Тобто це вказівки самому ассемблеру, а не команди мікроконтролера.  Всі директиви асемблера наведені в табл. 1.2. Таблиця 1.2.  Директиви асемблера Директива Опис  BYTE Зарезервувати байт під змінну  CSEG Сегмент кодів  DB Задати постійним (и) байт (и) в пам'яті  DEF Задати символічне ім'я регістру  DEVICE Задати для якого типу мікроконтролера компілювати  DSEG Сегмент даних  DW Задати постійне (і) слово (а) в пам'яті  EQU Встановіть символ рівний вираженню  ESEG Сегмент EEPROM  EXIT Вихід з файлу  INCLUDE Включити вихідний код з іншого файлу  LIST Включити генерацію .lst - файлу  NOLIST Вимкнути генерацію .lst - файлу  ORG Початкова адреса програми  SET Встановіть символ рівний виразу   Синтаксис всіх директив наступний:  . [Директива]  Тобто перед директивою повинна стояти крапка. Інакше асемблер сприймає це як мітку.  Дамо кілька пояснень найбільш важливим директивам асемблера / Блок-схема роботи програми ;------------------- test program ------------ DSEG ORG 20H ; ... ORG 30h ; ... ORG 60H Stack: DS 20H CSEG ORG 0000H jmp start ORG 0003H reti ORG 000BH reti ORG 0013H reti ORG 001BH reti ORG 0023H reti ORG 0030H ;---------------------------------------------------- Start: mov sp, #(stack-1) mov p0, #11111111B mov p1, #11111111B mov p2, #11111111B mov p3, #11111111B mov A, #00000001B mov DPTR, #0f000h ;##################################### ;## Main ## ;##################################### MAIN: mov A, #0 m_loop1: push ACC call LoadSin call LoadSinmod movx @DPTR, A pop ACC inc A cjne A, #128,m_loop1 jmp MAIN ;------------------------------------------------------- ; Procedures ;------------------------------------------------------- Delay: push 2 push 3 mov r3,#003h d_m2: mov r2,#0ffh d_m1: djnz r2,d_m1 djnz r3,d_m2 pop 3 pop 2 ret ;------------------------------------------------------- ;---------------------------------------------------- ;функції виводу sin на екран осцилографа LoadSin: inc A movc A,@A+PC ret sin: ; тут табульована функція sin2x у форматі «db x» LoadSinmod: inc A movc A,@A+PC ret sin: ; тут табульована функція |sinx| у форматі «db x» end Висновок: у ході роботи я ознайомився з принципами роботи мікроконтроллера та навчився створювати прості програми його роботи
Антиботан аватар за замовчуванням

20.05.2019 17:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!