| /** ################################################################### | |
| ** 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. | |
| ** | |
| ** ################################################################### | |
| */ |