ucos_ii.s

来自「基于mega128的ucos参考源码」· S 代码 · 共 4,541 行 · 第 1/5 页

S
4,541
字号
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R30,z+0
	clr R31
	ldi R24,<_OSUnMapTbl
	ldi R25,>_OSUnMapTbl
	add R30,R24
	adc R31,R25
	lpm R22,Z
	.dbline 461
	mov R2,R22
	clr R3
	mov R4,R20
	clr R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	add R4,R2
	adc R5,R3
	sts _OSPrioHighRdy,R4
	.dbline 462
	mov R2,R4
	sts _OSPrioCur,R2
	.dbline 463
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_OSTCBPrioTbl
	ldi R25,>_OSTCBPrioTbl
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	sts _OSTCBHighRdy+1,R3
	sts _OSTCBHighRdy,R2
	.dbline 464
	sts _OSTCBCur+1,R3
	sts _OSTCBCur,R2
	.dbline 465
	xcall _OSStartHighRdy
	.dbline 466
L33:
	.dbline -2
L32:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r x 22 c
	.dbsym r y 20 c
	.dbend
	.dbfunc e OSTimeTick _OSTimeTick fV
	.dbstruct 0 8 os_event
	.dbfield 0 OSEventType c
	.dbfield 1 OSEventGrp c
	.dbfield 2 OSEventCnt i
	.dbfield 4 OSEventPtr pV
	.dbfield 6 OSEventTbl A[2:2]c
	.dbend
	.dbstruct 0 34 os_tcb
	.dbfield 0 OSTCBStkPtr pc
	.dbfield 2 OSTCBNext pS[os_tcb]
	.dbfield 4 OSTCBPrev pS[os_tcb]
	.dbfield 6 OSTCBEventPtr pS[os_event]
	.dbfield 8 OSTCBDly i
	.dbfield 10 OSTCBStat c
	.dbfield 11 OSTCBPrio c
	.dbfield 12 OSTCBX c
	.dbfield 13 OSTCBY c
	.dbfield 14 OSTCBBitX c
	.dbfield 15 OSTCBBitY c
	.dbfield 16 OSTCBCtxSwCtr l
	.dbfield 20 OSTCBCyclesTot l
	.dbfield 24 OSTCBCyclesStart l
	.dbfield 28 OSTCBStkBase pc
	.dbfield 30 OSTCBStkUsed l
	.dbend
;           step -> R20
;         cpu_sr -> R20
;           ptcb -> R22,R23
	.even
_OSTimeTick::
	xcall push_gset2
	.dbline -1
	.dbline 524
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	.dbline 533
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	xcall _OSTimeTickHook
	.dbline 540
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	lds R24,_OSRunning
	cpi R24,1
	breq X7
	xjmp L36
X7:
	.dbline 540
	.dbline 562
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	ldi R20,1
	.dbline 564
; Pピ
; Pピ
	cpi R20,1
	breq X8
	xjmp L38
X8:
	.dbline 564
	.dbline 565
; Pピ
	lds R22,_OSTCBList
	lds R23,_OSTCBList+1
	xjmp L41
L40:
	.dbline 566
; Pピ
	.dbline 567
; Pピ
	xcall _OS_CPU_SR_Save
	mov R20,R16
	.dbline 568
; Pピ
	movw R30,R22
	ldd R2,z+8
	ldd R3,z+9
	tst R2
	brne X5
	tst R3
	brne X9
	xjmp L43
X9:
X5:
	.dbline 568
	.dbline 569
; Pピ
	movw R24,R22
	adiw R24,8
	movw R30,R24
	ldd R24,z+0
	ldd R25,z+1
	sbiw R24,1
	movw R4,R24
	std z+1,R5
	std z+0,R4
	cpi R24,0
	cpc R24,R25
	breq X10
	xjmp L45
X10:
X6:
	.dbline 569
	.dbline 570
; Pピ
	movw R30,R22
	ldd R2,z+10
	sbrc R2,3
	rjmp L47
	.dbline 570
	.dbline 571
; Pピ
	movw R30,R22
	ldd R2,z+15
	lds R3,_OSRdyGrp
	or R3,R2
	sts _OSRdyGrp,R3
	.dbline 572
; Pピ
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	movw R30,R22
	ldd R2,z+13
	clr R3
	add R2,R24
	adc R3,R25
	movw R30,R22
	ldd R4,z+14
	movw R30,R2
	ldd R5,z+0
	or R5,R4
	std z+0,R5
	.dbline 573
	xjmp L48
L47:
	.dbline 573
; Pピ
	.dbline 574
; Pピ
	ldi R24,1
	ldi R25,0
	movw R30,R22
	std z+9,R25
	std z+8,R24
	.dbline 575
; Pピ
L48:
	.dbline 576
; Pピ
L45:
	.dbline 577
; Pピ
L43:
	.dbline 578
	movw R30,R22
	ldd R22,z+2
	ldd R23,z+3
	.dbline 579
	mov R16,R20
	xcall _OS_CPU_SR_Restore
	.dbline 580
L41:
	.dbline 566
	movw R30,R22
	ldd R24,z+11
	cpi R24,8
	breq X11
	xjmp L40
X11:
	.dbline 581
; Pピ
; Pピ
; Pピ
; Pピ
L38:
	.dbline 582
L36:
	.dbline -2
L35:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r step 20 c
	.dbsym r cpu_sr 20 c
	.dbsym r ptcb 22 pS[os_tcb]
	.dbend
	.dbfunc e OSVersion _OSVersion fi
	.even
_OSVersion::
	.dbline -1
	.dbline 600
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	.dbline 601
; Pピ
	ldi R16,270
	ldi R17,1
	.dbline -2
L49:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e OS_EventTaskRdy _OS_EventTaskRdy fc
;           bity -> R12
;           bitx -> R22
;           prio -> R20
;              x -> R20
;           ptcb -> R14,R15
;              y -> R10
;            msk -> y+10
;            msg -> R18,R19
;         pevent -> R16,R17
	.even
_OS_EventTaskRdy::
	xcall push_gset5
	.dbline -1
	.dbline 647
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	.dbline 656
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	ldi R24,<_OSUnMapTbl
	ldi R25,>_OSUnMapTbl
	movw R30,R16
	ldd R30,z+1
	clr R31
	add R30,R24
	adc R31,R25
	lpm R10,Z
	.dbline 657
; Pピ
	ldi R24,<_OSMapTbl
	ldi R25,>_OSMapTbl
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	lpm R12,Z
	.dbline 658
; Pピ
	movw R24,R16
	adiw R24,6
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R30,z+0
	clr R31
	ldi R24,<_OSUnMapTbl
	ldi R25,>_OSUnMapTbl
	add R30,R24
	adc R31,R25
	lpm R20,Z
	.dbline 659
; Pピ
	ldi R24,<_OSMapTbl
	ldi R25,>_OSMapTbl
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	lpm R22,Z
	.dbline 660
; Pピ
	mov R2,R20
	clr R3
	mov R20,R10
	clr R21
	lsl R20
	rol R21
	lsl R20
	rol R21
	lsl R20
	rol R21
	add R20,R2
	adc R21,R3
	.dbline 661
; Pピ
	movw R24,R16
	adiw R24,6
	mov R2,R10
	clr R3
	add R2,R24
	adc R3,R25
	mov R4,R22
	com R4
	movw R30,R2
	ldd R5,z+0
	and R5,R4
	std z+0,R5
	.dbline 662
; Pピ
	movw R24,R16
	adiw R24,6
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L51
	.dbline 662
	.dbline 663
; Pピ
	movw R24,R16
	adiw R24,1
	mov R4,R12
	com R4
	movw R30,R24
	ldd R5,z+0
	and R5,R4
	std z+0,R5
	.dbline 664
; Pピ
L51:
	.dbline 665
; Pピ
	ldi R24,2
	mul R24,R20
	movw R30,R0
	ldi R24,<_OSTCBPrioTbl
	ldi R25,>_OSTCBPrioTbl
	add R30,R24
	adc R31,R25
	ldd R14,z+0
	ldd R15,z+1
	.dbline 666
; Pピ
	clr R2
	clr R3
	movw R30,R14
	std z+9,R3
	std z+8,R2
	.dbline 667
; Pピ
	movw R30,R14
	std z+7,R3
	std z+6,R2
	.dbline 671
; Pピ
; Pピ
; Pピ
; Pピ
	.dbline 673
; Pピ
; Pピ
	movw R24,R14
	adiw R24,10
	ldd R4,y+10
	com R4
	movw R30,R24
	ldd R5,z+0
	and R5,R4
	std z+0,R5
	.dbline 674
; Pピ
	movw R30,R14
	ldd R2,z+10
	tst R2
	brne L53
	.dbline 674
	.dbline 675
; Pピ
	lds R2,_OSRdyGrp
	or R2,R12
	sts _OSRdyGrp,R2
	.dbline 676
; Pピ
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	mov R2,R10
	clr R3
	add R2,R24
	adc R3,R25
	movw R30,R2
	ldd R4,z+0
	or R4,R22
	std z+0,R4
	.dbline 677
; Pピ
L53:
	.dbline 678
; Pピ
	mov R16,R20
	.dbline -2
L50:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r bity 12 c
	.dbsym r bitx 22 c
	.dbsym r prio 20 c
	.dbsym r x 20 c
	.dbsym r ptcb 14 pS[os_tcb]
	.dbsym r y 10 c
	.dbsym l msk 10 c
	.dbsym r msg 18 pV
	.dbsym r pevent 16 pS[os_event]
	.dbend
	.dbfunc e OS_EventTaskWait _OS_EventTaskWait fV
;              y -> R20
;         pevent -> R16,R17
	.even
_OS_EventTaskWait::
	xcall push_gset1
	.dbline -1
	.dbline 698
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	.dbline 702
; Pピ
; Pピ
; Pピ
; Pピ
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	std z+7,R17
	std z+6,R16
	.dbline 703
; Pピ
	ldd R20,z+13
	.dbline 704
; Pピ
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	mov R2,R20
	clr R3
	add R2,R24
	adc R3,R25
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R4,z+14
	com R4
	movw R30,R2
	ldd R5,z+0
	and R5,R4
	std z+0,R5
	.dbline 705
; Pピ
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L56
	.dbline 705
	.dbline 706
; Pピ
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R2,z+15
	com R2
	lds R3,_OSRdyGrp
	and R3,R2
	sts _OSRdyGrp,R3
	.dbline 707
; Pピ
L56:
	.dbline 708
; Pピ
	movw R24,R16
	adiw R24,6
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R2,z+13
	clr R3
	add R2,R24
	adc R3,R25
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R4,z+14
	movw R30,R2
	ldd R5,z+0
	or R5,R4
	std z+0,R5
	.dbline 709
; Pピ
	movw R24,R16
	adiw R24,1
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R4,z+15
	movw R30,R24
	ldd R5,z+0
	or R5,R4
	std z+0,R5
	.dbline -2
L55:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r y 20 c
	.dbsym r pevent 16 pS[os_event]
	.dbend
	.dbfunc e OS_EventTO _OS_EventTO fV
;              y -> R20
;         pevent -> R16,R17
	.even
_OS_EventTO::
	xcall push_gset1
	.dbline -1
	.dbline 729
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	.dbline 733
; Pピ
; Pピ
; Pピ
; Pピ
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R20,z+13
	.dbline 734
; Pピ
	movw R24,R16
	adiw R24,6
	mov R2,R20
	clr R3
	add R2,R24
	adc R3,R25
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R4,z+14
	com R4
	movw R30,R2
	ldd R5,z+0
	and R5,R4
	std z+0,R5
	.dbline 735
; Pピ
	movw R24,R16
	adiw R24,6
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L59
	.dbline 735
	.dbline 736
; Pピ
	movw R24,R16
	adiw R24,1
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	ldd R4,z+15
	com R4
	movw R30,R24
	ldd R5,z+0
	and R5,R4
	std z+0,R5
	.dbline 737
; Pピ
L59:
	.dbline 738
; Pピ
	clr R2
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	std z+10,R2
	.dbline 739
; Pピ
	clr R3
	lds R30,_OSTCBCur
	lds R31,_OSTCBCur+1
	std z+7,R3
	std z+6,R2
	.dbline -2
L58:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r y 20 c
	.dbsym r pevent 16 pS[os_event]
	.dbend
	.dbfunc e OS_EventWaitListInit _OS_EventWaitListInit fV
;           ptbl -> R20,R21
;         pevent -> R16,R17
	.even
_OS_EventWaitListInit::
	xcall push_gset1
	.dbline -1
	.dbline 758
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
	.dbline 762
; Pピ
; Pピ
; Pピ
; Pピ
	clr R2
	movw R30,R16
	std z+1,R2
	.dbline 763
; Pピ
	movw R20,R16
	subi R20,250  ; offset = 6
	sbci R21,255
	.dbline 766
; Pピ
; Pピ

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?