📄 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:
84 .global OSH_SET_PIN_DIRECTIONS
86 OSH_SET_PIN_DIRECTIONS:
1:os.c **** /*
2:os.c **** ****************************************************************************
3:os.c **** * 宁波中科集成电路设计中心 版权所有 Copyright 2005
4:os.c **** * http:\\www.nbicc.com
5:os.c **** *文件名: os.c
6:os.c **** *程序员: 夏鹏 xpsonny@nbicc.com
7:os.c **** *主要内容 内核调度
8:os.c ****
9:os.c **** *如有问题或BUG,请登录www.wsn.net.cn 提问或用邮件和作者联系
10:os.c **** ****************************************************************************
11:os.c **** */
12:os.c ****
13:os.c **** #include "os.h"
14:os.c **** #include "fun.h"
15:os.c ****
16:os.c ****
17:os.c ****
18:os.c **** typedef struct SchedUnit{
19:os.c **** void (*tp)(void);
20:os.c **** } OSSchedUnit;
21:os.c ****
22:os.c **** enum {
23:os.c **** OSH_MAX_TASKS = 16,
24:os.c **** OSH_TASK_BITMASK = OSH_MAX_TASKS - 1
25:os.c **** };
26:os.c ****
27:os.c **** OSSchedUnit OSH_queue[OSH_MAX_TASKS];
28:os.c **** static uint8_t OSH_sched_full;
29:os.c **** static uint8_t OSH_sched_free;
30:os.c ****
31:os.c **** void OSH_SET_PIN_DIRECTIONS(void )
32:os.c **** {
88 .LM1:
89 /* prologue: frame size=0 */
90 /* prologue end (size=0) */
33:os.c **** OSH_MAKE_RED_LED_OUTPUT();
92 .LM2:
93 0000 0E94 0000 call OSH_MAKE_RED_LED_OUTPUT
34:os.c **** OSH_MAKE_YELLOW_LED_OUTPUT();
95 .LM3:
96 0004 0E94 0000 call OSH_MAKE_YELLOW_LED_OUTPUT
35:os.c **** OSH_MAKE_GREEN_LED_OUTPUT();
98 .LM4:
99 0008 0E94 0000 call OSH_MAKE_GREEN_LED_OUTPUT
36:os.c ****
37:os.c **** OSH_MAKE_CC_CHP_OUT_INPUT();
101 .LM5:
102 000c 0E94 0000 call OSH_MAKE_CC_CHP_OUT_INPUT
38:os.c ****
39:os.c **** OSH_MAKE_PW7_OUTPUT();
104 .LM6:
105 0010 0E94 0000 call OSH_MAKE_PW7_OUTPUT
40:os.c **** OSH_MAKE_PW6_OUTPUT();
107 .LM7:
108 0014 0E94 0000 call OSH_MAKE_PW6_OUTPUT
41:os.c **** OSH_MAKE_PW5_OUTPUT();
110 .LM8:
111 0018 0E94 0000 call OSH_MAKE_PW5_OUTPUT
42:os.c **** OSH_MAKE_PW4_OUTPUT();
113 .LM9:
114 001c 0E94 0000 call OSH_MAKE_PW4_OUTPUT
43:os.c **** OSH_MAKE_PW3_OUTPUT();
116 .LM10:
117 0020 0E94 0000 call OSH_MAKE_PW3_OUTPUT
44:os.c **** OSH_MAKE_PW2_OUTPUT();
119 .LM11:
120 0024 0E94 0000 call OSH_MAKE_PW2_OUTPUT
45:os.c **** OSH_MAKE_PW1_OUTPUT();
122 .LM12:
123 0028 0E94 0000 call OSH_MAKE_PW1_OUTPUT
46:os.c **** OSH_MAKE_PW0_OUTPUT();
125 .LM13:
126 002c 0E94 0000 call OSH_MAKE_PW0_OUTPUT
47:os.c ****
48:os.c **** OSH_MAKE_CC_PALE_OUTPUT();
128 .LM14:
129 0030 0E94 0000 call OSH_MAKE_CC_PALE_OUTPUT
49:os.c **** OSH_MAKE_CC_PDATA_OUTPUT();
131 .LM15:
132 0034 0E94 0000 call OSH_MAKE_CC_PDATA_OUTPUT
50:os.c **** OSH_MAKE_CC_PCLK_OUTPUT();
134 .LM16:
135 0038 0E94 0000 call OSH_MAKE_CC_PCLK_OUTPUT
51:os.c **** OSH_MAKE_MISO_INPUT();
137 .LM17:
138 003c 0E94 0000 call OSH_MAKE_MISO_INPUT
52:os.c **** OSH_MAKE_SPI_OC1C_INPUT();
140 .LM18:
141 0040 0E94 0000 call OSH_MAKE_SPI_OC1C_INPUT
53:os.c ****
54:os.c **** OSH_MAKE_SERIAL_ID_INPUT();
143 .LM19:
144 0044 0E94 0000 call OSH_MAKE_SERIAL_ID_INPUT
55:os.c **** OSH_CLR_SERIAL_ID_PIN();
146 .LM20:
147 0048 0E94 0000 call OSH_CLR_SERIAL_ID_PIN
56:os.c ****
57:os.c **** OSH_MAKE_FLASH_SELECT_OUTPUT();
149 .LM21:
150 004c 0E94 0000 call OSH_MAKE_FLASH_SELECT_OUTPUT
58:os.c **** OSH_MAKE_FLASH_OUT_OUTPUT();
152 .LM22:
153 0050 0E94 0000 call OSH_MAKE_FLASH_OUT_OUTPUT
59:os.c **** OSH_MAKE_FLASH_CLK_OUTPUT();
155 .LM23:
156 0054 0E94 0000 call OSH_MAKE_FLASH_CLK_OUTPUT
60:os.c **** OSH_SET_FLASH_SELECT_PIN();
158 .LM24:
159 0058 0E94 0000 call OSH_SET_FLASH_SELECT_PIN
61:os.c ****
62:os.c **** OSH_SET_RED_LED_PIN();
161 .LM25:
162 005c 0E94 0000 call OSH_SET_RED_LED_PIN
63:os.c **** OSH_SET_YELLOW_LED_PIN();
164 .LM26:
165 0060 0E94 0000 call OSH_SET_YELLOW_LED_PIN
64:os.c **** OSH_SET_GREEN_LED_PIN();
167 .LM27:
168 0064 0E94 0000 call OSH_SET_GREEN_LED_PIN
169 /* epilogue: frame size=0 */
170 0068 0895 ret
171 /* epilogue end (size=1) */
172 /* function OSH_SET_PIN_DIRECTIONS size 53 (52) */
175 .global MainHardwareInit
177 MainHardwareInit:
65:os.c **** }
66:os.c ****
67:os.c **** result_t MainHardwareInit(void)
68:os.c **** {
179 .LM28:
180 /* prologue: frame size=0 */
181 /* prologue end (size=0) */
69:os.c ****
70:os.c **** OSH_SET_PIN_DIRECTIONS();
183 .LM29:
184 006a 0E94 0000 call OSH_SET_PIN_DIRECTIONS
71:os.c **** return SUCCESS;
72:os.c **** }
186 .LM30:
187 006e 81E0 ldi r24,lo8(1)
188 0070 90E0 ldi r25,hi8(1)
189 /* epilogue: frame size=0 */
190 0072 0895 ret
191 /* epilogue end (size=1) */
192 /* function MainHardwareInit size 5 (4) */
195 .global OSSchedInit
197 OSSchedInit:
73:os.c ****
74:os.c **** void OSSchedInit(void )
75:os.c **** {
199 .LM31:
200 /* prologue: frame size=0 */
201 /* prologue end (size=0) */
76:os.c **** OSH_sched_free = 0;
203 .LM32:
204 0074 1092 0000 sts OSH_sched_free,__zero_reg__
77:os.c **** OSH_sched_full = 0;
206 .LM33:
207 0078 1092 0000 sts OSH_sched_full,__zero_reg__
208 /* epilogue: frame size=0 */
209 007c 0895 ret
210 /* epilogue end (size=1) */
211 /* function OSSchedInit size 5 (4) */
215 .global OSH_uwait
217 OSH_uwait:
78:os.c **** }
79:os.c ****
80:os.c **** void OSH_uwait(int u_sec)
81:os.c **** {
219 .LM34:
220 /* prologue: frame size=0 */
221 /* prologue end (size=0) */
222 .L10:
82:os.c **** while (u_sec > 0) {
83:os.c **** __asm volatile ("nop");
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 **** u_sec--;
224 .LM35:
225 007e 1816 cp __zero_reg__,r24
226 0080 1906 cpc __zero_reg__,r25
227 0082 54F4 brge .L9
229 .LM36:
230 /* #APP */
231 0084 0000 nop
233 .LM37:
234 0086 0000 nop
236 .LM38:
237 0088 0000 nop
239 .LM39:
240 008a 0000 nop
242 .LM40:
243 008c 0000 nop
245 .LM41:
246 008e 0000 nop
248 .LM42:
249 0090 0000 nop
251 .LM43:
252 0092 0000 nop
254 .LM44:
255 /* #NOAPP */
256 0094 0197 sbiw r24,1
257 0096 F3CF rjmp .L10
258 .L9:
259 0098 0895 ret
260 /* epilogue: frame size=0 */
261 /* epilogue: noreturn */
262 /* epilogue end (size=0) */
263 /* function OSH_uwait size 22 (22) */
266 .global MainStdControlInit
268 MainStdControlInit:
92:os.c **** }
93:os.c **** }
94:os.c ****
95:os.c **** result_t MainStdControlInit(void)
96:os.c **** {
270 .LM45:
271 /* prologue: frame size=0 */
272 /* prologue end (size=0) */
97:os.c **** unsigned char result;
98:os.c **** result = Init();
274 .LM46:
275 009a 0E94 0000 call Init
99:os.c **** return result;
100:os.c **** }
277 .LM47:
278 009e 9927 clr r25
279 /* epilogue: frame size=0 */
280 00a0 0895 ret
281 /* epilogue end (size=1) */
282 /* function MainStdControlInit size 4 (3) */
285 .global MainStdControlStart
287 MainStdControlStart:
101:os.c ****
102:os.c **** result_t MainStdControlStart(void)
103:os.c **** {
289 .LM48:
290 /* prologue: frame size=0 */
291 /* prologue end (size=0) */
104:os.c **** unsigned char result;
105:os.c ****
106:os.c **** result = Start();
293 .LM49:
294 00a2 0E94 0000 call Start
107:os.c ****
108:os.c **** return result;
109:os.c **** }
296 .LM50:
297 00a6 9927 clr r25
298 /* epilogue: frame size=0 */
299 00a8 0895 ret
300 /* epilogue end (size=1) */
301 /* function MainStdControlStart size 4 (3) */
304 .global EnableInterrupt
306 EnableInterrupt:
110:os.c ****
111:os.c **** void EnableInterrupt(void)
112:os.c **** {
308 .LM51:
309 /* prologue: frame size=0 */
310 /* prologue end (size=0) */
113:os.c **** __asm volatile ("sei");}
312 .LM52:
313 /* #APP */
314 00aa 7894 sei
315 /* #NOAPP */
316 /* epilogue: frame size=0 */
317 00ac 0895 ret
318 /* epilogue end (size=1) */
319 /* function EnableInterrupt size 3 (2) */
322 .global OSH_wait
324 OSH_wait:
114:os.c ****
115:os.c **** void OSH_wait(void)
116:os.c **** {
326 .LM53:
327 /* prologue: frame size=0 */
328 /* prologue end (size=0) */
117:os.c **** __asm volatile ("nop");
330 .LM54:
331 /* #APP */
332 00ae 0000 nop
118:os.c **** __asm volatile ("nop");}
334 .LM55:
335 00b0 0000 nop
336 /* #NOAPP */
337 /* epilogue: frame size=0 */
338 00b2 0895 ret
339 /* epilogue end (size=1) */
340 /* function OSH_wait size 5 (4) */
343 .global OSH_sleep
345 OSH_sleep:
119:os.c ****
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -