ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ
4. ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ
4.1. Прочитать показания часов реального времени
4.2. Установить часы реального времени
4.3. Прочитать дату из часов реального времени
4.4. Установить дату в часах реального времени
4.5. Установить будильник
4.6. Сброс будильника
4.7. Использование часов реального времени
Компьютеры IBM AT и PS/2 оснащены часами реального времени. Эти часы питаются от аккумулятора, поэтому их показания не пропадают при выключении компьютера.
Доступ к часам реального времени возможен либо через ячейки КМОП-памяти, либо через специальные функции BIOS (что более предпочтительно с точки зрения независимости работы программы от особенностей аппаратуры).
Использование регистров КМОП-памяти часами реального времени приведено в таблице:
Регистр | Назначение |
0 | счетчик секунд |
1 | регистр секунд будильника |
2 | счетчик минут |
3 | регистр минут будильника |
4 | счетчик часов |
5 | регистр часов будильника |
6 | счетчик дней недели (1 - воскресенье) |
7 | счетчик дней месяца |
8 | счетчик месяцев |
9 | счетчик лет (последние две цифры текущего года) |
- 0aH регистр состояния A
- 0bH регистр состояния B
Часы реального времени вырабатывают аппаратное прерывание IRQ8, которому соответствует прерывание с номером 70h. Это прерывание может вырабатываться по трем причинам:
- Прерывание по окончанию изменения данных. Вырабатывается при установленном в 1 бите 4 регистра состояния B после каждого обновления регистров часов.
- Прерывание будильника вырабатывается при совпадении регистров часов и регистров будильника и при установленном в 1 бите 5 регистра состояний B.
- Периодическое прерывание вырабатывается с интервалом примерно 1 миллисекунда при установленном в 1 бите 6 регистра состояний B.
При срабатывании будильника BIOS вырабатывает прерывание INT 4Ah. Программа может подготовить собственный обработчик для этого прерывания.
Для работы с часами реального времени вы можете обращаться непосредственно к перечисленным выше ячейкам КМОП-памяти, используя порты 70h и 71h. Однако лучше всего воспользоваться функциями 2 - 7 прерывания 1Ah, описанными ниже.