Аппаратное обеспечение IBM PC© Александр Фролов, Григорий ФроловТом 2, книга 1, М.: Диалог-МИФИ, 1992. 4. ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ
Компьютеры IBM AT и PS/2 оснащены часами реального времени. Эти часы питаются от аккумулятора, поэтому их показания не пропадают при выключении компьютера. Доступ к часам реального времени возможен либо через ячейки КМОП-памяти, либо через специальные функции BIOS (что более предпочтительно с точки зрения независимости работы программы от особенностей аппаратуры). Использование регистров КМОП-памяти часами реального времени приведено в таблице:
7 6 5 4 3 2 1 0
T-T-T-T-T-T-T-¬
¦ ¦ ¦ ¦
LT+T+-+T+T+-+-+T-
¦ L=T=- L=====¦= переключатель скорости (установлен в 0110)
¦ L=========== 22-разрядный делитель (установлен в 010)
L=============== Флаг обновления, 0 означает готовность
данных для чтения.
7 6 5 4 3 2 1 0
T-T-T-T-T-T-T-¬
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
LT+T+T+T+T+T+T+T-
¦ ¦ ¦ ¦ ¦ ¦ ¦ L= 1 - использование летнего времени
¦ ¦ ¦ ¦ ¦ ¦ ¦ (daylight savings enable);
¦ ¦ ¦ ¦ ¦ ¦ ¦ 0 - стандартное время (установлен в 0)
¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦ ¦ L=== 12 или 24-часовой режим. 0 - 12-часовой
¦ ¦ ¦ ¦ ¦ ¦ режим (установлен в 1)
¦ ¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ ¦ L===== режим данных BCD. 1 - двоичный, 0 - BCD.
¦ ¦ ¦ ¦ ¦ (установлен в 0)
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ L======= разрешение прямоугольной волны.
¦ ¦ ¦ ¦ 1 - включение прямоугольной волны.
¦ ¦ ¦ ¦ (установлен в 0)
¦ ¦ ¦ ¦
¦ ¦ ¦ L========= разрешение прерывания по окончанию
¦ ¦ ¦ изменения данных (установлен в 0)
¦ ¦ ¦
¦ ¦ L=========== разрешение прерывания будильника
¦ ¦ (установлен в 0)
¦ ¦
¦ L============= разрешение периодических прерываний
¦ (установлен в 0)
¦
L=============== флаг обновления, 0 означает готовность
данных для чтения КМОП-памяти.
0cH регистр состояния C.
Биты состояния прерывания, их можно только читать.
0dH регистр состояния D.
Если бит 7 равен 0, это означает, что разрядился
аккумулятор, питающий КМОП-память.
Часы реального времени вырабатывают аппаратное прерывание IRQ8, которому соответствует прерывание с номером 70h. Это прерывание может вырабатываться по трем причинам:
При срабатывании будильника BIOS вырабатывает прерывание INT 4Ah. Программа может подготовить собственный обработчик для этого прерывания. Для работы с часами реального времени вы можете обращаться непосредственно к перечисленным выше ячейкам КМОП-памяти, используя порты 70h и 71h. Однако лучше всего воспользоваться функциями 2 - 7 прерывания 1Ah, описанными ниже. |

