ФЭНДОМ


Описание

CMOS - Complementary Metal-Oxide Semiconductor - микросхемы, базирующиеся на комплементарном металлоксидном полупроводнике. Отличаются очень низкой энергопотребляемостью.

Данная микросхема предназначена в комьютере для хранения информации о текущей дате и времени. Для того, чтобы данные не сбрасывались при каждом отключении питания, используется именно CMOS-память, в которой основная потеря энергии возникает, в основном, на зарядку паразитных ёмкостей переходов при изменении содержимого. Величина такой памяти варьируется от 64 до 128 байт(есть данные и о 256 Байт и 512 Байт). Для поддержания постоянного питания микросхемы на материнской плате компьютера размещается батарейка-аккумулятор.

Реально для хранения даты и времени используется 14 байт, остальная память используется BIOS для хранения необходимых данных.

Для изменения информации о дате и времени используется контроллер RTC (часы реального времени).

Порты

Для работы с CMOS-памятью доступны порты 0x70-0x7f, реально же из них используются лишь два основных:

  • Порт 0x70 (W) - индекс выбора регистра CMOS.
    • бит 7 - на время чтения/записи данных отключается NMI.
    • биты 6-0 - индекс регистра.
  • Порт 0x71 (R/W) - порт данных.

После записи в порт 0x70 в обязательном порядке следует осуществить запись или чтение порта 0x71, иначе RTC окажется в неопределённом состоянии.

0x72-0x73 предназначены для следующих 128Байт CMOS при их наличии. 0x74-0x75 и тд. Причем первые 14Байт во всех блоках дублируется.

Функции

Считывание значений

int GetCMOSValue(int registerno)   
{   
    outportb(0x70,registerno); //Сообщает чипу какой регистр читать   
    return inportb(0x71); //Читает его   
}

Запись значений

void SetCMOSValue(int registerno, int value)
{ 
    outportb(0x70,registerno); //Сообщает чипу в какой регистр записать
    outportb(0x71,value); //Записывает в него
}