/** ################################################################### ** THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT. ** Filename : PE_Timer.C ** Project : RTOSDemo ** Processor : MC9S12DP256BCPV ** Beantype : PE_Timer ** Version : Driver 01.00 ** Compiler : Metrowerks HC12 C Compiler ** Date/Time : 14/06/2005, 16:34 ** 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" 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 : ** 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 : ** 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 : ** 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 : ** 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; } /* ** =================================================================== ** Method : PE_Timer_LngHi4 (bean PE_Timer) ** ** Description : ** This method is internal. It is used by Processor Expert ** only. ** =================================================================== */ bool PE_Timer_LngHi4(dword High, dword Low, word *Out) { if ((High >> 16) == 0) if ((Low & 0x80000000) != 0) { if (High < 0xFFFF) { *Out = ((unsigned int)High)+1; return FALSE; } } else { *Out = (unsigned int)High; return FALSE; } *Out = (unsigned int)High; return TRUE; } /* END PE_Timer. */ /* ** ################################################################### ** ** This file was created by UNIS Processor Expert 03.33 for ** the Motorola HCS12 series of microcontrollers. ** ** ################################################################### */