📄 os_cpu.lst
字号:
62 PUSH R23
63 PUSH R24
64 PUSH R25
65 PUSH R26
66 PUSH R27
67 PUSH R28
68 PUSH R29
69 PUSH R30
70 PUSH R31
71
72 IN R16,0X3F ;保存SREG寄存器
73 PUSH R16
74 .endm
75
76 ;恢复寄存器宏
77
78 .macro POPRS
79
80 POP R16 ;恢复SREG寄存器
81 OUT 0X3F,R16
82
83 POP R31
84 POP R30
85 POP R29
86 POP R28
87 POP R27
88 POP R26
89 POP R25
90 POP R24
91 POP R23
92 POP R22
93 POP R21
94 POP R20
95 POP R19
96 POP R18
97 POP R17
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccAvaaaa.s page 11
98 POP R16
99 POP R15
100 POP R14
101 POP R13
102 POP R12
103 POP R11
104 POP R10
105 POP R9
106 POP R8
107 POP R7
108 POP R6
109 POP R5
110 POP R4
111 POP R3
112 POP R2
113 POP R1
114 POP R0
115 .endm
116
117 ;汇编函数跳入下一条线程
118 OS_GET_TO_TASK_INT:
119:os_cpu.S **** POPRS
119 >
119 0000 0F91 > POP R16
119 0002 0FBF > OUT 0X3F,R16
119 >
119 0004 FF91 > POP R31
119 0006 EF91 > POP R30
119 0008 DF91 > POP R29
119 000a CF91 > POP R28
119 000c BF91 > POP R27
119 000e AF91 > POP R26
119 0010 9F91 > POP R25
119 0012 8F91 > POP R24
119 0014 7F91 > POP R23
119 0016 6F91 > POP R22
119 0018 5F91 > POP R21
119 001a 4F91 > POP R20
119 001c 3F91 > POP R19
119 001e 2F91 > POP R18
119 0020 1F91 > POP R17
119 0022 0F91 > POP R16
119 0024 FF90 > POP R15
119 0026 EF90 > POP R14
119 0028 DF90 > POP R13
119 002a CF90 > POP R12
119 002c BF90 > POP R11
119 002e AF90 > POP R10
119 0030 9F90 > POP R9
119 0032 8F90 > POP R8
119 0034 7F90 > POP R7
119 0036 6F90 > POP R6
119 0038 5F90 > POP R5
119 003a 4F90 > POP R4
119 003c 3F90 > POP R3
119 003e 2F90 > POP R2
119 0040 1F90 > POP R1
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccAvaaaa.s page 12
119 0042 0F90 > POP R0
120:os_cpu.S **** OS_SET_I ;开中断
121:os_cpu.S **** RETI
122
123 ;汇编函数跳入下一条线程
124 OS_GET_TO_TASK_DISP:
125:os_cpu.S **** POPRS
125 >
125 0048 0F91 > POP R16
125 004a 0FBF > OUT 0X3F,R16
125 >
125 004c FF91 > POP R31
125 004e EF91 > POP R30
125 0050 DF91 > POP R29
125 0052 CF91 > POP R28
125 0054 BF91 > POP R27
125 0056 AF91 > POP R26
125 0058 9F91 > POP R25
125 005a 8F91 > POP R24
125 005c 7F91 > POP R23
125 005e 6F91 > POP R22
125 0060 5F91 > POP R21
125 0062 4F91 > POP R20
125 0064 3F91 > POP R19
125 0066 2F91 > POP R18
125 0068 1F91 > POP R17
125 006a 0F91 > POP R16
125 006c FF90 > POP R15
125 006e EF90 > POP R14
125 0070 DF90 > POP R13
125 0072 CF90 > POP R12
125 0074 BF90 > POP R11
125 0076 AF90 > POP R10
125 0078 9F90 > POP R9
125 007a 8F90 > POP R8
125 007c 7F90 > POP R7
125 007e 6F90 > POP R6
125 0080 5F90 > POP R5
125 0082 4F90 > POP R4
125 0084 3F90 > POP R3
125 0086 2F90 > POP R2
125 0088 1F90 > POP R1
125 008a 0F90 > POP R0
126:os_cpu.S **** OS_SET_I ;开中断
127:os_cpu.S **** RET
128
129 ;汇编线程等待处理过程
130 OS_DISP_TIME_P: ;线程延时处理
131:os_cpu.S **** OS_CLEAR_I ;关中断
132:os_cpu.S **** PUSHRS ;保存寄存器
132 0092 0F92 > PUSH R0
132 0094 1F92 > PUSH R1
132 0096 2F92 > PUSH R2
132 0098 3F92 > PUSH R3
132 009a 4F92 > PUSH R4
132 009c 5F92 > PUSH R5
132 009e 6F92 > PUSH R6
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccAvaaaa.s page 13
132 00a0 7F92 > PUSH R7
132 00a2 8F92 > PUSH R8
132 00a4 9F92 > PUSH R9
132 00a6 AF92 > PUSH R10
132 00a8 BF92 > PUSH R11
132 00aa CF92 > PUSH R12
132 00ac DF92 > PUSH R13
132 00ae EF92 > PUSH R14
132 00b0 FF92 > PUSH R15
132 00b2 0F93 > PUSH R16
132 00b4 1F93 > PUSH R17
132 00b6 2F93 > PUSH R18
132 00b8 3F93 > PUSH R19
132 00ba 4F93 > PUSH R20
132 00bc 5F93 > PUSH R21
132 00be 6F93 > PUSH R22
132 00c0 7F93 > PUSH R23
132 00c2 8F93 > PUSH R24
132 00c4 9F93 > PUSH R25
132 00c6 AF93 > PUSH R26
132 00c8 BF93 > PUSH R27
132 00ca CF93 > PUSH R28
132 00cc DF93 > PUSH R29
132 00ce EF93 > PUSH R30
132 00d0 FF93 > PUSH R31
132 >
132 00d2 0FB7 > IN R16,0X3F
132 00d4 0F93 > PUSH R16
133:os_cpu.S **** IN R25,0X3E ;传递SPH
134:os_cpu.S **** IN R24,0X3D ;传递SPL
135:os_cpu.S **** RCALL OS_SAVE_TASK_SP ;调用C保存SP
136:os_cpu.S **** RCALL OS_ATTEMPER ;进入C调度
137:os_cpu.S **** RJMP OS_GETTO_NEXT_TASK_DISP ;进入C指向函数处理过程
138
139
140 ;第一次启动入口点
141 START_TICK_POINT:
142:os_cpu.S **** RCALL OS_ATTEMPER; ;进入C调度
143:os_cpu.S **** RJMP OS_GETTO_NEXT_TASK_DISP ;进入C指向函数处理过程
144
145 ;中断入口
146 .global SIG_OVERFLOW0 ;中断入口点 用户根据情况修改
147 SIG_OVERFLOW0: ;中断入口点 用户根据情况修改
148
149 ;SEI
150:os_cpu.S **** OS_CLEAR_I ;关中断
151:os_cpu.S **** PUSHRS ;保存寄存器
151 00e6 0F92 > PUSH R0
151 00e8 1F92 > PUSH R1
151 00ea 2F92 > PUSH R2
151 00ec 3F92 > PUSH R3
151 00ee 4F92 > PUSH R4
151 00f0 5F92 > PUSH R5
151 00f2 6F92 > PUSH R6
151 00f4 7F92 > PUSH R7
151 00f6 8F92 > PUSH R8
151 00f8 9F92 > PUSH R9
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccAvaaaa.s page 14
151 00fa AF92 > PUSH R10
151 00fc BF92 > PUSH R11
151 00fe CF92 > PUSH R12
151 0100 DF92 > PUSH R13
151 0102 EF92 > PUSH R14
151 0104 FF92 > PUSH R15
151 0106 0F93 > PUSH R16
151 0108 1F93 > PUSH R17
151 010a 2F93 > PUSH R18
151 010c 3F93 > PUSH R19
151 010e 4F93 > PUSH R20
151 0110 5F93 > PUSH R21
151 0112 6F93 > PUSH R22
151 0114 7F93 > PUSH R23
151 0116 8F93 > PUSH R24
151 0118 9F93 > PUSH R25
151 011a AF93 > PUSH R26
151 011c BF93 > PUSH R27
151 011e CF93 > PUSH R28
151 0120 DF93 > PUSH R29
151 0122 EF93 > PUSH R30
151 0124 FF93 > PUSH R31
151 >
151 0126 0FB7 > IN R16,0X3F
151 0128 0F93 > PUSH R16
152:os_cpu.S **** IN R25,0X3E ;传递SPH
153:os_cpu.S **** IN R24,0X3D ;传递SPL
154:os_cpu.S **** RCALL OS_SAVE_TASK_SP ;调用C保存SP
155:os_cpu.S **** RCALL OS_RELOAD_TICK ;C函数重新初始化系统时钟
156:os_cpu.S **** RCALL OS_DLY_TIME_DEC ;时钟节拍处理
157:os_cpu.S **** RCALL OS_ATTEMPER; ;进入C调度
158:os_cpu.S **** RJMP OS_GETTO_NEXT_TASK_INT ;进入C指向函数处理过程
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccAvaaaa.s page 15
DEFINED SYMBOLS
*ABS*:00000000 os_cpu.S
*ABS*:00000000 C:/WinAVR/avr/include/avr/signal.h
*ABS*:00000000 os_cpu.S
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h
*ABS*:00000000 C:/WinAVR/avr/include/avr/iom8.h
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h
*ABS*:00000000 C:/WinAVR/avr/include/avr/sfr_defs.h
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h
*ABS*:00000000 os_cpu.S
*ABS*:00000000 <command line>
*ABS*:00000000 <built-in>
*ABS*:00000000 os_cpu.S
os_cpu.S:118 .text:00000000 OS_GET_TO_TASK_INT
os_cpu.S:124 .text:00000048 OS_GET_TO_TASK_DISP
os_cpu.S:141 .text:000000e0 START_TICK_POINT
os_cpu.S:130 .text:00000090 OS_DISP_TIME_P
os_cpu.S:147 .text:000000e4 __vector_9
UNDEFINED SYMBOLS
OS_SAVE_TASK_SP
OS_ATTEMPER
OS_GETTO_NEXT_TASK_DISP
OS_RELOAD_TICK
OS_DLY_TIME_DEC
OS_GETTO_NEXT_TASK_INT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -