Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Belenko.doc
Скачиваний:
3
Добавлен:
28.10.2018
Размер:
193.02 Кб
Скачать

5.Підсистеми ibm pc для тимчасових операцій. Апаратне переривання 8h і його розширення 1Ch.

Программируемое время в компьютере хранится в 2-х адресных пространствах:

1. CMOS (Complementary Metal-Oxide Semiconductor) или КМОП (расширение BIOS) — RTC (Real Time Clock) – здесь хранятся часы реального времени, питается от батарейки. CMOS-микросхема с малым потреблением энергии;

2. Ячейка памяти 46Сh – здесь хранятся часы времени суток, поступает информация от микросхемы таймера.

Оба эти времени можно программировать с целью:

  1. Вывод текущего времени

  2. Организовать временные задержки выполнения программ

  3. Создание резидентных программ

  4. получить время вып-я проги

  5. созд. Cис-м типа «буд-ник»

Ячейка памяти 46Сh заполняется после включения компьютера программным средством прерывания 8h. Таймер связан с генератором линейных импульсов, который дает сигналы. Регистр-задвижка по умолчанию содержит число 65536. Контроллер аппаратных прерываний подает сигнал МП. Система делит 1196 (частоту генератора) на это число и получает число раз в сек. (18,2). 18,2 раза в сек МП обращается к вектору прерываний 8h и блокирует работу всех устройств компьютера и выполнение всех его программ путем установки IF=0. Далее 8h – к прерыванию 1Сh. 1Сh выполняет единственную команду IRET (Interrupt Return – возврат из прерывания) В ячейку памяти 0040:6Сh поступают сигналы, которые наз. «тики».

Чтение часов времени суток осуществляется функцией 00h прерывания INT 1Аh. Эта функция возвращает значение ячейки 46Сh в регистр DХ – младшая часть (сек), в СХ – старшая часть.

Команда МП int 8h поступает в МП от контроллера аппаратных прерываний через 2 линии:

IRET-выход из прерывания . Сброс контроллера необходим если подготовлен собственный разработчик int 8h.

Порт контроллера аппаратных прерываний – порт №20. 20h-код разрешения на доступ к порту .

Во время прерывания INT 1Ch все аппаратные прерывания запрещены, т.к. INT 1Ch вызывается int 8h до сброса контроллера прерываний.

Пример макроса для организации временных задержек:

Timer46Ch macro Sleep | PUSH BX, CX

MOV AH, 00h | INT 1Ah

ADD DX, 18*Sleep | MOV BX, DX Repeat:

INT 1Ah, DX | CMP DX, BX

JNE Repeat | POP CX, BX endm

7. Виведення на екран системного часу з Cmos-мікросхеми.

Вся временная информация в CMOS хранится в формате BCD чисел. BCD – это числа десятичной системы 0..9, но записанные в двоичном формате. Бывают упакованными или распакованными. Но и тот и другой формат должен содержать каждую цифру в четырех битах. Упакованный формат – это когда в одном байте можно поместить числа от 0 то 99. Каждая цифра должна занимать свой полубайт. Распакованный формат – когда в каждом байте от 0 до 9.

Вывод на экран системного времени из CMOS-микросхемы осуществляется через функцию 2h прерывания 1Аh.

mov AH,2h int 1Ah

Рез: СH-часы;СL-минуты;DH-секунды.

Пример:

DataSeg Segment PUBLIC ‘data’

Rez db ‘Time Courant:’

Time db 0,0,’:’,0,0, ’:’,0,0,13,10,’$’

CodeSeg Segment

Public

TimerCmos PROC

push ax bx cx dx

T: mov AH, 02h

Int 1Ah

Mov AL, CH

TimerBCD Time, 0

Mov AL,CL

TimerBCD Time, 3

Mov AL,DH

TimerBCD Time, 6

Mov AH,09h

Mov DX,offset Rez

Int 21h

clrScr 0

Jmp T

Stop

Pop dx cx bx ax

Ret

TimerCmos Endp

MyMacro.mac

TimeBCD Macro Addr offs

Push CX AX

AND AL, 0Fh

Add AL, 30h

Mov Addr+offs+1, AL

POP AX

Mov CL,4

Shr AL, CL

AND AL, 0Fh

Add AL, 48

Mov Addr+offs+0,AL

POP CX

Endp

Прерывание 1Ah позваляет также вывести текущий день месяц и год через ф-ю 4h

mov AH,4h int 1Ah

Результат: DL-день недели;DH-месяц; СL- год;СH- век,CF=0 (ошибка).

С помощью функции 03h можно установить время Cmos –микросхемы.

mov AH,03h

mov СH,час

mov СL,минуты

mov DH,секунды

mov DL,1

int 1Ah

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]