/** ###################################################################
**     THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT.
**     Filename  : PE_Timer.C
**     Project   : RTOSDemo
**     Processor : MC9S12C32CFU
**     Beantype  : PE_Timer
**     Version   : Driver 01.00
**     Compiler  : Metrowerks HC12 C Compiler
**     Date/Time : 17/05/2005, 08:44
**     Abstract  :
**         This bean "PE_Timer" implements internal methods and definitions
**         used by beans working with timers.
**     Settings  :
**     Contents  :
**         No public methods
**
**     (c) Copyright UNIS, spol. s r.o. 1997-2002
**     UNIS, spol. s r.o.
**     Jundrovska 33
**     624 00 Brno
**     Czech Republic
**     http      : www.processorexpert.com
**     mail      : info@processorexpert.com
** ###################################################################*/


/* MODULE PE_Timer. */

#include "PE_Timer.h"


/*
** ===================================================================
**     Method      :  PE_Timer_LngHi1 (bean PE_Timer)
**
**     Description :
**         This method is internal. It is used by Processor Expert
**         only.
** ===================================================================
*/
bool PE_Timer_LngHi1(dword High, dword Low, word *Out) 
{
  if ((High == 0) && ((Low >> 24) == 0)) 
    if ((Low & 0x80) != 0) {
      if ((Low >> 8) < 0xFFFF) {
        *Out = ((unsigned int)(Low >> 8))+1;
        return FALSE;
      }  
    }   
    else {
      *Out = (unsigned int)(Low >> 8);
      return FALSE;
    }  
  *Out = (unsigned int)(Low >> 8);
  return TRUE;
}



/* END PE_Timer. */

/*
** ###################################################################
**
**     This file was created by UNIS Processor Expert 03.33 for 
**     the Motorola HCS12 series of microcontrollers.
**
** ###################################################################
*/
