?? os_cpu_c.lst
字號:
147 OSTaskID = OSNextTaskID;
148 SP--;
149 }
150 LoadCtx();
151 LoadCtx();
152 }
153 */
154
155 /*********************************************************************************************************
156 ** 函數名稱: OSIdle
157 ** 功能描述: 優先級最低的任務
158 ** 輸 入: 無
159 ** 輸 出 : 無
160 ** 全局變量: 無
161 ** 調用模塊: 無
162 **
163 ** 作 者: 陳明計
164 ** 日 期: 2002年12月2日
165 **-------------------------------------------------------------------------------------------------------
166 ** 修改人:
167 ** 日 期:
168 **-------------------------------------------------------------------------------------------------------
169 ********************************************************************************************************/
170
171 void OSIdle(void)
172 {
173 while(1)
174 {
C51 COMPILER V7.01 OS_CPU_C 03/06/2003 10:20:05 PAGE 4
175 PCON = PCON | 0x01; /* CPU進入休眠狀態 */
176 }
177 }
178
179 /*********************************************************************************************************
180 ** 函數名稱: OSStart
181 ** 功能描述: Small RTOS 51初始化函數,調用此函數后多任務開始運行,首先執ID為0的任務
182 ** 輸 入: 無
183 ** 輸 出 : 無
184 ** 全局變量: OSTsakStackBotton,SP
185 ** 調用模塊: 無
186 **
187 ** 作 者: 陳明計
188 ** 日 期: 2002年2月22日
189 **-------------------------------------------------------------------------------------------------------
190 ** 修改人: 陳明計
191 ** 日 期: 2002年12月2日
192 **-------------------------------------------------------------------------------------------------------
193 ** 修改人: 陳明計
194 ** 日 期: 2002年12月30日
195 **-------------------------------------------------------------------------------------------------------
196 ** 修改人:
197 ** 日 期:
198 **-------------------------------------------------------------------------------------------------------
199 ********************************************************************************************************/
200 void OSStart(void)
201 {
202 uint8 idata *cp;
203 uint8 i;
204
205 cp = STACK;
206
207 OSTsakStackBotton[0] = STACK;
208 OSTsakStackBotton[OS_MAX_TASKS + 1] = (uint8 idata *)(IDATA_RAM_SIZE % 256);
209
210 /* 初始化優先級最高的任務堆棧,使返回地址為任務開始地址 */
211 *cp++ = ((uint16)(TaskFuction[0])) % 256;
212 SP = (uint8) cp;
213 *cp = ((uint16)(TaskFuction[0])) / 256;
214
215 /* 初始化優先級最低的任務堆棧 */
216 cp = (uint8 idata *)(IDATA_RAM_SIZE - 1) ;
217 *cp-- = 0;
218 *cp-- = ((uint16)(OSIdle)) / 256;
219 OSTsakStackBotton[OS_MAX_TASKS] = cp;
220 *cp-- = ((uint16)(OSIdle)) % 256;
221
222 /* 初始化其它優先級的任務堆棧 */
223 for(i = OS_MAX_TASKS - 1; i > 0; i--)
224 {
225 *cp-- = 0;
226 *cp-- = ((uint16)(TaskFuction[i])) / 256;
227 OSTsakStackBotton[i] = cp;
228 *cp-- = ((uint16)(TaskFuction[i])) % 256;
229 }
230 /* 允許中斷 */
231 Os_Enter_Sum = 1;
232 OS_EXIT_CRITICAL();
233 /* 函數返回優先級最高的任務 */
234 }
235
236 /*********************************************************************************************************
C51 COMPILER V7.01 OS_CPU_C 03/06/2003 10:20:05 PAGE 5
237 ** 函數名稱: OSTickISR
238 ** 功能描述: 系統時鐘中斷服務函數
239 ** 輸 入: 無
240 ** 輸 出 : 無
241 ** 全局變量: 無
242 ** 調用模塊: OS_IBT_ENTER,(UserTickTimer),OSTimeTick,OSIntExit
243 **
244 ** 作 者: 陳明計
245 ** 日 期: 2002年2月22日
246 **-------------------------------------------------------------------------------------------------------
247 ** 修改人: 陳明計
248 ** 日 期: 2002年10月23日
249 **-------------------------------------------------------------------------------------------------------
250 ** 修改人:
251 ** 日 期:
252 **-------------------------------------------------------------------------------------------------------
253 ********************************************************************************************************/
254 #if EN_OS_INT_ENTER >0
*** WARNING C322 IN LINE 254 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
#pragma disable /* 除非最高優先級中斷,否則,必須加上這一句
- */
#endif
257 void OSTickISR(void) interrupt OS_TIME_ISR
258
259 {
260 #if TICK_TIMER_SHARING >1
*** WARNING C322 IN LINE 260 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
static uint8 TickSum = 0;
#endif
263
264 #if EN_USER_TICK_TIMER > 0
*** WARNING C322 IN LINE 264 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
UserTickTimer(); /* 用戶函數
- */
#endif
267
268 #if TICK_TIMER_SHARING >1
*** WARNING C322 IN LINE 268 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
TickSum = (TickSum + 1) % TICK_TIMER_SHARING;
if (TickSum != 0)
{
return;
}
#endif
275
276 #if EN_OS_INT_ENTER > 0
*** WARNING C322 IN LINE 276 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
OS_INT_ENTER(); /* 中斷開始處理
- */
#endif
279
280
281 #if EN_TIMER_SHARING > 0
*** WARNING C322 IN LINE 281 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
OSTimeTick(); /* 調用系統時鐘處理函數
- */
#else
284 OSIntSendSignal(TIME_ISR_TASK_ID); /* 喚醒ID為TIME_ISR_TASK_ID的任務
-*/
285 #endif
286
287 OSIntExit(); /* 中斷結束處理
C51 COMPILER V7.01 OS_CPU_C 03/06/2003 10:20:05 PAGE 6
- */
288 }
C51 COMPILATION COMPLETE. 8 WARNING(S), 2 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -