📄 sosos.lst
字号:
1215 04f0 3197 .LM131:
346:sosos.c **** *stack--=0x15;//R21
1216 r30,r22
1217 subi r30,lo8(-(SOSOS_TASK_READY))
1218 04f2 85E1 sbci r31,hi8(-(SOSOS_TASK_READY))
1219 04f4 8083 ld r18,Z
1220 04f6 3197 ldi r24,lo8(1)
347:sosos.c **** *stack--=0x16;//R22
1221 r25,hi8(1)
1222 rjmp 2f
1223 04f8 86E1 1: lsl r24
1224 04fa 8083 rol r25
1225 04fc 3197 2: dec r20
348:sosos.c **** *stack--=0x17;//R23
1226 1b
1227 or r18,r24
1228 04fe 87E1 st Z,r18
1230 0502 9F01 .LM132:
1231 0504 2150 movw r30,r26
1232 0506 3040 std Z+6,__zero_reg__
349:sosos.c **** *stack--=(SOSOS_ADDRESS)ptr;//R24
1233 68,0,361,.LM133-SososCreateTask
1234 .LM133:
1235 0508 8B81 /* #APP */
1236 050a F901 SEI
1237 050c 8083
1238 050e 2150 /* #NOAPP */
1239 0510 3040 ldi r24,lo8(0)
1240 0512 3E83 ldi r25,hi8(0)
1241 0514 2D83 rjmp .L86
350:sosos.c **** *stack--=(SOSOS_ADDRESS)ptr>>8;//R25
1242 tabn 68,0,362,.LM134-SososCreateTask
1243 .LM134:
1244 0516 EB81 ldi r24,lo8(253)
1245 0518 FC81 ldi r25,hi8(253)
1246 051a 8F2F .L86:
1247 051c 9927 /* epilogue: frame size=8 */
1248 051e F901 adiw r28,8
1249 0520 8083 in __tmp_reg__,__SREG__
1250 0522 ED81 cli
1251 0524 FE81 out __SP_H__,r29
1252 0526 3197 out __SREG__,__tmp_reg__
351:sosos.c **** *stack--=0x1a;//R26
1253 __,r28
1254 pop r29
1255 0528 8AE1 pop r28
1256 052a 8083 pop r16
1257 052c 3197 ret
352:sosos.c **** *stack--=0x1b;//R27
1258 ilogue end (size=10) */
1259 /* function SososCreateTask size 216 (195) */
1261 0530 8083 .Lscope7:
353:sosos.c **** *stack--=0x1e;//R30
1263 al SososGetTaskId
1265 0534 8EE1 SososGetTaskId:
1267 0538 3197 .LM135:
354:sosos.c **** *stack--=0x1f;//R31
1268 ologue: frame size=0 */
1269 /* prologue end (size=0) */
1270 053a 8FE1 mov r24,r10
1271 053c 8083 swap r24
1272 053e 3197 andi r24,0xf0
355:sosos.c **** *stack--=0x1c;//R28
1273 r24,r11
1275 0540 8CE1 .LM136:
1276 0542 8083 clr r25
1277 0544 3197 /* epilogue: frame size=0 */
356:sosos.c **** *stack--=0x1d;//R29
1278 /* epilogue end (size=1) */
1279 /* function SososGetTaskId size 6 (5) */
1281 0548 8083 .Lscope8:
357:sosos.c **** //保存栈顶
358:sosos.c **** TCB[pri*SOSOS_MAX_TASK_PER_PRI+id].TASK_STACK_POINT=(SOSOS_ADDRESS)stack;
1282 abs "SososSuspendTask:F(0,15)",36,0,0,SososSuspendTask
1285 054c 1196 .global SososSuspendTask
1287 0550 EE93 SososSuspendTask:
359:sosos.c **** set_bit(SOSOS_TASK_READY[pri],id);//设置任务就绪状态
1288 n 68,0,379,.LM137-SososSuspendTask
1289 .LM137:
1290 0552 FB01 /* prologue: frame size=0 */
1291 0554 E050 /* prologue end (size=0) */
1293 0558 2081 .LM138:
1294 055a 81E0 /* #APP */
1295 055c 90E0 IN __tmp_reg__,__SREG__
1296 055e 00C0
1297 0560 880F CLI
1298 0562 991F
1299 0564 4A95 PUSH __tmp_reg__
1300 0566 02F4
1302 056a 2083 .LM139:
360:sosos.c **** TCB[pri*SOSOS_MAX_TASK_PER_PRI+id].TASK_STATE=TASK_STATE_OK;
1303 ov r30,r24
1304 clr r31
1305 056c FD01 subi r30,lo8(-(SOSOS_TASK_READY))
1306 056e 1682 sbci r31,hi8(-(SOSOS_TASK_READY))
361:sosos.c **** ENABLE_INTERRUPT();
1307 r25,Z
1308 ldi r18,lo8(1)
1309 ldi r19,hi8(1)
1310 0570 7894 mov r0,r22
1311 rjmp 2f
1312 1: lsl r18
1313 0572 80E0 rol r19
1314 0574 90E0 2: dec r0
1315 0576 00C0 brpl 1b
1316 com r18
362:sosos.c **** return SOSOS_OK;
1317 18
1318 st Z,r25
1320 057a 90E0 .LM140:
1321 cp r24,r10
1322 brne .L100
1324 057e 0FB6 .LM141:
1325 0580 F894 cp r22,r11
1326 0582 DEBF brne .L100
1328 0586 CDBF .LM142:
1329 0588 DF91 rcall SososScheder
1330 058a CF91 .L100:
1332 058e 0895 .LM143:
1333 /* #APP */
1334 POP __tmp_reg__
1335
1336 OUT __SREG__,__tmp_reg__
1337
1338 /* #NOAPP */
1339 /* epilogue: frame size=0 */
1340 ret
363:sosos.c **** }
364:sosos.c **** #endif
365:sosos.c ****
366:sosos.c **** #if SOSOS_GET_TASK_ID_ENABLE == 1
367:sosos.c **** unsigned char SososGetTaskId(void)//获得当前任务ID
368:sosos.c **** //返回值的高半字节是任务优先级,低半字节是任务在该优先级的ID
369:sosos.c **** {
1341 */
1342 /* function SososSuspendTask size 42 (41) */
1344 .Lscope9:
1348 0596 8B0D .global SososResumeTask
370:sosos.c **** return((SOSOS_RUNNING_TASK_PRI<<4)+SOSOS_RUNNING_TASK_ID);
371:sosos.c **** }
1349 ososResumeTask, @function
1350 SososResumeTask:
1352 .LM144:
1353 059a 0895 /* prologue: frame size=0 */
1354 /* prologue end (size=0) */
1356 .LM145:
1357 /* #APP */
1358 IN __tmp_reg__,__SREG__
1359
1360 CLI
1361
1362 PUSH __tmp_reg__
1363
372:sosos.c **** #endif
373:sosos.c ****
374:sosos.c **** #if SOSOS_SUSPEND_TASK_ENABLE == 1
375:sosos.c **** void SososSuspendTask(unsigned char pri,unsigned char id)//挂起任务
376:sosos.c **** //挂起指定的任务,不要在中断中调用该函数
377:sosos.c **** //pri:优先级
378:sosos.c **** //id:任务在本优先级的表示号
379:sosos.c **** {
1364 7,.LM146-SososResumeTask
1365 .LM146:
1366 /* #NOAPP */
1367 mov r30,r24
380:sosos.c **** ENTER_CRITICAL();
1368 r31
1369 subi r30,lo8(-(SOSOS_TASK_READY))
1370 sbci r31,hi8(-(SOSOS_TASK_READY))
1371 059c 0FB6 ld r25,Z
1372 ldi r18,lo8(1)
1373 059e F894 ldi r19,hi8(1)
1374 rjmp 2f
1375 05a0 0F92 1: lsl r18
1376 rol r19
381:sosos.c **** clr_bit(SOSOS_TASK_READY[pri],id);//清除任务就绪状态
1377 2
1378 brpl 1b
1379 or r25,r18
1380 05a2 E82F st Z,r25
1382 05a6 E050 .LM147:
1383 05a8 F040 cp r24,r6
1384 05aa 9081 brsh .L105
1386 05ae 30E0 .LM148:
1387 05b0 062E rcall SososScheder
1388 05b2 00C0 .L105:
1390 05b6 331F .LM149:
1391 05b8 0A94 /* #APP */
1392 05ba 02F4 POP __tmp_reg__
1393 05bc 2095
1394 05be 9223 OUT __SREG__,__tmp_reg__
1395 05c0 9083
382:sosos.c ****
383:sosos.c **** if((pri==SOSOS_RUNNING_TASK_PRI)&&(id==SOSOS_RUNNING_TASK_ID)){
1396 logue: frame size=0 */
1397 ret
1398 05c2 8A15 /* epilogue end (size=1) */
1399 05c4 01F4 /* function SososResumeTask size 39 (38) */
1401 .Lscope10:
384:sosos.c **** SososScheder();//挂起的是当前任务,重新调度
1404 SososDelay
1406 05ca 00D0 SososDelay:
385:sosos.c **** }
386:sosos.c **** EXIT_CRITICAL();
1408 50:
1409 /* prologue: frame size=0 */
1410 /* prologue end (size=0) */
1411 05cc 0F90 movw r18,r24
1413 05ce 0FBE .LM151:
1414 or r24,r25
1415 breq .L111
1417 05d0 0895 .LM152:
1418 /* #APP */
1419 IN __tmp_reg__,__SREG__
1420
1421 CLI
1422
1423 PUSH __tmp_reg__
1424
1426 .LM153:
1427 /* #NOAPP */
387:sosos.c **** }
388:sosos.c **** #endif
389:sosos.c ****
390:sosos.c **** #if SOSOS_RESUME_TASK_ENABLE == 1
391:sosos.c **** void SososResumeTask(unsigned char pri,unsigned char id)//恢复任务
392:sosos.c **** //恢复指定的任务,不要在中断中调用该函数
393:sosos.c **** //pri:优先级
394:sosos.c **** //id:任务在本优先级的表示号
395:sosos.c **** {
1428 1
1429 ldi r24,lo8(1)
1430 ldi r25,hi8(1)
1431 mov r0,r30
396:sosos.c **** ENTER_CRITICAL();
1432 p 2f
1433 1: lsl r24
1434 rol r25
1435 05d2 0FB6 2: dec r0
1436 brpl 1b
1437 05d4 F894 or r9,r24
1439 05d6 0F92 .LM154:
1440 movw r26,r30
397:sosos.c **** set_bit(SOSOS_TASK_READY[pri],id);//设置任务就绪状态
1441 ,lo8(-(SOSOS_TASK_READY))
1442 sbci r27,hi8(-(SOSOS_TASK_READY))
1443 ld r24,X
1444 05d8 E82F mov r25,r12
1445 05da FF27 com r25
1446 05dc E050 and r24,r25
1447 05de F040 st X,r24
1449 05e2 21E0 .LM155:
1450 05e4 30E0 lsl r30
1451 05e6 00C0 rol r31
1452 05e8 220F add r30,r11
1453 05ea 331F adc r31,__zero_reg__
1454 05ec 6A95 movw r24,r30
1455 05ee 02F4 ldi r27,3
1456 05f0 922B 1: lsl r24
1457 05f2 9083 rol r25
398:sosos.c ****
399:sosos.c **** #if SOSOS_MUTEX_ENABLE == 1
400:sosos.c **** if(SOSOS_RUNNING_INHERIT_PRI>pri){
1458
1459 lsl r30
1460 05f4 8615 rol r31
1461 05f6 00F4 add r30,r24
401:sosos.c **** #else
402:sosos.c **** if(SOSOS_RUNNING_TASK_PRI>pri){
403:sosos.c **** #endif
404:sosos.c **** SososScheder();//恢复的任务优先级更高,重新调度
1462 c r31,r25
1463 subi r30,lo8(-(TCB))
1464 05f8 00D0 sbci r31,hi8(-(TCB))
1465 ldi r24,lo8(16)
405:sosos.c **** }
406:sosos.c **** EXIT_CRITICAL();
1466 Z+6,r24
1468 .LM156:
1469 05fa 0F90 std Z+9,r18
1471 05fc 0FBE .LM157:
1472 rcall SososScheder
1474 .LM158:
1475 05fe 0895 /* #APP */
1476 POP __tmp_reg__
1477
1478 OUT __SREG__,__tmp_reg__
1479
1480 /* #NOAPP */
1481 .L111:
1482 ret
1483 /* epilogue: frame size=0 */
1484 /* epilogue: noreturn */
407:sosos.c **** }
408:sosos.c **** #endif
409:sosos.c ****
410:sosos.c **** #if SOSOS_DELAY_TASK_ENABLE == 1
411:sosos.c **** void SososDelay(unsigned int ticks)//任务延时
412:sosos.c **** //将任务延时指定的时间间隔,不要在中断中调用该函数
413:sosos.c **** //ticks:延时值,为0就立即返回
414:sosos.c **** {
1485 ze=0) */
1486 /* function SososDelay size 63 (63) */
1488 .Lscope11:
415:sosos.c **** if(ticks>0){
1490 bs "no:P(0,11)",64,0,0,24
1491 .global SososGetTimer
1493 0604 01F0 SososGetTimer:
416:sosos.c **** ENTER_CRITICAL();
1494 abn 68,0,431,.LM159-SososGetTimer
1495 .LM159:
1496 /* prologue: frame size=0 */
1497 0606 0FB6 /* prologue end (size=0) */
1498 ldi r30,lo8(SOSOS_TIMER)
1499 0608 F894 ldi r31,hi8(SOSOS_TIMER)
1500 add r30,r24
1501 060a 0F92 adc r31,__zero_reg__
1502 ld r24,Z
417:sosos.c **** set_bit(SOSOS_WAIT_TASK,SOSOS_RUNNING_TASK_PRI);
1503 8,0,433,.LM160-SososGetTimer
1504 .LM160:
1505 clr r25
1506 060c EA2D /* epilogue: frame size=0 */
1507 060e FF27 ret
1508 0610 81E0 /* epilogue end (size=1) */
1509 0612 90E0 /* function SososGetTimer size 7 (6) */
1511 0616 00C0 .Lscope12:
1515 061e 02F4 .global SososSetTime
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -