Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Аппаратное обеспечение IBM PC

© Александр Фролов, Григорий Фролов
Том 2, книга 1, М.: Диалог-МИФИ, 1992.

[Назад] [Содеожание] [Дальше]

4. ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ

Компьютеры IBM AT и PS/2 оснащены часами реального времени. Эти часы питаются от аккумулятора, поэтому их показания не пропадают при выключении компьютера.

Доступ к часам реального времени возможен либо через ячейки КМОП-памяти, либо через специальные функции BIOS (что более предпочтительно с точки зрения независимости работы программы от особенностей аппаратуры).

Использование регистров КМОП-памяти часами реального времени приведено в таблице:

Регистр Назначение
0 счетчик секунд
1 регистр секунд будильника
2 счетчик минут
3 регистр минут будильника
4 счетчик часов
5 регистр часов будильника
6 счетчик дней недели (1 - воскресенье)
7 счетчик дней месяца
8 счетчик месяцев
9 счетчик лет (последние две цифры текущего года)
  • 0aH регистр состояния A
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 означает готовность
                           данных для чтения.




  • 0bH регистр состояния B
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. Это прерывание может вырабатываться по трем причинам:

  • Прерывание по окончанию изменения данных. Вырабатывается при установленном в 1 бите 4 регистра состояния B после каждого обновления регистров часов.
  • Прерывание будильника вырабатывается при совпадении регистров часов и регистров будильника и при установленном в 1 бите 5 регистра состояний B.
  • Периодическое прерывание вырабатывается с интервалом примерно 1 миллисекунда при установленном в 1 бите 6 регистра состояний B.

При срабатывании будильника BIOS вырабатывает прерывание INT 4Ah. Программа может подготовить собственный обработчик для этого прерывания.

Для работы с часами реального времени вы можете обращаться непосредственно к перечисленным выше ячейкам КМОП-памяти, используя порты 70h и 71h. Однако лучше всего воспользоваться функциями 2 - 7 прерывания 1Ah, описанными ниже.

[Назад] [Содеожание] [Дальше]