📄 os_cpu_a.lst
字号:
###############################################################################
# #
# IAR Systems A90 Assembler V1.41B/386 13/Aug/2000 20:31:03 #
# Copyright 1999 IAR Systems. All rights reserved. #
# #
# Target option = Relative jumps do not wrap #
# Source file = os_cpu_a.s90 #
# List file = ..\lst\os_cpu_a.lst #
# Object file = ..\obj\os_cpu_a.r90 #
# Command line = -v3 -r -o ..\obj\os_cpu_a.r90 -l #
# ..\lst\os_cpu_a os_cpu_a.s90 #
# #
###############################################################################
1 00000000 ;*********************************************
**********************************************
*************
2 00000000 ;
uC/OS-II
3 00000000 ; The
Real-Time Kernel
4 00000000 ;
5 00000000 ;
ATmega103 Specific code
6 00000000 ;
(IAR V1.40)
7 00000000 ;
8 00000000 ;
9 00000000 ; File : OS_CPU_A.S90
10 00000000 ; By : Ole Saether
11 00000000 ;
12 00000000 ; $Revision: 2 $
13 00000000 ;
14 00000000 ; $History: OS_CPU_A.S90 $
15 00000000 ;
16 00000000 ; ***************** Version 2 **************
***
17 00000000 ; User: Ole Date: 8/13/00 Time:
14:52
18 00000000 ; Updated in $/UCOS-II/AT-M103
19 00000000 ; Interrupts are now disabled until OSIntNesti
ng is updated in OSTickISR.
20 00000000 ; Moved save/restore of status register from
PUSHRS/POPRS to two new
21 00000000 ; macros: PUSHSREG and POPSREG.
22 00000000 ;
23 00000000 ; ***************** Version 1 **************
***
24 00000000 ; User: Ole Date: 8/12/00 Time:
17:41
25 00000000 ; Created in $/UCOS-II/AT-M103
26 00000000 ; File copied from AVR port version 1.0 to the
version control system.
27 00000000 ;
28 00000000 ;*********************************************
**********************************************
*************
29 00000000 ;
I/O PORT ADDRESSES
30 00000000 ;*********************************************
**********************************************
*************
31 00000000
32 0000003F SREG = 0x3F
33 0000003E SPH = 0x3E
34 0000003D SPL = 0x3D
35 0000003B RAMPZ = 0x3B
36 00000032 TCNT0 = 0x32
37 00000000
38 00000000 ;*********************************************
**********************************************
*************
39 00000000 ;
PUBLIC DECLARATIONS
40 00000000 ;*********************************************
**********************************************
*************
41 00000000
42 00000000 MODULE OS_CPU_A
43 00000000 PUBLIC OSStartHighRdy
44 00000000 PUBLIC OSCtxSw
45 00000000 PUBLIC OSIntCtxSw
46 00000000 PUBLIC OSTickISR
47 00000000
48 00000000 ;*********************************************
**********************************************
*************
49 00000000 ;
EXTERNAL DECLARATIONS
50 00000000 ;*********************************************
**********************************************
*************
51 00000000
52 00000000 EXTERN OSIntExit
53 00000000 EXTERN OSIntNesting
54 00000000 EXTERN OSPrioCur
55 00000000 EXTERN OSPrioHighRdy
56 00000000 EXTERN OSRunning
57 00000000 EXTERN OSTaskSwHook
58 00000000 EXTERN OSTCBCur
59 00000000 EXTERN OSTCBHighRdy
60 00000000 EXTERN OSTimeTick
61 00000000
62 00000000 ;*********************************************
**********************************************
*************
63 00000000 ;
MACROS
64 00000000 ;*********************************************
**********************************************
*************
65 00000000
100 00000000
135 00000000
142 00000000
149 00000000
154 00000000
159 00000000
160 00000000 RSEG CODE
161 00000000
162 00000000 ;*********************************************
**********************************************
*************
163 00000000 ; START HIGHEST
PRIORITY TASK READY-TO-RUN
164 00000000 ;
165 00000000 ; Description : This function is called by
OSStart() to start the highest priority task
that was created
166 00000000 ; by your application before
calling OSStart().
167 00000000 ;
168 00000000 ; Note(s) : 1) The (data)stack frame is
assumed to look as follows:
169 00000000 ;
170 00000000 ; OSTCBHighRdy->OSTCBStkPtr
--> LSB of (return) stack pointer
(Low memory)
171 00000000 ;
SPH of (return) stack pointer
172 00000000 ;
Flags to load in status register
173 00000000 ;
R31
174 00000000 ;
R30
175 00000000 ;
R7
176 00000000 ;
.
177 00000000 ;
.
178 00000000 ;
.
179 00000000 ;
R0
(High memory)
180 00000000 ;
181 00000000 ; where the stack pointer
points to the task start address.
182 00000000 ;
183 00000000 ;
184 00000000 ; 2) OSStartHighRdy() MUST:
185 00000000 ; a) Call OSTaskSwHook()
then,
186 00000000 ; b) Set OSRunning to
TRUE,
187 00000000 ; c) Switch to the
highest priority task.
188 00000000 ;*********************************************
**********************************************
*************
189 00000000
190 00000000 ........ OSStartHighRdy: CALL OSTaskSwHook
; Invoke user defined context switch hook
191 00000004 9100.... LDS R16,OSRunning
; Indicate
that we are
multitasking
192 00000008 9503 INC R16
;
193 0000000A 9300.... STS OSRunning,R16
;
194 0000000E
195 0000000E 91E0.... LDS R30,OSTCBHighRdy
; Let Z
point to TCB of
highest priority
task
196 00000012 91F0.... LDS R31,OSTCBHighRdy+1
; ready to
run
197 00000016 91C1 LD R28,Z+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -