📄 ucos_ii.s
字号:
ldd R2,z+16
ldd R3,z+17
ldd R4,z+18
ldd R5,z+19
movw R30,R28
std z+16,R2
std z+17,R3
std z+18,R4
std z+19,R5
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
mov R2,R14
clr R3
asr R3
ror R2
asr R3
ror R2
asr R3
ror R2
movw R30,R12
std z+12,R2
; #include <os_dbg.c>
ldi R24,<_OSMapTbl
ldi R25,>_OSMapTbl
movw R30,R12
ldd R30,z+12
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
movw R26,R12
adiw R26,14
st x,R30
; #include <os_dbg.c>
mov R24,R14
clr R25
andi R24,7
andi R25,0
movw R30,R12
std z+11,R24
; #include <os_dbg.c>
ldi R24,<_OSMapTbl
ldi R25,>_OSMapTbl
movw R30,R12
ldd R30,z+11
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
movw R26,R12
adiw R26,13
st x,R30
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R12
std z+15,R20
std z+16,R21
std z+17,R22
std z+18,R23
; #include <os_dbg.c>
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R12
std z+23,R20
std z+24,R21
std z+25,R22
std z+26,R23
; #include <os_dbg.c>
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R12
std z+19,R20
std z+20,R21
std z+21,R22
std z+22,R23
; #include <os_dbg.c>
clr R2
clr R3
movw R30,R12
std z+28,R3
std z+27,R2
; #include <os_dbg.c>
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R12
std z+29,R20
std z+30,R21
std z+31,R22
std z+32,R23
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
movw R16,R12
xcall _OSTCBInitHook
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
movw R16,R12
xcall _OSTaskCreateHook
; #include <os_dbg.c>
; #include <os_dbg.c>
xcall _OS_CPU_SR_Save
mov R10,R16
; #include <os_dbg.c>
ldi R24,2
mul R24,R14
movw R30,R0
ldi R24,<_OSTCBPrioTbl
ldi R25,>_OSTCBPrioTbl
add R30,R24
adc R31,R25
std z+1,R13
std z+0,R12
; #include <os_dbg.c>
lds R2,_OSTCBList
lds R3,_OSTCBList+1
movw R30,R12
std z+3,R3
std z+2,R2
; #include <os_dbg.c>
clr R2
clr R3
movw R30,R12
std z+5,R3
std z+4,R2
; #include <os_dbg.c>
lds R2,_OSTCBList
lds R3,_OSTCBList+1
tst R2
brne X18
tst R3
breq L88
X18:
; #include <os_dbg.c>
lds R30,_OSTCBList
lds R31,_OSTCBList+1
std z+5,R13
std z+4,R12
; #include <os_dbg.c>
L88:
; #include <os_dbg.c>
sts _OSTCBList+1,R13
sts _OSTCBList,R12
; #include <os_dbg.c>
movw R30,R12
ldd R2,z+14
lds R3,_OSRdyGrp
or R3,R2
sts _OSRdyGrp,R3
; #include <os_dbg.c>
ldi R24,<_OSRdyTbl
ldi R25,>_OSRdyTbl
movw R30,R12
ldd R2,z+12
clr R3
add R2,R24
adc R3,R25
movw R30,R12
ldd R4,z+13
movw R30,R2
ldd R5,z+0
or R5,R4
std z+0,R5
; #include <os_dbg.c>
lds R24,_OSTaskCtr
subi R24,255 ; addi 1
sts _OSTaskCtr,R24
; #include <os_dbg.c>
mov R16,R10
xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
clr R16
xjmp L85
L86:
; #include <os_dbg.c>
; #include <os_dbg.c>
mov R16,R10
xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
ldi R16,70
L85:
xcall pop_gset5
adiw R28,2
.dbline 0 ; func end
ret
; psp -> R12,R13
; err -> R12
; cpu_sr -> R10
; prio -> R14
; ptos -> y+24
; p_arg -> y+22
; task -> R12,R13
.even
_OSTaskCreate::
st -y,r19
st -y,r18
xcall push_gset5
movw R12,R16
sbiw R28,12
ldd R14,y+26
clr R10
xcall _OS_CPU_SR_Save
mov R10,R16
clr R2
lds R3,_OSIntNesting
cp R2,R3
brsh L91
xcall _OS_CPU_SR_Restore
ldi R16,16
xjmp L90
L91:
ldi R24,2
mul R24,R14
movw R30,R0
ldi R24,<_OSTCBPrioTbl
ldi R25,>_OSTCBPrioTbl
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
tst R2
breq X21
xjmp L93
X21:
tst R3
breq X22
xjmp L93
X22:
X20:
ldi R24,2
mul R24,R14
movw R30,R0
ldi R24,<_OSTCBPrioTbl
ldi R25,>_OSTCBPrioTbl
add R30,R24
adc R31,R25
ldi R24,1
ldi R25,0
std z+1,R25
std z+0,R24
mov R16,R10
xcall _OS_CPU_SR_Restore
clr R2
clr R3
std y+3,R3
std y+2,R2
ldd R0,y+24
ldd R1,y+25
std y+1,R1
std y+0,R0
ldd R18,y+22
ldd R19,y+23
movw R16,R12
xcall _OSTaskStkInit
movw R12,R16
clr R2
clr R3
std y+11,R3
std y+10,R2
std y+9,R3
std y+8,R2
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
std y+4,R20
std y+5,R21
std y+6,R22
std y+7,R23
std y+3,R3
std y+2,R2
std y+1,R3
std y+0,R2
movw R18,R12
mov R16,R14
xcall _OS_TCBInit
mov R12,R16
tst R16
brne L95
lds R24,_OSRunning
cpi R24,1
brne L96
xcall _OS_Sched
xjmp L96
L95:
xcall _OS_CPU_SR_Save
mov R10,R16
ldi R24,2
mul R24,R14
movw R30,R0
ldi R24,<_OSTCBPrioTbl
ldi R25,>_OSTCBPrioTbl
add R30,R24
adc R31,R25
clr R2
clr R3
std z+1,R3
std z+0,R2
xcall _OS_CPU_SR_Restore
L96:
mov R16,R12
xjmp L90
L93:
mov R16,R10
xcall _OS_CPU_SR_Restore
ldi R16,40
L90:
adiw R28,12
xcall pop_gset5
adiw R28,2
.dbline 0 ; func end
ret
; y -> R10
; cpu_sr -> R20
; ticks -> R22,R23
.even
_OSTimeDly::
xcall push_gset3
movw R22,R16
clr R20
cpi R22,0
cpc R22,R23
brne X24
xjmp L100
X24:
X23:
xcall _OS_CPU_SR_Save
mov R20,R16
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R10,z+12
ldi R24,<_OSRdyTbl
ldi R25,>_OSRdyTbl
mov R2,R10
clr R3
add R2,R24
adc R3,R25
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R4,z+13
com R4
movw R30,R2
ldd R5,z+0
and R5,R4
std z+0,R5
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L102
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R2,z+14
com R2
lds R3,_OSRdyGrp
and R3,R2
sts _OSRdyGrp,R3
L102:
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
std z+7,R23
std z+6,R22
mov R16,R20
xcall _OS_CPU_SR_Restore
xcall _OS_Sched
L100:
L99:
xcall pop_gset3
.dbline 0 ; func end
ret
; ticks -> y+0
; loops -> R10,R11
; milli -> y+14
; seconds -> y+12
; minutes -> R12
; hours -> R10
.even
_OSTimeDlyHMSM::
xcall push_gset4
mov R12,R18
mov R10,R16
sbiw R28,4
mov R2,R12
clr R3
clr R4
clr R5
ldi R20,60
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
mov R6,R10
clr R7
clr R8
clr R9
ldi R20,16
ldi R21,14
ldi R22,0
ldi R23,0
st -y,R9
st -y,R8
st -y,R7
st -y,R6
movw R16,R20
movw R18,R22
xcall empy32u
movw R6,R16
movw R8,R18
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
ldd R2,y+12
clr R3
clr R4
clr R5
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
ldi R20,100
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R9
st -y,R8
st -y,R7
st -y,R6
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
ldi R20,5
ldi R21,0
ldi R22,0
ldi R23,0
ldd R6,y+14
ldd R7,y+15
clr R8
clr R9
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
ldi R20,100
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R9
st -y,R8
st -y,R7
st -y,R6
movw R16,R20
movw R18,R22
xcall empy32u
ldi R20,232
ldi R21,3
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall div32u
add R2,R16
adc R3,R17
adc R4,R18
adc R5,R19
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
movw R10,R4
ldi R20,255
ldi R21,255
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
and R2,R20
and R3,R21
and R4,R22
and R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
movw R30,R28
ldd R16,z+0
ldd R17,z+1
xcall _OSTimeDly
xjmp L106
L105:
ldi R16,32768
ldi R17,128
xcall _OSTimeDly
ldi R16,32768
ldi R17,128
xcall _OSTimeDly
movw R24,R10
sbiw R24,1
movw R10,R24
L106:
tst R10
brne L105
tst R11
brne L105
X25:
clr R16
L104:
adiw R28,4
xcall pop_gset4
.dbline 0 ; func end
ret
.area lit(rom, con, rel)
_OSDebugEn::
.word 1
_OSEndiannessTest::
.word 22136,4660
_OSEventMax::
.word 5
_OSEventNameSize::
.word 0
_OSEventEn::
.word 0
_OSEventSize::
.word 0
_OSEventTblSize::
.word 0
_OSFlagEn::
.word 0
_OSFlagGrpSize::
.word 0
_OSFlagNodeSize::
.word 0
_OSFlagWidth::
.word 0
_OSFlagMax::
.word 5
_OSFlagNameSize::
.word 0
_OSLowestPrio::
.word 8
_OSMboxEn::
.word 0
_OSMemEn::
.word 0
_OSMemMax::
.word 5
_OSMemNameSize::
.word 0
_OSMemSize::
.word 0
_OSMemTblSize::
.word 0
_OSMutexEn::
.word 0
_OSPtrSize::
.word 2
_OSQEn::
.word 0
_OSQMax::
.word 4
_OSQSize::
.word 0
_OSRdyTblSize::
.word 2
_OSSemEn::
.word 0
_OSStkWidth::
.word 1
_OSTaskCreateEn::
.word 1
_OSTaskCreateExtEn::
.word 0
_OSTaskDelEn::
.word 0
_OSTaskIdleStkSize::
.word 128
_OSTaskProfileEn::
.word 1
_OSTaskMax::
.word 7
_OSTaskNameSize::
.word 0
_OSTaskStatEn::
.word 0
_OSTaskStatStkSize::
.word 128
_OSTaskStatStkChkEn::
.word 1
_OSTaskSwHookEn::
.word 1
_OSTCBPrioTblMax::
.word 9
_OSTCBSize::
.word 33
_OSTicksPerSec::
.word 100
_OSTimeTickHookEn::
.word 0
_OSVersionNbr::
.word 276
_OSDataSize::
.word 402
.area text(rom, con, rel)
; ptemp -> R16,R17
.even
_OSDebugInit::
ldi R16,<_OSDebugEn
ldi R17,>_OSDebugEn
ldi R16,<_OSEndiannessTest
ldi R17,>_OSEndiannessTest
ldi R16,<_OSEventMax
ldi R17,>_OSEventMax
ldi R16,<_OSEventNameSize
ldi R17,>_OSEventNameSize
ldi R16,<_OSEventEn
ldi R17,>_OSEventEn
ldi R16,<_OSEventSize
ldi R17,>_OSEventSize
ldi R16,<_OSEventTblSize
ldi R17,>_OSEventTblSize
ldi R16,<_OSFlagEn
ldi R17,>_OSFlagEn
ldi R16,<_OSFlagGrpSize
ldi R17,>_OSFlagGrpSize
ldi R16,<_OSFlagNodeSize
ldi R17,>_OSFlagNodeSize
ldi R16,<_OSFlagWidth
ldi R17,>_OSFlagWidth
ldi R16,<_OSFlagMax
ldi R17,>_OSFlagMax
ldi R16,<_OSFlagNameSize
ldi R17,>_OSFlagNameSize
ldi R16,<_OSLowestPrio
ldi R17,>_OSLowestPrio
ldi R16,<_OSMboxEn
ldi R17,>_OSMboxEn
ldi R16,<_OSMemEn
ldi R17,>_OSMemEn
ldi R16,<_OSMemMax
ldi R17,>_OSMemMax
ldi R16,<_OSMemNameSize
ldi R17,>_OSMemNameSize
ldi R16,<_OSMemSize
ldi R17,>_OSMemSize
ldi R16,<_OSMemTblSize
ldi R17,>_OSMemTblSize
ldi R16,<_OSMutexEn
ldi R17,>_OSMutexEn
ldi R16,<_OSPtrSize
ldi R17,>_OSPtrSize
ldi R16,<_OSQEn
ldi R17,>_OSQEn
ldi R16,<_OSQMax
ldi R17,>_OSQMax
ldi R16,<_OSQSize
ldi R17,>_OSQSize
ldi R16,<_OSRdyTblSize
ldi R17,>_OSRdyTblSize
ldi R16,<_OSSemEn
ldi R17,>_OSSemEn
ldi R16,<_OSStkWidth
ldi R17,>_OSStkWidth
ldi R16,<_OSTaskCreateEn
ldi R17,>_OSTaskCreateEn
ldi R16,<_OSTaskCreateExtEn
ldi R17,>_OSTaskCreateExtEn
ldi R16,<_OSTaskDelEn
ldi R17,>_OSTaskDelEn
ldi R16,<_OSTaskIdleStkSize
ldi R17,>_OSTaskIdleStkSize
ldi R16,<_OSTaskProfileEn
ldi R17,>_OSTaskProfileEn
ldi R16,<_OSTaskMax
ldi R17,>_OSTaskMax
ldi R16,<_OSTaskNameSize
ldi R17,>_OSTaskNameSize
ldi R16,<_OSTaskStatEn
ldi R17,>_OSTaskStatEn
ldi R16,<_OSTaskStatStkSize
ldi R17,>_OSTaskStatStkSize
ldi R16,<_OSTaskStatStkChkEn
ldi R17,>_OSTaskStatStkChkEn
ldi R16,<_OSTaskSwHookEn
ldi R17,>_OSTaskSwHookEn
ldi R16,<_OSTCBPrioTblMax
ldi R17,>_OSTCBPrioTblMax
ldi R16,<_OSTCBSize
ldi R17,>_OSTCBSize
ldi R16,<_OSTicksPerSec
ldi R17,>_OSTicksPerSec
ldi R16,<_OSTimeTickHookEn
ldi R17,>_OSTimeTickHookEn
ldi R16,<_OSVersionNbr
ldi R17,>_OSVersionNbr
ldi R16,<_OSDataSize
ldi R17,>_OSDataSize
L108:
.dbline 0 ; func end
ret
.area bss(ram, con, rel)
_OSTCBTbl::
.blkb 231
_OSTCBPrioTbl::
.blkb 18
_OSTCBList::
.blkb 2
_OSTCBHighRdy::
.blkb 2
_OSTCBFreeList::
.blkb 2
_OSTCBCur::
.blkb 2
_OSTaskIdleStk::
.blkb 128
_OSIdleCtr::
.blkb 4
_OSTaskCtr::
.blkb 1
_OSRunning::
.blkb 1
_OSRdyTbl::
.blkb 2
_OSRdyGrp::
.blkb 1
_OSPrioHighRdy::
.blkb 1
_OSPrioCur::
.blkb 1
_OSLockNesting::
.blkb 1
_OSIntNesting::
.blkb 1
_OSCtxSwCtr::
.blkb 4
.area func_lit
PL_OS_TaskIdle: .word `_OS_TaskIdle
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -