]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/HCS12_CodeWarrior_banked/CODE/PE_Timer.C
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / HCS12_CodeWarrior_banked / CODE / PE_Timer.C
1 /** ###################################################################\r
2 **     THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT.\r
3 **     Filename  : PE_Timer.C\r
4 **     Project   : RTOSDemo\r
5 **     Processor : MC9S12DP256BCPV\r
6 **     Beantype  : PE_Timer\r
7 **     Version   : Driver 01.00\r
8 **     Compiler  : Metrowerks HC12 C Compiler\r
9 **     Date/Time : 14/06/2005, 16:34\r
10 **     Abstract  :\r
11 **         This bean "PE_Timer" implements internal methods and definitions\r
12 **         used by beans working with timers.\r
13 **     Settings  :\r
14 **     Contents  :\r
15 **         No public methods\r
16 **\r
17 **     (c) Copyright UNIS, spol. s r.o. 1997-2002\r
18 **     UNIS, spol. s r.o.\r
19 **     Jundrovska 33\r
20 **     624 00 Brno\r
21 **     Czech Republic\r
22 **     http      : www.processorexpert.com\r
23 **     mail      : info@processorexpert.com\r
24 ** ###################################################################*/\r
25 \r
26 \r
27 /* MODULE PE_Timer. */\r
28 \r
29 #include "PE_Timer.h"\r
30 \r
31 \r
32 \r
33 typedef unsigned long UINT32;\r
34 \r
35 typedef union {\r
36   UINT32 val;\r
37   struct {\r
38     unsigned short hi16,lo16;\r
39   } s;\r
40 } OP_UINT32;\r
41 \r
42 typedef struct {\r
43   unsigned short dummy;\r
44   UINT32 mid;\r
45 } M_UINT32;\r
46 \r
47 typedef struct {\r
48   UINT32 hi32, lo32;\r
49 } UINT64;\r
50 \r
51 typedef union {\r
52   UINT64 val;\r
53   M_UINT32 m; \r
54 } OP_UINT64;\r
55 \r
56 /*\r
57 ** ===================================================================\r
58 **     Method      :  PE_Timer_LngMul (bean PE_Timer)\r
59 **\r
60 **     Description :\r
61 **         This method is internal. It is used by Processor Expert\r
62 **         only.\r
63 ** ===================================================================\r
64 */\r
65 void PE_Timer_LngMul(dword va1, dword va2, dlong *var)\r
66 {\r
67   OP_UINT32 *va = (OP_UINT32*)&va1;\r
68   OP_UINT32 *vb = (OP_UINT32*)&va2;\r
69   OP_UINT64 *vr = (OP_UINT64*)var;\r
70   \r
71   vr->val.hi32 = 0UL;\r
72   vr->val.lo32 = ((UINT32)va->s.lo16)*((UINT32)vb->s.lo16);\r
73   {\r
74     OP_UINT32 tmp;\r
75     \r
76     tmp.val = ((UINT32)va->s.lo16)*((UINT32)vb->s.hi16);\r
77     vr->m.mid += (UINT32)tmp.s.lo16;\r
78     vr->val.hi32 += (UINT32)tmp.s.hi16;\r
79   }\r
80   {\r
81     OP_UINT32 tmp;\r
82     \r
83     tmp.val = ((UINT32)va->s.hi16)*((UINT32)vb->s.lo16);\r
84     vr->m.mid += (UINT32)tmp.s.lo16;\r
85     vr->val.hi32 += (UINT32)tmp.s.hi16;\r
86   }\r
87   vr->val.hi32 += ((UINT32)va->s.hi16)*((UINT32)vb->s.hi16);\r
88 }\r
89 \r
90 /*\r
91 ** ===================================================================\r
92 **     Method      :  PE_Timer_LngHi1 (bean PE_Timer)\r
93 **\r
94 **     Description :\r
95 **         This method is internal. It is used by Processor Expert\r
96 **         only.\r
97 ** ===================================================================\r
98 */\r
99 bool PE_Timer_LngHi1(dword High, dword Low, word *Out) \r
100 {\r
101   if ((High == 0) && ((Low >> 24) == 0)) \r
102     if ((Low & 0x80) != 0) {\r
103       if ((Low >> 8) < 0xFFFF) {\r
104         *Out = ((unsigned int)(Low >> 8))+1;\r
105         return FALSE;\r
106       }  \r
107     }   \r
108     else {\r
109       *Out = (unsigned int)(Low >> 8);\r
110       return FALSE;\r
111     }  \r
112   *Out = (unsigned int)(Low >> 8);\r
113   return TRUE;\r
114 }\r
115 \r
116 /*\r
117 ** ===================================================================\r
118 **     Method      :  PE_Timer_LngHi2 (bean PE_Timer)\r
119 **\r
120 **     Description :\r
121 **         This method is internal. It is used by Processor Expert\r
122 **         only.\r
123 ** ===================================================================\r
124 */\r
125 bool PE_Timer_LngHi2(dword High, dword Low, word *Out) \r
126 {\r
127   if (High == 0) \r
128     if ((Low & 0x8000) != 0) {\r
129       if ((Low >> 16) < 0xFFFF) {\r
130         *Out = ((unsigned int)(Low >> 16))+1;\r
131         return FALSE;\r
132       }  \r
133     }\r
134     else {\r
135       *Out = (unsigned int)(Low >> 16);\r
136       return FALSE;\r
137     }  \r
138   *Out = (unsigned int)(Low >> 16);\r
139   return TRUE;\r
140 }\r
141 \r
142 /*\r
143 ** ===================================================================\r
144 **     Method      :  PE_Timer_LngHi3 (bean PE_Timer)\r
145 **\r
146 **     Description :\r
147 **         This method is internal. It is used by Processor Expert\r
148 **         only.\r
149 ** ===================================================================\r
150 */\r
151 bool PE_Timer_LngHi3(dword High, dword Low, word *Out) \r
152 {\r
153   if ((High >> 8) == 0)\r
154     if ((Low & 0x800000) != 0) {\r
155       if (((Low >> 24) | (High << 8)) < 0xFFFF) {\r
156         *Out = ((unsigned int)((Low >> 24) | (High << 8)))+1;\r
157         return FALSE;\r
158       } \r
159     }   \r
160     else { \r
161       *Out = (unsigned int)((Low >> 24) | (High << 8));\r
162       return FALSE;\r
163     }  \r
164   *Out = (unsigned int)((Low >> 24) | (High << 8));\r
165   return TRUE;\r
166 }\r
167 \r
168 /*\r
169 ** ===================================================================\r
170 **     Method      :  PE_Timer_LngHi4 (bean PE_Timer)\r
171 **\r
172 **     Description :\r
173 **         This method is internal. It is used by Processor Expert\r
174 **         only.\r
175 ** ===================================================================\r
176 */\r
177 bool PE_Timer_LngHi4(dword High, dword Low, word *Out) \r
178 {\r
179   if ((High >> 16) == 0) \r
180     if ((Low & 0x80000000) != 0) {\r
181       if (High < 0xFFFF) {\r
182         *Out = ((unsigned int)High)+1;\r
183         return FALSE;\r
184       }  \r
185     }  \r
186     else { \r
187       *Out = (unsigned int)High;\r
188       return FALSE;\r
189     }  \r
190   *Out = (unsigned int)High;\r
191   return TRUE;\r
192 }\r
193 \r
194 \r
195 \r
196 /* END PE_Timer. */\r
197 \r
198 /*\r
199 ** ###################################################################\r
200 **\r
201 **     This file was created by UNIS Processor Expert 03.33 for \r
202 **     the Motorola HCS12 series of microcontrollers.\r
203 **\r
204 ** ###################################################################\r
205 */\r