Скачиваний:
7
Добавлен:
04.11.2020
Размер:
2.84 Кб
Скачать
/*******************************************************************/
/* программа  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);
}/**************** КОНЕЦ ПРОГРАММЫ **************/
Соседние файлы в папке Всякие лабы