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

Програмування системного таймера 8253/8254 та робота з годинником реального часу.

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

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

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

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Архітектура комп'ютерів
Група:
КН

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра САПР  Лабораторна робота №10 з курсу“Архітектура комп’ютера” на тему: “Програмування системного таймера 8253/8254 та робота з годинником реального часу”. Виконав: студент групи КН-3 Львів-2007 Лабораторне завдання Запрограмувати таймер на виконання мелодії  -Metallica "Nothing Else Matters" по вказаним кодам: E3(1/8) P(1/8) E3(1/4) P(1/8) E3(1/8) E2(1/4) P(1/8) E3(1/8) F3(1/8) E3(1/8) D3(1/8) D3(1/8) E3(1/8) D3(1/8) A2(1/8) P(1/8) A2(1/4) P(1/8) A2(1/8) P(1/8) H2(1/8) A2(1/4) Результати виконаних пунктів завдання Програма: .186 .model small .stack 100h PORT_B EQU 61H COMMAND_REG EQU 43H LATCH2 EQU 42H B4 EQU 16 ; тривалості нот B2 EQU B4/2 B1 EQU B4/4 M3 EQU 1 ; ноти M2 EQU 2 FA EQU 3 RE EQU 4 LA EQU 5 Se EQU 6 FIN EQU 0FFH .data ; таблиця частот FREQUENCY DW 896,1809,855,1015,2711,2415 ; тривалість нот BEAT DB B1,B1,B2,B1,B1,B2,B1,B1 DB B1,B1,B1,B1,B1,B1 DB B1,B1,B2,B1,B1,B1,B1,B2 ; номер частоти ноти MELODY DB M3, ,M3, ,M3,M2, ,M3 DB FA,M3,RE,RE,M3,RE DB LA, ,LA, ,LA, ,Se,LA,FIN .code .startup JMP INIT ; дивимося ноту, отримуємо її частоту і поміщаємо в канал 2 NEXT_NOTE: PUSHA IN AL,PORT_B ; отримуємо статус порта В AND AL,0FCH ; виключаємо динамік OUT 61H,AL ; заміняємо байт POPA ; Ініціалізація INIT: PUSHA IN AL,PORT_B ; отримужмо поточний статус OR AL,00000011B ; дозволяємо динамік и таймер OUT PORT_B,AL ; заміняємо байт MOV SI,0 ; ініціалізуємо вказівник MOV AL,0B6H ; встановлення для канала 2 OUT COMMAND_REG,AL ; посилаємо в командний регістр POPA LEA BX,MELODY ; беремо зміщення для мелодії MOV AL,[BX][SI] ; беремо код n-ної ноти рядка CMP AL,0FFH ; перевірка на кінець рядка JE NO_MORE ; якщо кінець, то на вихід CBW ; перетворюємо в слово ; отримання частоти MOV BX,OFFSET FREQUENCY ; зміщення таблиці частот DEC AX ; починаємо відлік з 0 SHL AX,1 ; *2, оскільки слова MOV DI,AX ; адресація через DI MOV DX,[BX][DI] ; отримуємо частоту з таблиці ; починаємо відтворення ноти MOV AL,DL ; готовимо молодший байт частоти OUT LATCH2,AL ; посилаємо його MOV AL,DH ; готовимо старший байт частоти OUT LATCH2,AL ; посилаємо його ; створення циклу затримки MOV AH,0 ; номер функцїї читання лічильника INT 1AH ; отримуємо значення лічильника MOV BX,OFFSET BEAT ; зміщення таблиці довжин MOV CL,[BX][SI] ; беремо довжину наступної ноти MOV CH,0 MOV BX,DX ; беремо молодше слово лічильника ADD BX,CX ; визначаємо момент закінчення STILL_SOUND:INT 1AH ; беремо значення лічильника CMP DX,BX ; порівнюємо із закінченням JNE STILL_SOUND ; нерівні - продовжуємо звук INC SI ; переходимо до наступної ноти JMP NEXT_NOTE ; закінчення NO_MORE: IN AL,PORT_B ; отримуємо статус порта В AND AL,0FCH ; виключаємо динамік OUT 61H,AL ; заміняємо байт .exit 0 End Висновок: На цій лабораторній роботі я навчився програмувати системний таймер 8253/8254 та працювати з годинником реального часу.
Антиботан аватар за замовчуванням

2015

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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