📄 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:
65 .global LedInit
67 LedInit:
1:led.c **** /*
2:led.c **** ****************************************************************************
3:led.c **** * 宁波市科技园区创业大厦六楼
4:led.c **** * 宁波中科集成电路设计中心 版权所有 Copyright 2005
5:led.c **** *
6:led.c **** *文件名: led.c
7:led.c **** *程序员:
8:led.c **** *主要内容:LED Control
9:led.c **** *完成日期:2005.3.25
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 **** 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 **** {
69 .LM1:
70 /* prologue: frame size=0 */
71 0000 1F93 push r17
72 /* prologue end (size=1) */
73 .LBB2:
27:led.c **** { uint8_t atomicState = AtomicStart();
75 .LM2:
76 0002 0E94 0000 call AtomicStart
77 0006 182F mov r17,r24
28:led.c **** {
29:led.c **** LedsC_ledsOn = 0;
79 .LM3:
80 0008 1092 0000 sts LedsC_ledsOn,__zero_reg__
30:led.c **** OSH_SET_RED_LED_PIN();
82 .LM4:
83 000c 0E94 0000 call OSH_SET_RED_LED_PIN
31:led.c **** OSH_SET_YELLOW_LED_PIN();
85 .LM5:
86 0010 0E94 0000 call OSH_SET_YELLOW_LED_PIN
32:led.c **** OSH_SET_GREEN_LED_PIN();
88 .LM6:
89 0014 0E94 0000 call OSH_SET_GREEN_LED_PIN
33:led.c **** }
34:led.c **** AtomicEnd(atomicState); }
91 .LM7:
92 0018 812F mov r24,r17
93 001a 0E94 0000 call AtomicEnd
94 .LBE2:
35:led.c **** return SUCCESS;
36:led.c **** }
96 .LM8:
97 001e 81E0 ldi r24,lo8(1)
98 0020 90E0 ldi r25,hi8(1)
99 /* epilogue: frame size=0 */
100 0022 1F91 pop r17
101 0024 0895 ret
102 /* epilogue end (size=2) */
103 /* function LedInit size 19 (16) */
109 .global LedYellowOn
111 LedYellowOn:
37:led.c ****
38:led.c **** result_t LedYellowOn(void)
39:led.c **** {
113 .LM9:
114 /* prologue: frame size=0 */
115 0026 1F93 push r17
116 /* prologue end (size=1) */
117 .LBB3:
40:led.c **** { uint8_t atomicState = AtomicStart();
119 .LM10:
120 0028 0E94 0000 call AtomicStart
121 002c 182F mov r17,r24
41:led.c **** {
42:led.c **** OSH_CLR_YELLOW_LED_PIN();
123 .LM11:
124 002e 0E94 0000 call OSH_CLR_YELLOW_LED_PIN
43:led.c **** LedsC_ledsOn |= LedsC_YELLOW_BIT;
126 .LM12:
127 0032 8091 0000 lds r24,LedsC_ledsOn
128 0036 8460 ori r24,lo8(4)
129 0038 8093 0000 sts LedsC_ledsOn,r24
44:led.c **** }
45:led.c **** AtomicEnd(atomicState); }
131 .LM13:
132 003c 812F mov r24,r17
133 003e 0E94 0000 call AtomicEnd
134 .LBE3:
46:led.c **** return SUCCESS;
47:led.c **** }
136 .LM14:
137 0042 81E0 ldi r24,lo8(1)
138 0044 90E0 ldi r25,hi8(1)
139 /* epilogue: frame size=0 */
140 0046 1F91 pop r17
141 0048 0895 ret
142 /* epilogue end (size=2) */
143 /* function LedYellowOn size 18 (15) */
149 .global LedYellowOff
151 LedYellowOff:
48:led.c ****
49:led.c **** result_t LedYellowOff(void)
50:led.c **** {
153 .LM15:
154 /* prologue: frame size=0 */
155 004a 1F93 push r17
156 /* prologue end (size=1) */
157 .LBB4:
51:led.c **** { uint8_t atomicState = AtomicStart();
159 .LM16:
160 004c 0E94 0000 call AtomicStart
161 0050 182F mov r17,r24
52:led.c **** {
53:led.c **** OSH_SET_YELLOW_LED_PIN();
163 .LM17:
164 0052 0E94 0000 call OSH_SET_YELLOW_LED_PIN
54:led.c **** LedsC_ledsOn &= ~LedsC_YELLOW_BIT;
166 .LM18:
167 0056 8091 0000 lds r24,LedsC_ledsOn
168 005a 8B7F andi r24,lo8(-5)
169 005c 8093 0000 sts LedsC_ledsOn,r24
55:led.c **** }
56:led.c **** AtomicEnd(atomicState); }
171 .LM19:
172 0060 812F mov r24,r17
173 0062 0E94 0000 call AtomicEnd
174 .LBE4:
57:led.c **** return SUCCESS;
58:led.c **** }
176 .LM20:
177 0066 81E0 ldi r24,lo8(1)
178 0068 90E0 ldi r25,hi8(1)
179 /* epilogue: frame size=0 */
180 006a 1F91 pop r17
181 006c 0895 ret
182 /* epilogue end (size=2) */
183 /* function LedYellowOff size 18 (15) */
189 .global LedYellowToggle
191 LedYellowToggle:
59:led.c ****
60:led.c **** result_t LedYellowToggle(void)
61:led.c **** {
193 .LM21:
194 /* prologue: frame size=0 */
195 006e 1F93 push r17
196 0070 CF93 push r28
197 /* prologue end (size=2) */
198 .LBB5:
62:led.c **** result_t rval;
63:led.c **** { uint8_t atomicState = AtomicStart();
200 .LM22:
201 0072 0E94 0000 call AtomicStart
202 0076 182F mov r17,r24
64:led.c **** {
65:led.c **** if (LedsC_ledsOn & LedsC_YELLOW_BIT) {
204 .LM23:
205 0078 8091 0000 lds r24,LedsC_ledsOn
206 007c 82FF sbrs r24,2
207 007e 03C0 rjmp .L5
66:led.c **** rval = LedYellowOff();
209 .LM24:
210 0080 0E94 0000 call LedYellowOff
211 0084 02C0 rjmp .L7
212 .L5:
67:led.c **** }
68:led.c **** else {
69:led.c **** rval = LedYellowOn();
214 .LM25:
215 0086 0E94 0000 call LedYellowOn
216 .L7:
217 008a C82F mov r28,r24
70:led.c **** }
71:led.c **** }
72:led.c **** AtomicEnd(atomicState); }
219 .LM26:
220 008c 812F mov r24,r17
221 008e 0E94 0000 call AtomicEnd
222 .LBE5:
73:led.c **** return rval;
74:led.c **** }
224 .LM27:
225 0092 8C2F mov r24,r28
226 0094 9927 clr r25
227 /* epilogue: frame size=0 */
228 0096 CF91 pop r28
229 0098 1F91 pop r17
230 009a 0895 ret
231 /* epilogue end (size=3) */
232 /* function LedYellowToggle size 23 (18) */
239 .global LedRedOff
241 LedRedOff:
75:led.c ****
76:led.c **** result_t LedRedOff(void)
77:led.c **** {
243 .LM28:
244 /* prologue: frame size=0 */
245 009c 1F93 push r17
246 /* prologue end (size=1) */
247 .LBB6:
78:led.c **** { uint8_t atomicState = AtomicStart();
249 .LM29:
250 009e 0E94 0000 call AtomicStart
251 00a2 182F mov r17,r24
79:led.c **** {
80:led.c **** OSH_SET_RED_LED_PIN();
253 .LM30:
254 00a4 0E94 0000 call OSH_SET_RED_LED_PIN
81:led.c **** LedsC_ledsOn &= ~LedsC_RED_BIT;
256 .LM31:
257 00a8 8091 0000 lds r24,LedsC_ledsOn
258 00ac 8E7F andi r24,lo8(-2)
259 00ae 8093 0000 sts LedsC_ledsOn,r24
82:led.c **** }
83:led.c **** AtomicEnd(atomicState); }
261 .LM32:
262 00b2 812F mov r24,r17
263 00b4 0E94 0000 call AtomicEnd
264 .LBE6:
84:led.c **** return SUCCESS;
85:led.c **** }
266 .LM33:
267 00b8 81E0 ldi r24,lo8(1)
268 00ba 90E0 ldi r25,hi8(1)
269 /* epilogue: frame size=0 */
270 00bc 1F91 pop r17
271 00be 0895 ret
272 /* epilogue end (size=2) */
273 /* function LedRedOff size 18 (15) */
279 .global LedRedOn
281 LedRedOn:
86:led.c ****
87:led.c **** result_t LedRedOn(void)
88:led.c **** {
283 .LM34:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -