Добавил:
anersisyan1999
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Всякие лабы / 4_Timer
.cpp/*******************************************************************/
/* программа TIMER1.C для иллюстрации возможности использования */
/* таймера при организации измерительно-вычислительного комплекса */
/* 6.02.95 */
/*******************************************************************/
#include "stdio.h"
#include "conio.h"
#include "dos.h"
struct time t1; // Описание структуры для хранения времени
void gtime(struct time t) //Функция получения времени
{
union REGS in. out;
in.h.ah=0x2c;
in86(0x21,&in,&out);
t->ti_hour=out.h.ch;
t->ti_min=out.h.cl;
t->ti_sec=out.h.dh;
t->ti_hund=out.h.dl;
}
void stime(struct time t)//Функция изменения времени
{
union REGS in, out;
in.h.ah=0x2d;
in.h.ch=t->ti_hour;
in.h.cl=t->ti_min;
in.h.dh=t->ti_sec;
in.h.dl=t->ti_hund;
int86(0x21, &in, &out);
if(out.h.al!=0) printf("Время не действительно");
}
/************ ФУНКЦИЯ ИЗМЕРЕНИЕ ************/
void IZMERENIE(int izm) /* имитирует измерение */
{
gotoxy(58,4);
printf("%2d:%2d:%2d,%2d", t1.ti_hour, t1.ti_min, t1.ti_sec, t1.ti_hund);
gotoxy(17,15);
printf("ВНИМАНИЕ ! ИДЕТ ИЗМЕРЕНИЕ ! ШАГ = %2d",izm);
}
/************ ОСНОВНАЯ ПРОГРАММА ***********/
void main(void)
{int i,j,izm,kvo_izm,tim_izm, tim_izm_min,tm[101];
struct time t_saved_state;
gtime(&t_saved_state);
clrscr(); /* очистка экрана */
printf("введите количество измерений ( <=100 ) - ");
scanf("%d",&kvo_izm);
printf("введите интервал между измерениями в минутах ( <=60 ) - ");
scanf("%d",&tim_izm_min);
printf("введите интервал между измерениями в секундах ( <=60 ) - ");
scanf("%d",&tim_izm);
/* заполнение массива моментов измерения */
for(izm=0;izm<kvo_izm;izm++) tm[izm]=(izm*tim_izm+60*tim_izm_min)%60;
gettime(&t1); /* считывание системной даты */
printf("исходное время %2d:%2d:%2d,%2d\n",
t1.ti_hour, t1.ti_min, t1.ti_sec, t1.ti_hund);
t1.ti_hour=0; /* обнуление счетчиков системной даты */
t1.ti_min =0;
t1.ti_sec =0;
t1.ti_hund=0;
settime(&t1); /* установка нулевой системной даты */
printf("начало измерения %2d:%2d:%2d,%2d\n",
t1.ti_hour, t1.ti_min, t1.ti_sec, t1.ti_hund);
gotoxy(40,4);printf("текущее время ");
for(izm=0;izm<kvo_izm;izm++) /* цикл по количеству измерений */
{
for(i=0;i<30000;i++) /* задержка до момента измерения */
{
gettime(&t1);
if(t1.ti_sec==tm[izm])
{ /* если момент измерения наступил, то
очищаем экран и выходим из цикла */
gotoxy(17,15);
printf(" ");
break;
}
}
IZMERENIE(izm); /* вызов функции, имитирующей измерение */
}
stime(&t_saved_state);
}/**************** КОНЕЦ ПРОГРАММЫ **************/
Соседние файлы в папке Всякие лабы