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

📄 ucos_ii.s

📁 Atmega128的proteus仿真例程
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Ucos_ii.c
	.area lit(rom, con, rel)
_OSMapTbl::
	.byte 1,2
	.byte 4,8
	.byte 16,32
	.byte 64,128
	.dbfile D:\MTD\work\iccavr\ucos-M128\source/os_core.c
	.dbsym e OSMapTbl _OSMapTbl A[8:8]kc
_OSUnMapTbl::
	.byte 0,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 5,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 6,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 5,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 7,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 5,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 6,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 5,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 4,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.byte 3,0
	.byte 1,0
	.byte 2,0
	.byte 1,0
	.dbsym e OSUnMapTbl _OSUnMapTbl A[256:256]kc
	.area text(rom, con, rel)
	.dbfile D:\MTD\work\iccavr\ucos-M128\source/os_core.c
	.dbfunc e OSInit _OSInit fV
;              i -> R10,R11
	.even
_OSInit::
	xcall push_gset3x
	sbiw R28,3
	.dbline -1
	.dbline 77
; /*
; *********************************************************************************************************
; *                                                uC/OS-II
; *                                          The Real-Time Kernel
; *
; *                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
; *                                           All Rights Reserved
; *
; *                                                  V2.00
; *
; * File : uCOS_II.C
; * By   : Jean J. Labrosse
; *********************************************************************************************************
; */
; 
; #define  OS_GLOBALS                           /* Declare GLOBAL variables                              */
; #include "..\test\includes.h"
; 
; 
; #define  OS_MASTER_FILE                       /* Prevent the following files from including includes.h */
; #include "os_core.c"
; #include "os_task.c"
; #include "os_time.c"
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 81
; 
; 
; 
; 
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	sts _OSTime+1,R25
	sts _OSTime,R24
	sts _OSTime+2+1,R27
	sts _OSTime+2,R26
	.dbline 82
; 
	clr R2
	sts _OSIntNesting,R2
	.dbline 83
; 
	sts _OSLockNesting,R2
	.dbline 85
; 
; 
	sts _OSTaskCtr,R2
	.dbline 87
; 
; 
	sts _OSRunning,R2
	.dbline 88
; 
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	sts _OSIdleCtr+1,R25
	sts _OSIdleCtr,R24
	sts _OSIdleCtr+2+1,R27
	sts _OSIdleCtr+2,R26
	.dbline 90
; 
; 
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	sts _OSCtxSwCtr+1,R25
	sts _OSCtxSwCtr,R24
	sts _OSCtxSwCtr+2+1,R27
	sts _OSCtxSwCtr+2,R26
	.dbline 91
; 
	sts _OSRdyGrp,R2
	.dbline 92
	clr R10
	clr R11
	xjmp L6
L3:
	.dbline 92
	.dbline 93
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	movw R30,R10
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 94
L4:
	.dbline 92
	movw R24,R10
	adiw R24,1
	movw R10,R24
L6:
	.dbline 92
; 
	movw R24,R10
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brlo L3
	.dbline 96
; 
; 
; 
; 
	clr R2
	sts _OSPrioCur,R2
	.dbline 97
; 
	sts _OSPrioHighRdy,R2
	.dbline 98
; 
	clr R3
	sts _OSTCBHighRdy+1,R3
	sts _OSTCBHighRdy,R2
	.dbline 99
; 
	sts _OSTCBCur+1,R3
	sts _OSTCBCur,R2
	.dbline 100
; 
	sts _OSTCBList+1,R3
	sts _OSTCBList,R2
	.dbline 101
	clr R10
	clr R11
	xjmp L10
L7:
	.dbline 101
	.dbline 102
	ldi R16,2
	ldi R17,0
	movw R18,R10
	xcall empy16s
	movw R30,R16
	ldi R24,<_OSTCBPrioTbl
	ldi R25,>_OSTCBPrioTbl
	add R30,R24
	adc R31,R25
	clr R2
	clr R3
	std z+1,R3
	std z+0,R2
	.dbline 103
L8:
	.dbline 101
	movw R24,R10
	adiw R24,1
	movw R10,R24
L10:
	.dbline 101
; 
	movw R24,R10
	cpi R24,16
	ldi R30,0
	cpc R25,R30
	brlo L7
	.dbline 104
	clr R10
	clr R11
	xjmp L14
L11:
	.dbline 104
	.dbline 105
	movw R18,R10
	subi R18,255  ; offset = 1
	sbci R19,255
	ldi R16,14
	ldi R17,0
	xcall empy16s
	movw R2,R16
	ldi R24,<_OSTCBTbl
	ldi R25,>_OSTCBTbl
	add R2,R24
	adc R3,R25
	ldi R16,14
	ldi R17,0
	movw R18,R10
	xcall empy16s
	movw R30,R16
	ldi R24,<_OSTCBTbl+2
	ldi R25,>_OSTCBTbl+2
	add R30,R24
	adc R31,R25
	std z+1,R3
	std z+0,R2
	.dbline 106
L12:
	.dbline 104
	movw R24,R10
	adiw R24,1
	movw R10,R24
L14:
	.dbline 104
; 
; 
; 
	movw R24,R10
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brlo L11
	.dbline 107
; 
; 
; 
	clr R2
	clr R3
	sts _OSTCBTbl+70+2+1,R3
	sts _OSTCBTbl+70+2,R2
	.dbline 108
; 
	ldi R24,<_OSTCBTbl
	ldi R25,>_OSTCBTbl
	sts _OSTCBFreeList+1,R25
	sts _OSTCBFreeList,R24
	.dbline 111
	clr R10
	clr R11
	xjmp L21
L18:
	.dbline 111
	.dbline 112
	movw R18,R10
	subi R18,255  ; offset = 1
	sbci R19,255
	ldi R16,8
	ldi R17,0
	xcall empy16s
	movw R2,R16
	ldi R24,<_OSEventTbl
	ldi R25,>_OSEventTbl
	add R2,R24
	adc R3,R25
	ldi R16,8
	ldi R17,0
	movw R18,R10
	xcall empy16s
	movw R30,R16
	ldi R24,<_OSEventTbl
	ldi R25,>_OSEventTbl
	add R30,R24
	adc R31,R25
	std z+1,R3
	std z+0,R2
	.dbline 113
L19:
	.dbline 111
	movw R24,R10
	adiw R24,1
	movw R10,R24
L21:
	.dbline 111
; 
; 
; 
	movw R24,R10
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brlo L18
	.dbline 114
; 
; 
; 
	clr R2
	clr R3
	sts _OSEventTbl+8+1,R3
	sts _OSEventTbl+8,R2
	.dbline 115
; 
	ldi R24,<_OSEventTbl
	ldi R25,>_OSEventTbl
	sts _OSEventFreeList+1,R25
	sts _OSEventFreeList,R24
	.dbline 119
; 
; 
; 
; 
	ldi R24,15
	std y+2,R24
	ldi R24,<_OSTaskIdleStk+99
	ldi R25,>_OSTaskIdleStk+99
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,<PL_OSTaskIdle
	ldi R17,>PL_OSTaskIdle
	xcall _OSTaskCreate
	.dbline -2
L2:
	adiw R28,3
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r i 10 i
	.dbend
	.dbfunc e OSIntExit _OSIntExit fV
	.even
_OSIntExit::
	.dbline -1
	.dbline 146
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 147
; 
	st -y,r16
	in r16,0x3F
	cli
	push r16
	ld r16,y+
	.dbline 147
	.dbline 148
; 
	lds R24,_OSIntNesting
	subi R24,1
	mov R2,R24
	sts _OSIntNesting,R2
	lds R4,_OSLockNesting
	or R2,R4
	breq X0
	xjmp L25
X0:
	.dbline 148
	.dbline 149
; 
	ldi R24,<_OSUnMapTbl
	ldi R25,>_OSUnMapTbl
	lds R30,_OSRdyGrp
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _OSIntExitY,R30
	.dbline 150
; 
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	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 R2,Z
	clr R3
	lds R4,_OSIntExitY
	clr R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	add R4,R2
	adc R5,R3
	sts _OSPrioHighRdy,R4
	.dbline 151
; 
	lds R2,_OSPrioCur
	cp R4,R2
	breq L27
	.dbline 151
	.dbline 152
; 
	mov R2,R4
	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 153
; 
	ldi R24,1
	ldi R25,0
	ldi R26,0
	ldi R27,0
	lds R4,_OSCtxSwCtr+2
	lds R5,_OSCtxSwCtr+2+1
	lds R2,_OSCtxSwCtr
	lds R3,_OSCtxSwCtr+1
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts _OSCtxSwCtr+1,R3
	sts _OSCtxSwCtr,R2
	sts _OSCtxSwCtr+2+1,R5
	sts _OSCtxSwCtr+2,R4
	.dbline 154
; 
	xcall _OSIntCtxSw
	.dbline 155
; 
L27:
	.dbline 156
; 
L25:
	.dbline 157
; 
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 157
	.dbline -2
L24:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e OSSched _OSSched fV
;              y -> R10
	.even
_OSSched::
	xcall push_gset3x
	.dbline -1
	.dbline 178
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 182
; 
; 
; 
; 
	st -y,r16
	in r16,0x3F
	cli
	push r16
	ld r16,y+
	.dbline 182
	.dbline 183
; 
	lds R2,_OSIntNesting
	lds R3,_OSLockNesting
	or R3,R2
	breq X1
	xjmp L30
X1:
	.dbline 183
	.dbline 184
; 
	ldi R24,<_OSUnMapTbl
	ldi R25,>_OSUnMapTbl
	lds R30,_OSRdyGrp
	clr R31
	add R30,R24
	adc R31,R25
	lpm R10,Z
	.dbline 185
; 
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	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 R2,Z
	clr R3
	mov R4,R10
	clr R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	add R4,R2
	adc R5,R3
	sts _OSPrioHighRdy,R4
	.dbline 186
; 
	lds R2,_OSPrioCur
	cp R4,R2
	breq L32
	.dbline 186
	.dbline 187
; 
	mov R2,R4
	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 188
; 
	ldi R24,1
	ldi R25,0
	ldi R26,0
	ldi R27,0
	lds R4,_OSCtxSwCtr+2
	lds R5,_OSCtxSwCtr+2+1
	lds R2,_OSCtxSwCtr
	lds R3,_OSCtxSwCtr+1
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts _OSCtxSwCtr+1,R3
	sts _OSCtxSwCtr,R2
	sts _OSCtxSwCtr+2+1,R5
	sts _OSCtxSwCtr+2,R4
	.dbline 189
; 
	xcall _OSCtxSw
	.dbline 190
; 
L32:
	.dbline 191
; 
L30:
	.dbline 192
; 
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 192
	.dbline -2
L29:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r y 10 c
	.dbend
	.dbfunc e OSStart _OSStart fV
;              x -> R12
;              y -> R10
	.even
_OSStart::
	xcall push_gset4x
	.dbline -1
	.dbline 214
	.dbline 219
	lds R2,_OSRunning
	tst R2
	breq X2
	xjmp L35
X2:
	.dbline 219
	.dbline 220
	ldi R24,<_OSUnMapTbl
	ldi R25,>_OSUnMapTbl
	lds R30,_OSRdyGrp
	clr R31
	add R30,R24
	adc R31,R25
	lpm R10,Z
	.dbline 221
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	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 R12,Z
	.dbline 222
	mov R2,R12
	clr R3
	mov R4,R10
	clr R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	add R4,R2
	adc R5,R3
	sts _OSPrioHighRdy,R4
	.dbline 223
	mov R2,R4
	sts _OSPrioCur,R2
	.dbline 224
	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 225
	sts _OSTCBCur+1,R3
	sts _OSTCBCur,R2
	.dbline 226
	xcall _OSStartHighRdy
	.dbline 227
L35:
	.dbline -2
L34:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r x 12 c
	.dbsym r y 10 c
	.dbend
	.dbfunc e OSTaskIdle _OSTaskIdle fV
;          pdata -> R16,R17
	.even
_OSTaskIdle::
	.dbline -1
	.dbline 244
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 245
; 
	.dbline 246
L38:
	.dbline 246
	.dbline 247
	st -y,r16
	in r16,0x3F
	cli
	push r16
	ld r16,y+
	.dbline 247
	.dbline 248
	ldi R24,1
	ldi R25,0
	ldi R26,0
	ldi R27,0
	lds R4,_OSIdleCtr+2
	lds R5,_OSIdleCtr+2+1
	lds R2,_OSIdleCtr
	lds R3,_OSIdleCtr+1
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts _OSIdleCtr+1,R3
	sts _OSIdleCtr,R2
	sts _OSIdleCtr+2+1,R5
	sts _OSIdleCtr+2,R4
	.dbline 249
	st -y,r16
	pop r16
	out 0x3F,r16
	ld r16,y+
	.dbline 249
	.dbline 250
	.dbline 246
	.dbline 246
	xjmp L38
X3:
	.dbline -2
L37:
	.dbline 0 ; func end
	ret
	.dbsym r pdata 16 pV
	.dbend
	.dbfunc e OSTCBInit _OSTCBInit fc
	.dbstruct 0 14 os_tcb
	.dbfield 0 OSTCBStkPtr pc
	.dbfield 2 OSTCBNext pS[os_tcb]
	.dbfield 4 OSTCBPrev pS[os_tcb]
	.dbfield 6 OSTCBDly i
	.dbfield 8 OSTCBStat c
	.dbfield 9 OSTCBPrio c
	.dbfield 10 OSTCBX c
	.dbfield 11 OSTCBY c
	.dbfield 12 OSTCBBitX c
	.dbfield 13 OSTCBBitY c
	.dbend
;           ptcb -> R10,R11
;            opt -> y+10
;           pext -> y+8
;       stk_size -> y+6
;             id -> y+4
;           pbos -> y+2
;           ptos -> R18,R19
;           prio -> R16
	.even
_OSTCBInit::
	xcall push_gset3x
	.dbline -1
	.dbline 297
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 301
; 
; 
; 

⌨️ 快捷键说明

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