⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pe_timer.c

📁 飞思卡尔智能车的程序。红外循迹
💻 C
字号:
/** ###################################################################
**     THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT.
**     Filename  : PE_Timer.C
**     Project   : che_free
**     Processor : MC9S12DG128BCPV
**     Beantype  : PE_Timer
**     Version   : Driver 01.02
**     Compiler  : Metrowerks HC12 C Compiler
**     Date/Time : 2008-3-21, 下午 09:20
**     Abstract  :
**         This module "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-2005
**     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"



typedef unsigned long UINT32;

typedef union {
  UINT32 val;
  struct {
    unsigned short hi16,lo16;
  } s;
} OP_UINT32;

typedef struct {
  unsigned short dummy;
  UINT32 mid;
} M_UINT32;

typedef struct {
  UINT32 hi32, lo32;
} UINT64;

typedef union {
  UINT64 val;
  M_UINT32 m;
} OP_UINT64;

/*
** ===================================================================
**     Method      :  PE_Timer_LngMul (bean PE_Timer)
**
**     Description :
**         The method multiplies two 32 bit values and returns pointer to 
**         64 bit result.
**         This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
void PE_Timer_LngMul(dword va1, dword va2, dlong *var)
{
  OP_UINT32 *va = (OP_UINT32*)&va1;
  OP_UINT32 *vb = (OP_UINT32*)&va2;
  OP_UINT64 *vr = (OP_UINT64*)var;

  vr->val.hi32 = 0UL;
  vr->val.lo32 = ((UINT32)va->s.lo16)*((UINT32)vb->s.lo16);
  {
    OP_UINT32 tmp;

    tmp.val = ((UINT32)va->s.lo16)*((UINT32)vb->s.hi16);
    vr->m.mid += (UINT32)tmp.s.lo16;
    vr->val.hi32 += (UINT32)tmp.s.hi16;
  }
  {
    OP_UINT32 tmp;

    tmp.val = ((UINT32)va->s.hi16)*((UINT32)vb->s.lo16);
    vr->m.mid += (UINT32)tmp.s.lo16;
    vr->val.hi32 += (UINT32)tmp.s.hi16;
  }
  vr->val.hi32 += ((UINT32)va->s.hi16)*((UINT32)vb->s.hi16);
}

/*
** ===================================================================
**     Method      :  PE_Timer_LngHi1 (bean PE_Timer)
**
**     Description :
**         The method transfers 64 bit result to 16 bit ratio value and 
**         returns overflow flag.
**         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;
}

/*
** ===================================================================
**     Method      :  PE_Timer_LngHi2 (bean PE_Timer)
**
**     Description :
**         The method transfers 64 bit result to 16 bit ratio value and 
**         returns overflow flag.
**         This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
bool PE_Timer_LngHi2(dword High, dword Low, word *Out)
{
  if (High == 0) {
    if ((Low & 0x8000) != 0) {
      if ((Low >> 16) < 0xFFFF) {
        *Out = ((unsigned int)(Low >> 16))+1;
        return FALSE;
      }
    }
    else {
      *Out = (unsigned int)(Low >> 16);
      return FALSE;
    }
  }
  *Out = (unsigned int)(Low >> 16);
  return TRUE;
}

/*
** ===================================================================
**     Method      :  PE_Timer_LngHi3 (bean PE_Timer)
**
**     Description :
**         The method transfers 64 bit result to 16 bit ratio value and 
**         returns overflow flag.
**         This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
bool PE_Timer_LngHi3(dword High, dword Low, word *Out)
{
  if ((High >> 8) == 0) {
    if ((Low & 0x800000) != 0) {
      if (((Low >> 24) | (High << 8)) < 0xFFFF) {
        *Out = ((unsigned int)((Low >> 24) | (High << 8)))+1;
        return FALSE;
      }
    }
    else {
      *Out = (unsigned int)((Low >> 24) | (High << 8));
      return FALSE;
    }
  }
  *Out = (unsigned int)((Low >> 24) | (High << 8));
  return TRUE;
}



/* END PE_Timer. */

/*
** ###################################################################
**
**     This file was created by UNIS Processor Expert 2.96 [03.76]
**     for the Freescale HCS12 series of microcontrollers.
**
** ###################################################################
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -