📄 os.lst
字号:
1 .file "os.c"
2 .arch atmega128
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
85 .global OSH_SET_PIN_DIRECTIONS
87 OSH_SET_PIN_DIRECTIONS:
1:os.c **** /*
2:os.c **** ****************************************************************************
3:os.c **** * 宁波市科技园区创业大厦六楼
4:os.c **** * 宁波中科集成电路设计中心 版权所有 Copyright 2005
5:os.c **** *
6:os.c **** *文件名: os.c
7:os.c **** *程序员:
8:os.c **** *主要内容:内核调度
9:os.c **** *完成日期:2005.3.25
10:os.c **** ****************************************************************************
11:os.c **** */
12:os.c ****
13:os.c **** #include "os.h"
14:os.c **** #include "fun.h"
15:os.c **** #include "adc.h"
16:os.c **** #include "app.h"
17:os.c ****
18:os.c ****
19:os.c **** typedef struct SchedUnit{
20:os.c **** void (*tp)(void);
21:os.c **** } OSSchedUnit;
22:os.c ****
23:os.c **** enum {
24:os.c **** OSH_MAX_TASKS = 8,
25:os.c **** OSH_TASK_BITMASK = OSH_MAX_TASKS - 1
26:os.c **** };
27:os.c ****
28:os.c **** OSSchedUnit OSH_queue[OSH_MAX_TASKS];
29:os.c **** volatile uint8_t OSH_sched_full;
30:os.c **** volatile uint8_t OSH_sched_free;
31:os.c ****
32:os.c **** void OSH_SET_PIN_DIRECTIONS(void )
33:os.c **** {
89 .LM1:
90 /* prologue: frame size=0 */
91 /* prologue end (size=0) */
34:os.c **** OSH_MAKE_RED_LED_OUTPUT();
93 .LM2:
94 0000 0E94 0000 call OSH_MAKE_RED_LED_OUTPUT
35:os.c **** OSH_MAKE_YELLOW_LED_OUTPUT();
96 .LM3:
97 0004 0E94 0000 call OSH_MAKE_YELLOW_LED_OUTPUT
36:os.c **** OSH_MAKE_GREEN_LED_OUTPUT();
99 .LM4:
100 0008 0E94 0000 call OSH_MAKE_GREEN_LED_OUTPUT
37:os.c ****
38:os.c **** OSH_MAKE_CC_CHP_OUT_INPUT();
102 .LM5:
103 000c 0E94 0000 call OSH_MAKE_CC_CHP_OUT_INPUT
39:os.c ****
40:os.c **** OSH_MAKE_PW7_OUTPUT();
105 .LM6:
106 0010 0E94 0000 call OSH_MAKE_PW7_OUTPUT
41:os.c **** OSH_MAKE_PW6_OUTPUT();
108 .LM7:
109 0014 0E94 0000 call OSH_MAKE_PW6_OUTPUT
42:os.c **** OSH_MAKE_PW5_OUTPUT();
111 .LM8:
112 0018 0E94 0000 call OSH_MAKE_PW5_OUTPUT
43:os.c **** OSH_MAKE_PW4_OUTPUT();
114 .LM9:
115 001c 0E94 0000 call OSH_MAKE_PW4_OUTPUT
44:os.c **** OSH_MAKE_PW3_OUTPUT();
117 .LM10:
118 0020 0E94 0000 call OSH_MAKE_PW3_OUTPUT
45:os.c **** OSH_MAKE_PW2_OUTPUT();
120 .LM11:
121 0024 0E94 0000 call OSH_MAKE_PW2_OUTPUT
46:os.c **** OSH_MAKE_PW1_OUTPUT();
123 .LM12:
124 0028 0E94 0000 call OSH_MAKE_PW1_OUTPUT
47:os.c **** OSH_MAKE_PW0_OUTPUT();
126 .LM13:
127 002c 0E94 0000 call OSH_MAKE_PW0_OUTPUT
48:os.c ****
49:os.c **** OSH_MAKE_CC_PALE_OUTPUT();
129 .LM14:
130 0030 0E94 0000 call OSH_MAKE_CC_PALE_OUTPUT
50:os.c **** OSH_MAKE_CC_PDATA_OUTPUT();
132 .LM15:
133 0034 0E94 0000 call OSH_MAKE_CC_PDATA_OUTPUT
51:os.c **** OSH_MAKE_CC_PCLK_OUTPUT();
135 .LM16:
136 0038 0E94 0000 call OSH_MAKE_CC_PCLK_OUTPUT
52:os.c **** OSH_MAKE_MISO_INPUT();
138 .LM17:
139 003c 0E94 0000 call OSH_MAKE_MISO_INPUT
53:os.c **** OSH_MAKE_SPI_OC1C_INPUT();
141 .LM18:
142 0040 0E94 0000 call OSH_MAKE_SPI_OC1C_INPUT
54:os.c ****
55:os.c **** OSH_MAKE_SERIAL_ID_INPUT();
144 .LM19:
145 0044 0E94 0000 call OSH_MAKE_SERIAL_ID_INPUT
56:os.c **** OSH_CLR_SERIAL_ID_PIN();
147 .LM20:
148 0048 0E94 0000 call OSH_CLR_SERIAL_ID_PIN
57:os.c ****
58:os.c **** OSH_MAKE_FLASH_SELECT_OUTPUT();
150 .LM21:
151 004c 0E94 0000 call OSH_MAKE_FLASH_SELECT_OUTPUT
59:os.c **** OSH_MAKE_FLASH_OUT_OUTPUT();
153 .LM22:
154 0050 0E94 0000 call OSH_MAKE_FLASH_OUT_OUTPUT
60:os.c **** OSH_MAKE_FLASH_CLK_OUTPUT();
156 .LM23:
157 0054 0E94 0000 call OSH_MAKE_FLASH_CLK_OUTPUT
61:os.c **** OSH_SET_FLASH_SELECT_PIN();
159 .LM24:
160 0058 0E94 0000 call OSH_SET_FLASH_SELECT_PIN
62:os.c ****
63:os.c **** OSH_SET_RED_LED_PIN();
162 .LM25:
163 005c 0E94 0000 call OSH_SET_RED_LED_PIN
64:os.c **** OSH_SET_YELLOW_LED_PIN();
165 .LM26:
166 0060 0E94 0000 call OSH_SET_YELLOW_LED_PIN
65:os.c **** OSH_SET_GREEN_LED_PIN();
168 .LM27:
169 0064 0E94 0000 call OSH_SET_GREEN_LED_PIN
170 /* epilogue: frame size=0 */
171 0068 0895 ret
172 /* epilogue end (size=1) */
173 /* function OSH_SET_PIN_DIRECTIONS size 53 (52) */
176 .global MainHardwareInit
178 MainHardwareInit:
66:os.c **** }
67:os.c ****
68:os.c **** result_t MainHardwareInit(void)
69:os.c **** {
180 .LM28:
181 /* prologue: frame size=0 */
182 /* prologue end (size=0) */
70:os.c ****
71:os.c **** OSH_SET_PIN_DIRECTIONS();
184 .LM29:
185 006a 0E94 0000 call OSH_SET_PIN_DIRECTIONS
72:os.c **** return SUCCESS;
73:os.c **** }
187 .LM30:
188 006e 81E0 ldi r24,lo8(1)
189 0070 90E0 ldi r25,hi8(1)
190 /* epilogue: frame size=0 */
191 0072 0895 ret
192 /* epilogue end (size=1) */
193 /* function MainHardwareInit size 5 (4) */
196 .global OSSchedInit
198 OSSchedInit:
74:os.c ****
75:os.c **** void OSSchedInit(void )
76:os.c **** {
200 .LM31:
201 /* prologue: frame size=0 */
202 /* prologue end (size=0) */
77:os.c **** OSH_sched_free = 0;
204 .LM32:
205 0074 1092 0000 sts OSH_sched_free,__zero_reg__
78:os.c **** OSH_sched_full = 0;
207 .LM33:
208 0078 1092 0000 sts OSH_sched_full,__zero_reg__
209 /* epilogue: frame size=0 */
210 007c 0895 ret
211 /* epilogue end (size=1) */
212 /* function OSSchedInit size 5 (4) */
216 .global OSH_uwait
218 OSH_uwait:
79:os.c **** }
80:os.c ****
81:os.c **** void OSH_uwait(int u_sec)
82:os.c **** {
220 .LM34:
221 /* prologue: frame size=0 */
222 /* prologue end (size=0) */
223 .L10:
83:os.c **** while (u_sec > 0) {
84:os.c **** __asm volatile ("nop");
85:os.c **** __asm volatile ("nop");
86:os.c **** __asm volatile ("nop");
87:os.c **** __asm volatile ("nop");
88:os.c **** __asm volatile ("nop");
89:os.c **** __asm volatile ("nop");
90:os.c **** __asm volatile ("nop");
91:os.c **** __asm volatile ("nop");
92:os.c **** u_sec--;
225 .LM35:
226 007e 1816 cp __zero_reg__,r24
227 0080 1906 cpc __zero_reg__,r25
228 0082 54F4 brge .L9
230 .LM36:
231 /* #APP */
232 0084 0000 nop
234 .LM37:
235 0086 0000 nop
237 .LM38:
238 0088 0000 nop
240 .LM39:
241 008a 0000 nop
243 .LM40:
244 008c 0000 nop
246 .LM41:
247 008e 0000 nop
249 .LM42:
250 0090 0000 nop
252 .LM43:
253 0092 0000 nop
255 .LM44:
256 /* #NOAPP */
257 0094 0197 sbiw r24,1
258 0096 F3CF rjmp .L10
259 .L9:
260 0098 0895 ret
261 /* epilogue: frame size=0 */
262 /* epilogue: noreturn */
263 /* epilogue end (size=0) */
264 /* function OSH_uwait size 22 (22) */
267 .global MainStdControlInit
269 MainStdControlInit:
93:os.c **** }
94:os.c **** }
95:os.c ****
96:os.c **** result_t MainStdControlInit(void)
97:os.c **** {
271 .LM45:
272 /* prologue: frame size=0 */
273 /* prologue end (size=0) */
98:os.c **** unsigned char result;
99:os.c **** result = LLCStdControlInit();
275 .LM46:
276 009a 0E94 0000 call LLCStdControlInit
100:os.c **** return result;
101:os.c **** }
278 .LM47:
279 009e 9927 clr r25
280 /* epilogue: frame size=0 */
281 00a0 0895 ret
282 /* epilogue end (size=1) */
283 /* function MainStdControlInit size 4 (3) */
286 .global MainStdControlStart
288 MainStdControlStart:
102:os.c ****
103:os.c **** result_t MainStdControlStart(void)
104:os.c **** {
290 .LM48:
291 /* prologue: frame size=0 */
292 /* prologue end (size=0) */
105:os.c **** unsigned char result;
106:os.c ****
107:os.c **** result = LLCStdControlStart();
294 .LM49:
295 00a2 0E94 0000 call LLCStdControlStart
108:os.c ****
109:os.c **** return result;
110:os.c **** }
297 .LM50:
298 00a6 9927 clr r25
299 /* epilogue: frame size=0 */
300 00a8 0895 ret
301 /* epilogue end (size=1) */
302 /* function MainStdControlStart size 4 (3) */
305 .global EnableInterrupt
307 EnableInterrupt:
111:os.c ****
112:os.c **** void EnableInterrupt(void)
113:os.c **** {
309 .LM51:
310 /* prologue: frame size=0 */
311 /* prologue end (size=0) */
114:os.c **** __asm volatile ("sei");}
313 .LM52:
314 /* #APP */
315 00aa 7894 sei
316 /* #NOAPP */
317 /* epilogue: frame size=0 */
318 00ac 0895 ret
319 /* epilogue end (size=1) */
320 /* function EnableInterrupt size 3 (2) */
323 .global OSH_wait
325 OSH_wait:
115:os.c ****
116:os.c **** void OSH_wait(void)
117:os.c **** {
327 .LM53:
328 /* prologue: frame size=0 */
329 /* prologue end (size=0) */
118:os.c **** __asm volatile ("nop");
331 .LM54:
332 /* #APP */
333 00ae 0000 nop
119:os.c **** __asm volatile ("nop");}
335 .LM55:
336 00b0 0000 nop
337 /* #NOAPP */
338 /* epilogue: frame size=0 */
339 00b2 0895 ret
340 /* epilogue end (size=1) */
341 /* function OSH_wait size 5 (4) */
344 .global OSH_sleep
346 OSH_sleep:
120:os.c ****
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -