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

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

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

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

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

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра САПР  Лабораторна робота №10 з курсу“Архітектура комп’ютера” на тему: “Програмування системного таймера 8253/8254 та робота з годинником реального часу”. Лабораторне завдання Запрограмувати таймер на виконання мелодії  -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 та працювати з годинником реального часу.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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