DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

Рік:
2019
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
ТК-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:47

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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