📄 led.lst
字号:
1 .file "led.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 LedInit
86 LedInit:
1:led.c **** /*
2:led.c **** ****************************************************************************
3:led.c **** * 宁波中科集成电路设计中心 版权所有 Copyright 2005
4:led.c **** * http:\\www.nbicc.com
5:led.c **** *文件名: led.c
6:led.c **** *程序员: 夏鹏 xpsonny@nbicc.com
7:led.c **** *主要内容:led驱动
8:led.c **** *
9:led.c **** *如有问题或BUG,请登录www.wsn.net.cn 提问或用邮件和作者联系
10:led.c **** ****************************************************************************
11:led.c **** */
12:led.c ****
13:led.c **** #include "led.h"
14:led.c **** #include "os.h"
15:led.c **** #include "fun.h"
16:led.c ****
17:led.c **** static uint8_t LedsC_ledsOn;
18:led.c ****
19:led.c **** enum {
20:led.c **** LedsC_RED_BIT = 1,
21:led.c **** LedsC_GREEN_BIT = 2,
22:led.c **** LedsC_YELLOW_BIT = 4
23:led.c **** };
24:led.c ****
25:led.c **** result_t LedInit(void)
26:led.c **** {
88 .LM1:
89 /* prologue: frame size=0 */
90 0000 1F93 push r17
91 /* prologue end (size=1) */
92 .LBB2:
27:led.c **** { uint8_t atomicState = AtomicStart();
94 .LM2:
95 0002 0E94 0000 call AtomicStart
96 0006 182F mov r17,r24
28:led.c **** {
29:led.c **** LedsC_ledsOn = 0;
98 .LM3:
99 0008 1092 0000 sts LedsC_ledsOn,__zero_reg__
30:led.c **** OSH_SET_RED_LED_PIN();
101 .LM4:
102 000c 0E94 0000 call OSH_SET_RED_LED_PIN
31:led.c **** OSH_SET_YELLOW_LED_PIN();
104 .LM5:
105 0010 0E94 0000 call OSH_SET_YELLOW_LED_PIN
32:led.c **** OSH_SET_GREEN_LED_PIN();
107 .LM6:
108 0014 0E94 0000 call OSH_SET_GREEN_LED_PIN
33:led.c **** }
34:led.c **** AtomicEnd(atomicState); }
110 .LM7:
111 0018 812F mov r24,r17
112 001a 0E94 0000 call AtomicEnd
113 .LBE2:
35:led.c **** return SUCCESS;
36:led.c **** }
115 .LM8:
116 001e 81E0 ldi r24,lo8(1)
117 0020 90E0 ldi r25,hi8(1)
118 /* epilogue: frame size=0 */
119 0022 1F91 pop r17
120 0024 0895 ret
121 /* epilogue end (size=2) */
122 /* function LedInit size 19 (16) */
128 .global LedYellowOn
130 LedYellowOn:
37:led.c ****
38:led.c **** result_t LedYellowOn(void)
39:led.c **** {
132 .LM9:
133 /* prologue: frame size=0 */
134 0026 1F93 push r17
135 /* prologue end (size=1) */
136 .LBB3:
40:led.c **** { uint8_t atomicState = AtomicStart();
138 .LM10:
139 0028 0E94 0000 call AtomicStart
140 002c 182F mov r17,r24
41:led.c **** {
42:led.c **** OSH_CLR_YELLOW_LED_PIN();
142 .LM11:
143 002e 0E94 0000 call OSH_CLR_YELLOW_LED_PIN
43:led.c **** LedsC_ledsOn |= LedsC_YELLOW_BIT;
145 .LM12:
146 0032 8091 0000 lds r24,LedsC_ledsOn
147 0036 8460 ori r24,lo8(4)
148 0038 8093 0000 sts LedsC_ledsOn,r24
44:led.c **** }
45:led.c **** AtomicEnd(atomicState); }
150 .LM13:
151 003c 812F mov r24,r17
152 003e 0E94 0000 call AtomicEnd
153 .LBE3:
46:led.c **** return SUCCESS;
47:led.c **** }
155 .LM14:
156 0042 81E0 ldi r24,lo8(1)
157 0044 90E0 ldi r25,hi8(1)
158 /* epilogue: frame size=0 */
159 0046 1F91 pop r17
160 0048 0895 ret
161 /* epilogue end (size=2) */
162 /* function LedYellowOn size 18 (15) */
168 .global LedYellowOff
170 LedYellowOff:
48:led.c ****
49:led.c **** result_t LedYellowOff(void)
50:led.c **** {
172 .LM15:
173 /* prologue: frame size=0 */
174 004a 1F93 push r17
175 /* prologue end (size=1) */
176 .LBB4:
51:led.c **** { uint8_t atomicState = AtomicStart();
178 .LM16:
179 004c 0E94 0000 call AtomicStart
180 0050 182F mov r17,r24
52:led.c **** {
53:led.c **** OSH_SET_YELLOW_LED_PIN();
182 .LM17:
183 0052 0E94 0000 call OSH_SET_YELLOW_LED_PIN
54:led.c **** LedsC_ledsOn &= ~LedsC_YELLOW_BIT;
185 .LM18:
186 0056 8091 0000 lds r24,LedsC_ledsOn
187 005a 8B7F andi r24,lo8(-5)
188 005c 8093 0000 sts LedsC_ledsOn,r24
55:led.c **** }
56:led.c **** AtomicEnd(atomicState); }
190 .LM19:
191 0060 812F mov r24,r17
192 0062 0E94 0000 call AtomicEnd
193 .LBE4:
57:led.c **** return SUCCESS;
58:led.c **** }
195 .LM20:
196 0066 81E0 ldi r24,lo8(1)
197 0068 90E0 ldi r25,hi8(1)
198 /* epilogue: frame size=0 */
199 006a 1F91 pop r17
200 006c 0895 ret
201 /* epilogue end (size=2) */
202 /* function LedYellowOff size 18 (15) */
208 .global LedYellowToggle
210 LedYellowToggle:
59:led.c ****
60:led.c **** result_t LedYellowToggle(void)
61:led.c **** {
212 .LM21:
213 /* prologue: frame size=0 */
214 006e 1F93 push r17
215 0070 CF93 push r28
216 /* prologue end (size=2) */
217 .LBB5:
62:led.c **** result_t rval;
63:led.c **** { uint8_t atomicState = AtomicStart();
219 .LM22:
220 0072 0E94 0000 call AtomicStart
221 0076 182F mov r17,r24
64:led.c **** {
65:led.c **** if (LedsC_ledsOn & LedsC_YELLOW_BIT) {
223 .LM23:
224 0078 8091 0000 lds r24,LedsC_ledsOn
225 007c 82FF sbrs r24,2
226 007e 03C0 rjmp .L5
66:led.c **** rval = LedYellowOff();
228 .LM24:
229 0080 0E94 0000 call LedYellowOff
230 0084 02C0 rjmp .L7
231 .L5:
67:led.c **** }
68:led.c **** else {
69:led.c **** rval = LedYellowOn();
233 .LM25:
234 0086 0E94 0000 call LedYellowOn
235 .L7:
236 008a C82F mov r28,r24
70:led.c **** }
71:led.c **** }
72:led.c **** AtomicEnd(atomicState); }
238 .LM26:
239 008c 812F mov r24,r17
240 008e 0E94 0000 call AtomicEnd
241 .LBE5:
73:led.c **** return rval;
74:led.c **** }
243 .LM27:
244 0092 8C2F mov r24,r28
245 0094 9927 clr r25
246 /* epilogue: frame size=0 */
247 0096 CF91 pop r28
248 0098 1F91 pop r17
249 009a 0895 ret
250 /* epilogue end (size=3) */
251 /* function LedYellowToggle size 23 (18) */
258 .global LedRedOff
260 LedRedOff:
75:led.c ****
76:led.c **** result_t LedRedOff(void)
77:led.c **** {
262 .LM28:
263 /* prologue: frame size=0 */
264 009c 1F93 push r17
265 /* prologue end (size=1) */
266 .LBB6:
78:led.c **** { uint8_t atomicState = AtomicStart();
268 .LM29:
269 009e 0E94 0000 call AtomicStart
270 00a2 182F mov r17,r24
79:led.c **** {
80:led.c **** OSH_SET_RED_LED_PIN();
272 .LM30:
273 00a4 0E94 0000 call OSH_SET_RED_LED_PIN
81:led.c **** LedsC_ledsOn &= ~LedsC_RED_BIT;
275 .LM31:
276 00a8 8091 0000 lds r24,LedsC_ledsOn
277 00ac 8E7F andi r24,lo8(-2)
278 00ae 8093 0000 sts LedsC_ledsOn,r24
82:led.c **** }
83:led.c **** AtomicEnd(atomicState); }
280 .LM32:
281 00b2 812F mov r24,r17
282 00b4 0E94 0000 call AtomicEnd
283 .LBE6:
84:led.c **** return SUCCESS;
85:led.c **** }
285 .LM33:
286 00b8 81E0 ldi r24,lo8(1)
287 00ba 90E0 ldi r25,hi8(1)
288 /* epilogue: frame size=0 */
289 00bc 1F91 pop r17
290 00be 0895 ret
291 /* epilogue end (size=2) */
292 /* function LedRedOff size 18 (15) */
298 .global LedRedOn
300 LedRedOn:
86:led.c ****
87:led.c **** result_t LedRedOn(void)
88:led.c **** {
302 .LM34:
303 /* prologue: frame size=0 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -