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

📄 ucos_ii.s

📁 这是一个UCOS程序
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module UCOS_II.C
	.area vector(rom, abs)
	.org 64
	jmp _OSTickISR
	.area lit(rom, con, rel)
_OSMapTbl::
	.byte 1,2
	.byte 4,8
	.byte 16,32
	.byte 64,128
_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
	.area text(rom, con, rel)
	.even
_OSInit::
; /*
; *********************************************************************************************************
; *                                                uC/OS-II
; *                                          The Real-Time Kernel
; *
; *                          (c) Copyright 1992-2003, Jean J. Labrosse, Weston, FL
; *                                           All Rights Reserved
; *
; * File    : uCOS_II.C
; * By      : Jean J. Labrosse
; * Version : V2.76
; *********************************************************************************************************
; */
; 
; #define  OS_GLOBALS                           /* Declare GLOBAL variables                              */
; #include <ucos_ii.h>
; 
; 
; #define  OS_MASTER_FILE                       /* Prevent the following files from including includes.h */
; #include <os_core.c>
; #include <os_flag.c>
; #include <os_mbox.c>
; #include <os_mem.c>
; #include <os_mutex.c>
; #include <os_q.c>
; #include <os_sem.c>
; #include <os_task.c>
; #include <os_time.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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
; #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>
	xcall _OSInitHookBegin
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
	xcall _OS_InitMisc
; #include <os_dbg.c>
; #include <os_dbg.c>
	xcall _OS_InitRdyList
; #include <os_dbg.c>
; #include <os_dbg.c>
	xcall _OS_InitTCBList
; #include <os_dbg.c>
; #include <os_dbg.c>
	xcall _OS_InitEventList
; #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>
	xcall _OS_InitTaskIdle
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
	xcall _OSInitHookEnd
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
; #include <os_dbg.c>
	xcall _OSDebugInit
L1:
	.dbline 0 ; func end
	ret
	.even
_OSIntEnter::
; #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>
; #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>
; #include <os_dbg.c>
	lds R24,_OSRunning
	cpi R24,1
	brne L3
; #include <os_dbg.c>
	lds R24,_OSIntNesting
	cpi R24,255
	brsh L5
; #include <os_dbg.c>
	subi R24,255    ; addi 1
	sts _OSIntNesting,R24
; #include <os_dbg.c>
L5:
; #include <os_dbg.c>
L3:
L2:
	.dbline 0 ; func end
	ret
;              y -> R12
;         cpu_sr -> R10
	.even
_OSIntExit::
	xcall push_gset4
; #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>
; #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>
	clr R10
; #include <os_dbg.c>
; #include <os_dbg.c>
	lds R24,_OSRunning
	cpi R24,1
	breq X0
	xjmp L8
X0:
; #include <os_dbg.c>
	xcall _OS_CPU_SR_Save
	mov R10,R16
; #include <os_dbg.c>
	clr R2
	lds R3,_OSIntNesting
	cp R2,R3
	brsh L10
; #include <os_dbg.c>
	mov R24,R3
	subi R24,1
	sts _OSIntNesting,R24
; #include <os_dbg.c>
L10:
; #include <os_dbg.c>
	lds R2,_OSIntNesting
	tst R2
	breq X1
	xjmp L12
X1:
; #include <os_dbg.c>
	lds R2,_OSLockNesting
	tst R2
	breq X2
	xjmp L14
X2:
; #include <os_dbg.c>
	ldi R24,<_OSUnMapTbl
	ldi R25,>_OSUnMapTbl
	lds R30,_OSRdyGrp
	clr R31
	add R30,R24
	adc R31,R25
	lpm R12,Z
; #include <os_dbg.c>
	ldi R24,<_OSRdyTbl
	ldi R25,>_OSRdyTbl
	mov R30,R12
	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,R12
	clr R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	add R4,R2
	adc R5,R3
	sts _OSPrioHighRdy,R4
; #include <os_dbg.c>
	lds R2,_OSPrioCur
	cp R4,R2
	brne X3
	xjmp L16
X3:
; #include <os_dbg.c>
	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
; #include <os_dbg.c>
; #include <os_dbg.c>
	movw R24,R2
	adiw R24,15
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R24
	ldd R4,z+0
	ldd R5,z+1
	ldd R6,z+2
	ldd R7,z+3
	add R4,R20
	adc R5,R21
	adc R6,R22
	adc R7,R23
	std z+0,R4
	std z+1,R5
	std z+2,R6
	std z+3,R7
; #include <os_dbg.c>
; #include <os_dbg.c>
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_OSCtxSwCtr+2
	lds R5,_OSCtxSwCtr+2+1
	lds R2,_OSCtxSwCtr
	lds R3,_OSCtxSwCtr+1
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _OSCtxSwCtr+1,R3
	sts _OSCtxSwCtr,R2
	sts _OSCtxSwCtr+2+1,R5
	sts _OSCtxSwCtr+2,R4
; #include <os_dbg.c>
	xcall _OSIntCtxSw
; #include <os_dbg.c>
L16:
; #include <os_dbg.c>
L14:
; #include <os_dbg.c>
L12:
; #include <os_dbg.c>
	mov R16,R10
	xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
L8:
L7:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
;         cpu_sr -> R20
	.even
_OSSchedLock::
	xcall push_gset1
; #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>
; #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>
	clr R20
; #include <os_dbg.c>
; #include <os_dbg.c>
	lds R24,_OSRunning
	cpi R24,1
	brne L19
; #include <os_dbg.c>
	xcall _OS_CPU_SR_Save
	mov R20,R16
; #include <os_dbg.c>
	lds R24,_OSLockNesting
	cpi R24,255
	brsh L21
; #include <os_dbg.c>
	subi R24,255    ; addi 1
	sts _OSLockNesting,R24
; #include <os_dbg.c>
L21:
; #include <os_dbg.c>
	mov R16,R20
	xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
L19:
L18:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
;         cpu_sr -> R20
	.even
_OSSchedUnlock::
	xcall push_gset1
; #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>
; #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>
	clr R20
; #include <os_dbg.c>
; #include <os_dbg.c>
	lds R24,_OSRunning
	cpi R24,1
	brne L24
; #include <os_dbg.c>
	xcall _OS_CPU_SR_Save
	mov R20,R16
; #include <os_dbg.c>
	clr R2
	lds R3,_OSLockNesting
	cp R2,R3
	brsh L26
; #include <os_dbg.c>
	mov R24,R3
	subi R24,1
	sts _OSLockNesting,R24
; #include <os_dbg.c>
	tst R24
	brne L28
; #include <os_dbg.c>
	lds R2,_OSIntNesting
	tst R2
	brne L30
; #include <os_dbg.c>
	xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
	xcall _OS_Sched
	xjmp L27
L30:
; #include <os_dbg.c>
; #include <os_dbg.c>
	mov R16,R20
	xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
	xjmp L27
L28:
; #include <os_dbg.c>
; #include <os_dbg.c>
	mov R16,R20
	xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
	xjmp L27
L26:
; #include <os_dbg.c>
; #include <os_dbg.c>
	mov R16,R20
	xcall _OS_CPU_SR_Restore
; #include <os_dbg.c>
L27:
; #include <os_dbg.c>
L24:
L23:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
;              x -> R22

⌨️ 快捷键说明

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