Àïïàðàòíîå îáåñïå÷åíèå ïåðñîíàëüíîãî êîìïüþòåðà

           

Ïðîãðàììà RTCALARM - ÷àñòü 4


  BEEP();

}

/**

*.Name         timer

*.Title        Ðàáîòà ñ ÷àñàìè ðåàëüíîãî âðåìåíè

*

*.Descr        Ýòà ôóíêöèÿ ïðåäíàçíà÷åíà äëÿ îáñëóæèâàíèÿ

*              ñèñòåìíûõ ÷àñîâ ðåàëüíîãî âðåìåíè ÷åðåç

*              ïðåðûâàíèå INT 1Ah

*

*.Proto        int timer(char fn, SYSTIMER *tm)

*

*.Params       char     fn - âûïîëíÿåìàÿ ôóíêöèÿ:

*

*              RTC_GET_TIME      - ïðî÷èòàòü ïîêàçàíèÿ ÷àñîâ;

*              RTC_SET_TIME      - óñòàíîâèòü ÷àñû;

*              RTC_GET_DATE      - ïðî÷èòàòü äàòó;

*              RTC_SET_DATE      - óñòàíîâèòü äàòó;

*              RTC_SET_ALARM     - óñòàíîâèòü áóäèëüíèê;

*              RTC_CLEAR_ALARM   - ñáðîñèòü áóäèëüíèê.

*

*              SYSTIMER tm - ñòðóêòóðà, ñîäåðæàùàÿ äàííûå

*                            äëÿ óñòàíîâêè ÷àñîâ èëè

*                            ïîêàçàíèÿ ÷àñîâ:

*

*.Return       0   - óñïåøíîå âûïîëíåíèå ôóíêöèè;

*              -1  - ÷àñû ðåàëüíîãî âðåìåíè îòñóòñòâóþò

*                    â êîìïüþòåðå;

**/

int timer(char fn, SYSTIMER *tm)

{

  reg.h.ah = fn;

  switch (fn)

  {

    case RTC_SET_TIME:

    {

      reg.h.ch = tm->hour;

         reg.h.cl = tm->min;

         reg.h.dh = tm->sec;

         reg.h.dl = tm->daylight_savings;

      break;

    }

       case RTC_SET_DATE:

       {

      reg.x.cx = tm->year;

         reg.h.dh = tm->month;

         reg.h.dl = tm->day;

      break;

    }

       case RTC_SET_ALARM:

       {

      reg.h.ch = tm->hour;

         reg.h.cl = tm->min;

         reg.h.dh = tm->sec;

      break;

    }

  }

  int86(0x1a,&reg,&reg);

  if(reg.x.cflag == 1)

    return(-1);

  switch (fn)

  {

    case RTC_GET_TIME:

    {

      tm->hour = reg.h.ch;

         tm->min = reg.h.cl;

         tm->sec = reg.h.dh;

      break;

    }

       case RTC_GET_DATE:

       {

      tm->year = reg.x.cx;

         tm->month = reg.h.dh;

         tm->day = reg.h.dl;

      break;

    }

  }

  return 0;

}




Ñîäåðæàíèå  Íàçàä  Âïåðåä