Засоби BIOS для роботи з годинником реального часу

Для роботи з годинником реального часу BIOS має шість функцій перериван-

ня 1Ah.

Прочитати показники годинника:

Вхід: AH = 02h

Вихід: CH – години у BCD форматі; CL – хвилини у BCD форматі;

DH – секунди у BCD форматі;

CF = 1, якщо годинник реального часу не встановлений. Встановити годинник:

Вхід: AH = 03h

CH – години у BCD форматі;

CL – хвилини у BCD форматі;

DH – секунди у BCD форматі;

DL = 1, якщо необхдно використовувати літній час. Прочитати дату з годинника:

Вхід: AH = 04h

Вихід: CH – століття у BCD форматі;

CL – рік у BCD форматі;

DH – місяць у BCD форматі;

DL – число у BCD форматі;

CF = 1, якщо годинник реального часу не встановлений. Встановити дату:

Вхід: AH = 05h

CH – століття у BCD форматі;

CL – рік у BCD форматі;

DH – місяць у BCD форматі;

DL – число у BCD форматі; Встановити будильник:

Вхід: AH = 06h

CH – години у BCD форматі;

CL – хвилини у BCD форматі;

DH – секунди у BCD форматі;

DL = 1, якщо необхдно використовувати літній час. Вихід: CF = 1, якщо годинник реального часу не встановлений. Скинути будильник:

Вхід: AH = 07h

Коли будильник, встановлений функцією 06h, “продзвенить”, буде виклика-

ний обробник переривання 4Ah. Програмі дозволяється становлювати лише один будильник.

 

 

МЕТОДИЧНІ ВКАЗІВКИ

 

 

В даній роботі пропонується дослідити і протестувати декілька програм, які читають показники годинника реального часу.

 


Для виконання роботи необхідні грунтовні знання архітектури та принципів функціонування годинника реального часу, а також знання призначення та способів використання обробників переривань.

 

 

ЛІТЕРАТУРА

 

 

1. Гук М. Аппаратные средства IBM PC. Энциклопедия. – СПб.: “Издательс-

тво Питер”, 1999. – 816 с.

2. Гуржій А. М., Коряк С. Ф., Самсонов В. В., Скляров О. Я. Архітектура, принципи функціонування і керування ресурсами IBM PC: Навч. посібник. Харків: ТОВ. “Компанія СМІТ”, 2003. – 512 с.

3. Зубков С. В. Ассемблер для DOS, Windows и Unix. – М.: ДМК, 1999. –

640 с.

4. Фролов А. В., Фролов Г. В. Аппаратное обеспечение персонального ком-

пьютера. – М.: ДИАЛОГ МИФИ, 1997. – 304 с.

 

 

ЗАВДАННЯ

 

 

1. Дослідити програму clock, яка читає показники годинника реального часу, виводить їх на екран, а також надає можливість прочитати та вивести на екран дисплея вміст вказаного користувачем регістра КМОН-пам’яті.

2. За текстом програми нарисувати схему алгоритму.

3. На вінчестері створити каталог CMOS.

4. За допомогою редактора середовища програмування Borland C++ 3.1 створити символьний файл тексту вивченої програми і записати його в каталог CMOS.

5. Виконати налагодження програми та запустити її на виконання.

6. Прочитати вміст усіх регістрів КМОН-пам’яті та записати у таблицю в наступному форматі:

 

 

Номер регістра Вміст Розшифрування вмісту регістра
07h   Дата (поточне число місяця – 27)
08h   Дата (поточний місяць року 2 – лютий)

 

7. Змінити програму так, щоб на екран дисплея видати за один перегляд вміст усіх регістрів від 00h до 3Fh та виконати пункти 2 – 6.

8. Дослідити програм int1A, яка читає показники годинника реального часу, виводить їх на екран, а також надає можливість змінити показники годинника.

9. За текстом програми нарисувати схему алгоритму.

10. За допомогою редактора середовища програмування Borland C++ 3.1

створити символьний файл тексту вивченої програми і записати його в каталог

CMOS.

11. Виконати налагодження програми та запустити її на виконання.

12. За аналогією розробити програмні модулі, які дозволяють крім читання та зміни часу, прочитати і встановити дату. Для цього використовувати функції 04h

 

 


та 05h перериванн 1Ah.

13. Порівняти програми clock та int1A в частині реалізації функцій читання та запису регістрів RTC.

14. Зробити висновки.

 

 

ТЕКСТИ ПРОГРАМ

 

 

// clock

#include <dos.h>

#include <bios.h>

#include <conio.h>

#include <stdio.h>

 

void main (void)

{

int nreg;

 

clrscr ();

 

outportb (0x70, 4);

printf (“Години: %x\n”, inportb (0x71));

 

outportb (0x70, 2);

printf (“Хвилини: %x\n”, inportb (0x71));

 

outportb (0x70, 0);

printf (“Секунди: %x\n”, inportb (0x71));

 

puts (“Вкажіть номер регістра: ”);

scanf (“%d”, &nreg);

 

outportb (0x70, nreg);

printf (“Значення: %x\n”, inportb (0x71));

}

 

// int1A

#include <dos.h>

#include <bios.h>

#include <conio.h>

#include <stdio.h>

 

unsigned char sec, min, hor;

 

void GetSystemTime (void)

{

asm {

  mov ah, 0x02
int 0x1A  
mov hor, ch
mov min, cl
mov sec, dh
}      

 

 


}

 

void main (void)

{

 

clrscr (); GetSystemTime ();

 

printf (“Показники годинника до встановлення\n”);

printf (“Години: %x\n”, hor);

printf (“Хвилини: %x\n”, min);

printf (“Секунди: %x\n”, sec);

 

while (1) {

puts (“Встановити годинник реального часу (y/n)?”);

if (getch () == „n‟) break;

 

printf (“Години: ”); scanf (“%x”, &hor); printf (“Хвилини: ”); scanf (“%x”, &min); printf (“Секунди: ”); scanf (“%x”, &sec);

 

asm {

mov ah, 0x03 mov ch, hor mov cl, min mov dh, sec mov dl, 0x01 int 0x1A

}

 

GetSystemTime ();

 

printf (“Показники годинника після встановлення\n”);

printf (“Години: %x\n”, hor); printf (“Хвилини: %x\n”, min); printf (“Секунди: %x\n”, sec);

}

}

 

КОНТРОЛЬНІ ЗАПИТАННЯ

 

 

1. Призначення годинника реального часу в обчислювальній системі. Мож-

ливі галузі застосування.

2. Скільки незалежних програмованих джерел маскованих переривань про-

цесора зебезпечує MC 146818?

3. Які порти вводу/виводу використовуються для читання і запису даних у регістри RTC та які команди при цьому використовуються?

4. Назвіть шість функцій переривання 1Ah, призначених для роботи з

 

 


годинником реального часу.

5. Наведіть формати виклику функцій переривання 1Ah.

 

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: