Cmos системы и часы реального времени что это
Перейти к содержимому

Cmos системы и часы реального времени что это

  • автор:

Подсистема CMOS-памяти и часов реального времени RTC

В РС ХТ аппаратная конфигурация РС (объем памяти, количество и типы дисководов, тип видеоподсистемы и т. п.) задавались DIP-переключателями, состояние которых опрашивалось системой BIOS перед выполнением POST-программы. При изменении аппаратной конфигурации (реконфигурировании АПС) требовалось изменять состояние этих переключателей на системной плате вручную, что не просто, т. к. их назначение и расположение на системной плате специфично для каждого ее типа. В РС/АТ, для хранения подобной информации, состав которой, кстати, заметно расширился, ввели специальную микросхему памяти небольшого объема, питание которой при выключенном компьютере осуществляется от специальной батарейки или аккумулятора. В ту же микросхему поместили и часы-календарь (чтобы часы не останавливались, когда компьютер выключен). А чтобы снизить потребление мощности от батарейки, выбрали структуру КМОП (CMOS — Complimentary Metal-Oxide-Semiconductor — комплиментарный полупроводник, выполненный по металло-оксидной технологии на полевых транзисторах). Эта память и часы — CMOS Memory and Real Time Clock (RTC) стали стандартным элементом архитектуры РС/АТ. Содержимое этой памяти, время и дату модифицировали сначала с помощью внешней загружаемой утилиты SetUp, а позже эту утилиту встроили в BIOS. Эта микросхема CMOS RTC имеет встроенную систему контроля питания, отслеживающую разряд батареи ниже допустимого уровня. При разряженной батарее BIOS при загрузке ОС выводит на монитор сообщение типа:

CMOS battery state low

CMOS display type mismatch

RUN SETUP UTILITY

Press to RESUME

(низкое напряжение батареи питания CMОS-памяти. Содержимое CMOS-памяти неправильно. Запустите утилиту SETUP. Нажмите F1 для ее вызова).

Отсутствие ошибок в CMOS-памяти, проверяет BIOS при загрузке ОС, с помощью контрольной суммы, формирующейся при модификации содержимого CMOS-памяти и хранящейся в ней же.

Доступ к ячейкам CMOS RTC осуществляется CPU через порты ввода-вывода 70h (адрес ячейки) и 71h (данные).

Назначение ячеек SMOS RTC приведено в таблице 1.5.

Таблица 1.5. Стандартное назначение ячеек CMOS RTC.

Адрес

Назначение

00 — 09h

Ячейки RTC в BCD-формате:

01 — секунды будильника
>02 — минуты
03 — минуты будильника
04 — часы
05 — часы будильника
06 — день недели
07 — день месяца
08 — месяц
09 — год (2 младшие цифры)

RTC Status Register А (регистр состояния)

Бит 7 — обновление времени (0- готов к чтению)

Биты 6:4 — делитель частоты )для 32,768 КГц = 010

Биты 3:0 = 0110 — выходная частота меандра 1024 Гц

RTC Status Register B ( регистр состояния )

бит 7 — остановка часов (0= нормальный ход)
бит 6 — разрешение прерываний (0= запрещено)
бит 5 — разрешение прерываний от будильника (0= запрещено)
бит 4 — разрешение прерываний по окончании смены времени (0=запрещено)
бит 3 — разрешение выходного меандра (0=запрещено)
бит2 — формат BIN/BCD#
бит 1 — 24/12# -часовой режим
бит 0 — зимнее/летнее время (0= переключение запрещено)

RTC Status Register C — флаги прерываний :

бит 7 — IRQF — общий запрос прерываний

бит 6 — PF — периодические прерывания

бит 5 — AF — прерывание от будильника

бит 4 — UF — прерывание по смене времени

биты 3 — 0 — зарезервированы

RTC Status Register D

Бит 7 — питание (1 — норма, 0 — разряд)

Биты 6:0 — зарезервированы

POST Diagnostic Status Byte

Бит 7 — power Lost ( терялось питание CMOS)

Бит 6 — Checksum Bad

Бит 5 — Bad config

Бит 4 — RAM Size Error — определенный тестом размер ОЗУ не соответствует записи в CMOS

Бит 3 — HDD Error

Бит 2 — Time Valid — формальная ошибка часов-календаря (напр. 30 февраля, 25 часов)

Биты 1:0 — зарезервированы

Shutdown Code — используется POST для определения предыстории останова:

00 — аппаратный или программный сброс

01 — размер памяти определен

02 — тест памяти прошел

03 — ошибка в тесте памяти

04 — POST завершен, идет загрузка системы

05 — JMP FAR [0%0467h ] с инициализацией контроллера прерываний

06 — тест защищенного режима прошел

07 — ошибка в тесте защищенного режима

08 — ошибка определения размера памяти

09 — перемещен блок Extended Memory (INT 15h)

0A — JMP FAR [0^0647h ] без инициализации контроллера прерываний

0В — используется 80386

Биты 7:4 — дисковод А

Биты 3:0 — дисковод В

0= нет, 1 = 360 Кбайт, 2 = 1,2 Мбайт, 3 = 720 Кбайт, 4 = 1,44Мбайт

Зарезервирован

Биты 7:4 — привод 0

Биты 3:0 — привод 1

0 = нет, 1 — Eh = типы 1 — 14, Fh = тип в байте 19 h (для второго привода — в 1 Ah)

Зарезервирован

Биты 7:6 — количество НГМД (00 = 1, 01 = 2)

Биты 5:4 — тип первичного видеоадаптера (00 = RGA или VGA, 01 = CGA 40 столбцов, 10 = CGA 80 столбцов,

11 = MDA 80 столбцов)

Биты 3:2 — зарезервированы

Бит 1 = 1 — математический сопроцессор подключен

Бит 0 = 1 — есть НГМД

15 — 16h

Размер базовой памяти, Кбайт ( Low/High) 0280h = 640Кбайт

17 — 18h

Размер расширенной памяти, Кбайт ( Low/High)

19, 1Ah

Расширенный тип диска C, D

1B — 2Dh

Зарезервированы

2E — 2Fh

Контрольная сумма CMOS c 10h по 20 h (High/Low)

30n — 31h

Реальный размер расширенной памяти, Кбайт( Low/High)

32 — 33h

Используются в PS/2

Бит 7 — наличие 128 Кбайт ОЗУ под границей 1 Мбайт (1 = есть, теневая память доступна)

Бит 6 — флаг SetUp (1 = первая загрузка после выполнения флаг SetUp , обычно = 0)

34 — 3Fh

Зарезервированы ( можно писать свою информацию для привязки ПО к машине)

38 — 3Fh

В PS /2 — пароль, доступ по несуществующим адресам 78 -7 Fh

Cвободные ячейки CMOS RTC 34-3Fh иногда используют для привязки программного обеспечения к конкретному компьютеру, которая выполняется в процессе инсталляции ПО. В этом случае, если не сохранять образ CMOS-памяти на диске, то, при разрушении информации в CMOS, право на использование данного ПО в данном компьютере потеряется.

1. Как задавались параметры аппаратной конфигурации в РС/ХТ?

2. Где хранятся параметры конфигурации в РС\АТ?

3. Почему для CMOS RTC используются КМОП-структуры?

4. Как осуществляется доступ к ячейкам CMOS-памяти?

5. Как модифицируется содержимое CMOS-памяти?

6. Каким способом информация CMOS-памяти защищается от ошибок?

Знаете ли Вы, что, как и всякая идолопоклонническая религия, релятивизм представляет собой инструмент идеологического подчинения одних людей другим с помощью абсолютно бессовестной манипуляции их психикой для достижения интересов определенных групп людей, стоящих у руля этой воровской машины? Подробнее читайте в FAQ по эфирной физике.

Cmos системы и часы реального времени что это

В каждом компьютере есть микросхема, отвечающая за поддержку текущей даты и времени. Для того чтобы они не сбрасывались при каждом выключении питания, на микросхеме расположена небольшая область памяти (от 64 до 128 байт), выполненная по технологии CMOS, позволяющей снизить энергопотребление до минимума (фактически энергия в таких схемах затрачивается только на зарядку паразитных емкостей при изменении состояния ячеек памяти). Вся эта микросхема получает питание от аккумулятора, расположенного на материнской плате, и не отключается при. выключении компьютера. Для хранения собственно времени достаточно всего четырнадцати байт такой энергонезависимой памяти, и остальная ее часть используется BIOS для хранения различной информации, необходимой для корректного запуска компьютера. Для общения с CMOS и регистрами RTC выделяются порты ввода-вывода от 70h до 7Fh, но только назначение портов 70h и 71h одинаково для всех материнских плат:

порт 70h для записи : индекс для выбора регистра CMOS:

бит 7: прерывание NMI запрещено на время чтения/записи

бит 6: собственно индекс

порт 71h для чтения и записи : данные CMOS

После записи в порт 70h обязательно надо выполнить запись или чтение из порта 71h, иначе RTC окажется в неопределенном состоянии. Содержимое регистров CMOS варьируется для разных BIOS, но первые 33h регистра обычно выполняют следующие функции:

00h: RTC — текущая секунда (00 – 59h или 00 – 3Bh) — формат выбирается регистром 0Bh, по умолчанию — BCD

01h: RTC — секунды будильника (00 – 59h или 00 – 3Bh или FFh (любая секунда))

02h: RTC — текущая минута (00 – 59h или 00 – 3Bh)

03h: RTC — минуты будильника (00 – 59h или 00 – 3Bh или FFh)

04h: RTC — текущий час:

0 – 23h/00 – 17h (24-часовой режим)

1 – 12h/01 – 1Ch (12-часовой режим до полудня)

81h – 92h/81 – 8Ch (12-часовой режим после полудня)

05h: RTC — часы будильника (то же или FFh, если любой час)

06h: RTC — текущий день недели (1 – 7, 1 — воскресенье)

07h: RTC — текущий день месяца (01 – 31h/01h – 1Fh)

08h: RTC — текущий месяц (01 – 12h/01 – 0Ch)

09h: RTC — текущий год (00 – 99h/00 – 63h)

0Ah: RTC — регистр состояния А

бит 7: 1 — часы заняты (происходит обновление)

биты 4 – 6: делитель фазы (010 — 32 768 KHz — по умолчанию)

биты 3 – 0: выбор частоты периодического прерывания:

0011 — 122 микросекунды (минимум)

1111 — 500 миллисекунд

0110 — 976,562 микросекунды (1024 Hz)

0Bh: RTC — регистр состояния В

бит 7: запрещено обновление часов (устанавливают перед записью новых значений в регистры даты и часов)

бит 6: вызов периодического прерывания (IRQ8)

бит 5: вызов прерывания при срабатывании будильника

бит 4: вызов прерывания по окончании обновления времени

бит 3: включена генерация прямоугольных импульсов

бит 2: 1/0 — формат даты и времени двоичный/BCD

бит 1: 1/0 — 24-часовой/12-часовой режим

бит 0: автоматический переход на летнее время в апреле и октябре

0Ch только для чтения: RTC — регистр состояния С

бит 7: произошло прерывание

бит 6: разрешено периодическое прерывание

бит 5: разрешено прерывание от будильника

бит 4: разрешено прерывание по окончании обновления часов

0Dh только для чтения: регистр состояния D

бит 7: питание RTC/CMOS есть

0Eh: результат работы POST при последнем старте компьютера:

бит 7: RTC сбросились из-за отсутствия питания CMOS

бит 6: неверная контрольная сумма CMOS-конфигурации

бит 5: неверная конфигурация

бит 4: размер памяти не совпадает с записанным в конфигурации

бит 3: ошибка инициализации первого жесткого диска

бит 2: RTC-время установлено неверно (например, 30 февраля)

0Fh: состояние, в котором находился компьютер перед последней перезагрузкой

0Ah, 0Bh, 0Ch — jmp, iret, retf на адрес, хранящийся в 0040h:0067h

Другие значения указывают, что перезагрузка произошла в ходе POST или в других необычных условиях

10h: тип дисководов (биты 7 – 4 и 3 – 0 — типы первого и второго дисковода)

12h: тип жестких дисков (биты 7 – 4 и 3 – 0 — типы первого и второго жестких дисков, 1111, если номер типа больше 15)

14h: байт состояния оборудования

биты 7 – 6: число установленных жестких дисков минус один

биты 5 – 4: тип монитора (00, 01, 10, 11 — EGA/VGA, 40×25 CGA, 80×25 CGA, MDA)

бит 3: монитор присутствует

бит 2: клавиатура присутствует

бит 1: FPU присутствует

бит 0: дисковод присутствует

15h: младший байт размера базовой памяти в килобайтах (80h)

16h: старший байт размера базовой памяти в килобайтах (02h)

17h: младший байт размера дополнительной памяти (выше 1 Мб) в килобайтах

18h: старший байт размера дополнительной памяти (выше 1 Мб) в килобайтах

19h: тип первого жесткого диска, если больше 15

lAh: тип второго жесткого диска, если больше 15

2Eh: старший байт контрольной суммы регистров 10h – 2Dh

2Fh: младший байт контрольной суммы регистров 10h – 2Dh

30h: младший байт найденной при POST дополнительной памяти в килобайтах

31h: старший байт найденной при POST дополнительной памяти в килобайтах

32h: первые две цифры года в BCD-формате

Данные о конфигурации, хранящиеся в защищенной контрольной суммой области, бывают нужны достаточно редко, а для простых операций с часами реального времени и будильником удобно использовать прерывание BIOS 1Ah. Однако, программируя RTC на уровне портов, можно активизировать периодическое прерывание — режим, в котором RTC вызывает прерывание IRQ8 с заданной частотой, что позволит оставить IRQ0 для работы системы, если вас удовлетворяет ограниченный выбор частот периодического прерывания. В качестве примера посмотрим, как выполняются чтение и запись в CMOS-память.

; rtctime,asm ; Вывод на экран текущей даты и времени из RTC ; .model tiny .code .186 ; для shr al,4 org 100h ; СОМ-программа start: mov al,0Bh ; CMOS OBh - управляющий регистр В out 70h,al ; порт 70h - индекс CMOS in al,71h ; порт 71h - данные CMOS and al,11111011b ; обнулить бит 2 (форма чисел - BCD) out 71h,al ; и записать обратно mov al,32h ; CMOS 32h - две старшие цифры года call print_cmos ; вывод на экран mov al,9 ; CMOS 09h - две младшие цифры года call print_cmos mov al,'-' ; минус int 29h ; вывод на экран mov al,8 ; CMOS 08h - текущий месяц call print_cmos mov al,'-' ; еще один минус int 29h mov al,7 ; CMOS 07h - день call print_cmos mov al,' ' ; пробел int 29h mov al,4 ; CMOS 04h - час call print_cmos mov al,'h' ; буква "h" int 29h mov al,' ' ; пробел int 29h mov al,2 ; CMOS 02h - минута call print_cmos mov al,':' ; двоеточие int 29h mov al,0h ; CMOS 00h - секунда call print_cmos ret ; процедура print_cmos ; выводит на экран содержимое ячейки CMOS с номером в AL ; считает, что число, читаемое из CMOS, находится в формате BCD print_cmos proc near out 70h,al ; послать AL в индексный порт CMOS in al,71h ; прочитать данные push ax shr al,4 ; выделить старшие четыре бита add al,'0' ; добавить ASCII-код цифры 0 int 29h ; вывести на экран pop ax and al,0Fh ; выделить младшие четыре бита add al,30h ; добавить ASCII-код цифры 0 int 29h ; вывести на экран ret print_cmos endp end start

Кмоп память и часы реального времени (cmos Memory и rtc – Real Time Clock)([5], с.89)

В первых ПЭВМ (PC XT) конфигурация оборудования (объем памяти, количество дисководов и пр.) задавалась переключателями, состояние которых опрашивалось во время выполнения POST (Power On Self Test). В ПЭВМ, начиная сAT, для хранения подобной информации, состав которой расширился, ввели специальную микросхему КМОП памяти небольшого объема, питание которой осуществляется от батарейки. В эту же микросхему поместили и часы-календарь, также питающиеся от той же батарейки. Эта память и часы –CMOS Memory и Real Time Clock (RTC)– стали стандартным элементом архитектурыIBM совместимых ПЭВМ.

Содержимое этой памяти и дату сначала модифицировали с помощью внешней загружаемой утилиты SETUP, а позже эту утилиту встроили вBIOS. МикросхемыCMOS RTCимеют встроенную систему контроля питания, отслеживающую и разряд батареи ниже допустимого уровня. Достоверность информации конфигурирования проверяется с помощью контрольной суммы.

Доступ к ячейкам CMOS RTCосуществляется через порты ввода-вывода070h – адрес (индекс) ячейки в пределахCMOSи 071h– данные. Поскольку эта память имеет низкое быстродействие (порядка единиц микросекунд), между командами записи адреса (в порт 070h)и чтения-записи данных необходима программная задержка.

Назначение ячеек CMOS RTCприведено в табл.8. (Запоминать таблицу нет необходимости, но при ответе на билет желательно помнить основные ее разделы –ВВС).

Можно отметить, что первоначально под изображение года в дате отводился только байт 09 (в нем можно было записать только две младшие цифры года), а старшие всегда считались 19. Позже (уже в 386 и 486 машинах) добавили еще один байт для века (32hили37h). Однако, в раде моделей он автоматически не инкрементируется таймером. Кроме того не во всехBIOSбыл правильный календарь наXXIвек. (Все это было связано с известной“проблемой 2000 года”Y2K).

Таблица 8. Стандартное назначение ячеек CMOS RTC

Ячейки RTC в двоично-десятичной кодировке

01 – секунды будильника

Cmos системы и часы реального времени что это

Аналогично, для записи значения в регистр часов требуется занести адрес модифицируемого регистра в порт 70h, после чего вывести в порт 71h записываемое значение. Например:

mov al,0 ; Записать адрес регистра out 70h,al jmp short $+2 mov al,20h ; Занести новое значение out 71h,al

Следует отметить, что чтение и запись данных порта 71h должны выполняться немедленно после записи номера регистра в порт 70h. Кроме того, в процессе операций ввода-вывода с регистрами часов должны быть запрещены прерывания, что позволит избежать модификации порта 70h процедурой обработки прерывания до чтения или записи данных.
Адресация регистров часов приведена в таблице:

Адрес регистра Назначение регистра
00h Секунды
01h Секунды для будильника
02h Минуты
03h Минуты для будильника
04h Часы
05h Часы для будильника
06h День недели
07h Дата
08h Месяц
09h Год
0Ah Регистр состояния 1
0Bh Регистр состояния 2
0Ch Регистр состояния 3
0Dh Регистр состояния 4
32h Столетие

Регистры времени 00h-09h и 32h содержат время в двоично-десятичном формате (например, дата 26 хранится в виде 26h). Столетие задастся в виде первых двух цифр полного номера года (например, 19h). На машинах PS/2 байт столетия расположен по адресу 37h.
Регистр состояния 1 имеет следующий формат:

7 6 5 4 3 2 1 0
UIP DV RS

Бит UIP определяет момент обновления показаний часов и может быть установлен в 0 — часы доступны для чтения или — 1 — аппаратура выполняет обновление показаний часов. Для правильного чтения или записи значений часов эти операции необходимо выполнять, когда значение бита UIP равно 0.
Биты DV задают значение частоты для обновления показаний часов. Для правильного функционирования часов данные питы должны быть установлены в значение 010, что соответствует частоте 32.768 Кгц. Это единственная частота, обеспечивающая правильное время в часах.
Биты RS позволяют выбрать делитель выходной частоты. Для правильного функционирования эти биты должны быть усыновлены в значение 0110, что соответствует выходной частоте прямоугольных колебаний 1.024 Кгц и интервалу времени между периодическими прерываниями 976.562 мкс.
Формат регистра состояния 2 приведен ниже:

7 6 5 4 3 2 1 0
UPD PIE AIE UIE SQWE DM CF DSE

Бит UPD используется для обновления показания часов. Когда он устанавливается в 1, внутренний цикл обновления часов прекращается, и программа может инициализировать любой регистр часов. Для запуска часов надо установить этот бит в 0.
Бит PIE управляет генерацией периодических прерываний t интервалом 976.562 мкс. Когда он установлен в 0, прерывания запрещены. При установке этого бита в 1, периодические прерывания разрешены.
Аналогично, бит AIE задает, разрешены ли прерывания от будильника, а бит UIE разрешает или запрещает прерывания при завершении цикла обновления показаний часов.
Бит SQWE разрешает или запрещает генерацию прямоугольных колебаний (см. биты RS в регистре состояния 1). Функция генерации прямоугольных колебаний не используется в компьютере и бит устанавливается в 0.
DM определяет формат времени и даты. Если этот бит установлен в 0, то используется двоично-десятичный формат. При единичном значении бита данные представляются в двоичном виде. Для IBM PC этот бит установлен в 0.
Бит CF задаст формат представления времени. Значение О указывает, что используется 12-ти часовой формат, а значение 1 — 24-х часовой формат. В компьютерах IBM PC используется 24-х часовой формат.
Бит DSE установлен в 1, если в часы заносится летнее время и программы, пользующиеся показаниями часов, осуществляют пересчет времени. Обычно эта функция не используется, и бит установлен в 0.
Регистр состояния 3 доступен только по чтению. Он содержит текущий статус прерывания от часов и имеет следующий формат:

7 6 5 4 3 2 1 0
INT PI AI UI Резерв

Бит INT указывает на наличие прерывания (0 — нет прерывания, 1 — выработано прерывание).
Биты PI, АI и UI уточняют тип прерывания, выработанного часами. Единичное значение бита PI указывает, что выработано периодическое прерывание. Аналогично, единичное значение бита AI сигнализирует о генерации прерывания от будильника, а бита UI — прерывания об окончании обновления показаний часов.
Обработчик прерывания по линии IRQ8 должен прочитать регистр состояния 3. Иначе, следующее прерывание не будет выработано.
Регистр состояния 4 доступен только по чтению и имеет следующий формат:

7 6 5 4 3 2 1 0
VRB Резерв

В этом регистре состояния задействован только бит VRB который сигнализирует о состоянии аккумуляторной батареи. Единичное значение говорит о нормальном питании. Нулевое значение указывает, что батарея разряжена и данные в часах недостоверны.

Программирование часов

  • самая простая функция часов — это установка и чтение времени. Чтение времени необходимо производить только между интервалами обновления часов, т.е. когда бит UIP в регистре состояния 1 равен 0. Установку времени и даты лучше выполнять, запретив сначала работу часов, т. с. установив в регистре состояния 2 единичное значение бита UPD . При этом часы останавливаются. После этого можно загрузить все значения в часы и выполнить в необходимый момент их пуск, установив бит UPD в нулевое значение. Следует отметить, что Стандартные функции BIOS не позволяют установить значение в поле «день недели». Поэтому, обычно, это значение часов недостоверно;
  • функция будильника позволяет вырабатывать прерывание при совпадении значений часов и будильника. Запись значения будильника можно производить только между интервалами обновления часов, т. е. когда бит UIP в регистре состояния 1 равен 0. Для получения прерывания от будильника необходимо разрешить генерацию этого , прерывания, установив единичное значение бита AIE в регистре состояния 2. При возникновении этого прерывания устанавливается в единичное значение бит AI регистра состояния 3;
  • средства часов реального времени позволяют генерировать периодические прерывания с интервалом 976.562 мкс. Для разрешения этого прерывания необходимо установить в 1 бит PIE регистра состояния 2. При возникновении прерывания устанавливается в единичное значение бит PI в регистре состояния 3;
  • прерывание по окончании цикла обновления часов вырабатывается каждую секунду при продвижении значения часов. Обычно это прерывание не используется для программирования. Для разрешения этого прерывания необходимо установить бит UIE регистра состояния 2 в единичное значение. При возникновении прерывания устанавливается в единичное значение бит UI регистра состояния 3.
Прочитать показания часов реального времени На входе: AH = 02h. На выходе: CH = часы в BCD-формате (например,13h означает 13 часов); CL = минуты в BCD-формате; DH = секунды в BCD-формате; CF = CY = 1, если часы реального времени не установлены. Установить часы реального времени На входе: AH = 03h; CH = часы в BCD-формате (например,13h означает 13 часов); CL = минуты в BCD-формате; DH = секунды в BCD-формате; DL = 1, если необходимо использовать летнее время На выходе: не используются. Прочитать дату из часов реального времени На входе: AH = 04h. На выходе: CH = столетие в BCD-формате ; CL = год в BCD-формате (например, CX=1991h означает 1991 год); DH = месяц в BCD-формате; DL = число в BCD-формате; CF = CY = 1, если часы реального времени не установлены. Установить дату в часах реального времени На входе: AH = 05h; CH = столетие в BCD-формате ; CL = год в BCD-формате (например, CX=1991h означает 1991 год); DH = месяц в BCD-формате; DL = число в BCD-формате; На выходе: не используются. Установить будильник На входе: AH = 06h; CH = часы в BCD-формате; CL = минуты в BCD-формате; DH = секунды в BCD-формате. На выходе: CF = CY = 1, если часы реального времени не установлены.

Эта функция позволяет установить будильник на заданное время. Когда будильник «зазвенит», будет вызвано прерывание INT 4Ah (это прерывание вызывают модули BIOS после прихода аппаратного прерывания от часов реального времени IRQ8, т.е. прерывания с номером 70h). Программа, использующая функцию будильника, должна подготовить обработчик прерывания INT 4Ah, завершающий свою работу выполнением команды IRET. Программа может установить только один будильник.
Сброс будильника
На входе: AH = 07h.
На выходе: не используются.
Эта функция позволяет сбросить будильник, например, для того чтобы установить его заново на другое время.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *