Работа со счётчиком времени суток 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа со счётчиком времени суток



Чтение/ установка времени. MS DOS предоставляет прерывания для чтения и установки времени, производя необходимые преобразования между значением счётчика времени суток и часами, минутами, секундами. Время выдаётся с точностью до одной сотой секунды, но, поскольку счётчик обновляется с частотой в 5 раз меньшей, то показания сотых долей очень приближённые.

1. Функция 2 Ch (пересылается в AH) прерывания 21 h позволяет прочитать текущее время системных часов. При этом в регистр CH возвращаются часы (в диапазоне 0 – 23), в CL – минуты (0 – 59), в DH – секунды (0 – 59), в DL – сотые доли секунды (0 – 59), в AL – номер дня недели (0 – 6, 0 – воскресенье). День недели будет возвращён верно, если была установлена дата.

2. Функция 2 Dh (пересылается в AH) прерывания 21 h позволяет установить новое время системных часов. При этом в регистр CH помещаются часы (в диапазоне 0 – 23), в CL – минуты (0 – 59), в DH – секунды (0 – 59), в DL – сотые доли секунды (0 – 59).

Если при установке времени ошибок не возникло, то в регистр AL возвращается 0, в противном случае – значение FF.

Чтение/ установка даты. Значение даты хранится в переменной файла COMMAND.COM. Она хранится в формате трёх последовательных байтов, которые содержат день месяца, номер месяца и год месяца (0 соответствует 1980 году).

1. Функция 2 Ah (пересылается в AH) прерывания 21 h позволяет прочитать текущую дату. При возврате в регистре CX содержится год в диапазоне от 0 до 59, что соответствует годам в интервале от 1980 до 2099. В регистре DH – номер месяца (1 – 12), в DL – день (1 –31).

2. Функция 2 Dh (пересылается в AH) прерывания 21 h позволяет установить новую дату. При этом в регистр CX помещается год (в диапазоне 0 – 119), в DH – номер месяца (1 – 12), в DL – день (1 – 31).

Если при установке даты ошибок не возникло, то в регистр AL возвращается 0, в противном случае – значение FF.

Задержка программных операций. При реализации задержки в программе посредством пустого цикла может потребоваться много времени для того, чтобы добиться нужного времени задержки. Длительность цикла может меняться в зависимости от применяемого компилятора. Поэтому целесообразно определять время непосредственно по часам. Чтобы обеспечить задержку данной продолжительности, программа должна подсчитать требуемое количество импульсов счётчика времени суток. Например, если необходимо организовать задержку на 5 секунд, то число импульсов счётчика составит  импульсу. Это значение добавляется к считанному текущему значению счётчика. Затем программа постоянно считывает значение счётчика и сравнивает его с запомненным. При достижении равенства задержка считается выполненной.

Значение счётчика времени суток хранится в четырёх байтах. Два младших байта позволяют осуществлять задержки до одного часа.

Функция 0 h (пересылается в AH) прерывания 1 Ah позволяет прочитать текущее значение счётчика времени суток (в импульсах). При возврате в регистре DX содержатся два младших байта, в регистре CX – два старших байта. Для задержек в пределах одного часа старшие байты можно игнорировать и работать только с регистром DX.

Генерация звука

Канал 2 микросхемы таймера прямо связан с динамиком компьютера. Когда этот канал программируется в режиме 3, он посылает прямоугольные волны данной частоты. Из-за простоты динамика он сглаживает края прямоугольной волны, получая синусоидальную волну, более приятную для слуха. Микросхема таймера не позволяет менять амплитуду волну, поэтому нельзя менять громкость звука, издаваемого динамиком. Кроме того, сигнал также посылает микросхема связи с периферией. Комбинируя воздействия этих двух источников, можно получать различные звуковые эффекты.

Если процессор непосредственно управляет динамиком, то для генерации звука аппаратные прерывания должны быть отключены оператором CLI перед началом работы со звуком и включены оператором STI после окончания работы со звуком. Изменяя частоту (в диапазоне от 37 Гц до 32767 Гц) и длительность (в диапазоне от 0 до 65535 импульсов счётчика времени суток или используя пустой цикл), можно получать различные звуки. Частоты нот первой октавы приведены в табл. 2.8.

Таблица 2.8.

Частоты нот первой октавы

Нота Частота
До 523,3
Ре 587,3
Ми 659,3
Фа 698,5
Соль 784,0
Ля 880,0
Си 987,7

Частоты на октаву выше можно получить, удваивая эти значения, частоты на октаву ниже приблизительно равны половине указанных в табл. 2.8 значений.

Генерация звука состоит во включении и выключении с желаемой частотой первого бита порта 61 h микросхемы интерфейса с периферией, который связан с динамиком.

Для генерации звука определённой частоты необходимо в порт 42 h (канал 2 микросхемы таймера) переслать желаемую частоту. Поскольку в порт можно за раз записать не более одного байта, то пересылка частоты выполняется в два этапа (сначала посылается младший байт частоты, а потом старший). Затем в режиме запрещения аппаратных прерываний (команда CLI) необходимо отключить динамик от таймера, сбросив в 0 нулевой бит порта 61 h. Потом подключить динамик к таймеру и включить звук, установив в единицу нулевой и первый биты порта 61 h. По истечении требуемой длительности следует отключить звук, сбросив в 0 нулевой и первый биты порта 61 h. После работы со звуком необходимо включить режим разрешения аппаратных прерываний командой STI.

Следует отметить, что при отключении аппаратных прерываний счётчик времени суток BIOS работать не будет. Поэтому для задания длительности целесообразно использовать пустой цикл.



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 94; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.171.121 (0.005 с.)