⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucos_ii.s

📁 这是一个UCOS程序
💻 S
📖 第 1 页 / 共 4 页
字号:
	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 + -