Будильник
Нужно сделать лабораторную. На ассемблере.
Написать программу установки времени срабатывания “будильника” RTC и разрешения прерывания от него.
Спасибо.
Да... пояснения были бы супер....
Мои мысли и собранная информация:
Имеем RTC и Контроллер прерываний2 – INTC2,
Часы реального времени вырабатывают аппаратное прерывание IRQ8, которому соответствует прерывание с номером 70h. Это прерывание может вырабатываться по трем причинам:
прерывание по окончанию изменения данных. Вырабатывается при установленном бите 4 регистра состояния B после каждого обновления регистров часов;
прерывание будильника. Вырабатывается при совпадении регистров часов и регистров будильника и при установленном бите 5 регистра состояний B;
периодическое прерывание. Вырабатывается с интервалом примерно 1 мс при установленном бите 6 регистра состояний B.
При срабатывании будильника BIOS вырабатывает прерывание INT 4Ah. Программа может подготовить собственный обработчик для этого прерывания.
Для работы с часами реального времени вы можете обращаться непосредственно к перечисленным выше ячейкам памяти CMOS, используя порты 70h и 71h. Однако лучше всего воспользоваться функциями 2 - 7 прерывания INT 1Ah
(взято от сюда http://olddos.narod.ru/doc/comp/bsp/v33/ch4.htm)
мысли:
1. надо разрешить будильник (Адресное пространство, выделяемое второму контроллеру прерываний – 0А0h-0ВFh. Адреса, реально используемые контроллером–
0А0h-0А1h. Вместе с этим изменился адрес регистра NMI – для разрешения или запрета немаскируемых прерываний используется запись бита 7 по
адресу 70h. 1 в этом бите запрещает поступление сигнала NMI напроцессор, 0 - разрешает)
2. надо записать будильник в регистры:
01H Секундная тревога
03H Минутная тревога
05H Часовая тревога
3. надо как то показать срабатывание будильника (например сигнал BEEP)
Это всё что мне удалось найти.... програмировать на асме я не умею (да уже и не хочу) а здавать экзамен надо :(
Помогите если кому не трудно...
Сасибо.