📄 macclock.lst
字号:
1 .file "macClock.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:
75 .global ClockStart
77 ClockStart:
1:macClock.c **** /*
2:macClock.c **** ****************************************************************************
3:macClock.c **** *
4:macClock.c **** * 宁波中科集成电路设计中心 版权所有 Copyright 2005
5:macClock.c **** *
6:macClock.c **** *文件名: macClock.c
7:macClock.c **** *程序员: xp
8:macClock.c **** *主要内容:mac时钟源
9:macClock.c **** *完成日期:2005.6.10
10:macClock.c **** ****************************************************************************
11:macClock.c **** */
12:macClock.c ****
13:macClock.c **** #include "macClock.h"
14:macClock.c **** #include "os.h"
15:macClock.c **** #include "led.h"
16:macClock.c **** #include "mac.h"
17:macClock.c **** #include "app.h"
18:macClock.c **** #include <inttypes.h>
19:macClock.c **** #include <avr/io.h>
20:macClock.c **** #include <avr/interrupt.h>
21:macClock.c **** #include <avr/signal.h>
22:macClock.c ****
23:macClock.c ****
24:macClock.c **** #define SCALE_1ms 1
25:macClock.c **** #define INTERVAL_1ms 7650 // 7650
26:macClock.c ****
27:macClock.c **** uint8_t timerTick;
28:macClock.c **** uint8_t timerInterval;
29:macClock.c ****
30:macClock.c **** void ClockStart(void)
31:macClock.c **** {
79 .LM1:
80 /* prologue: frame size=0 */
81 /* prologue end (size=0) */
32:macClock.c **** uint8_t intEnabled, scale = SCALE_1ms;
33:macClock.c **** uint16_t interval = INTERVAL_1ms;
34:macClock.c **** scale |= 0x8;
35:macClock.c **** cbi(TIMSK, OCIE1A); // 关比较器A的输出中断
83 .LM2:
84 0000 87B7 in r24,87-0x20
85 0002 8F7E andi r24,lo8(-17)
86 0004 87BF out 87-0x20,r24
36:macClock.c **** intEnabled = bit_is_set(SREG, 7);
88 .LM3:
89 0006 2FB7 in r18,95-0x20
90 0008 2078 andi r18,lo8(-128)
37:macClock.c **** cli(); // 访问寄存器前先关中断
92 .LM4:
93 /* #APP */
94 000a F894 cli
38:macClock.c **** outw(TCNT1L, 0); // 清空寄存器
96 .LM5:
97 /* #NOAPP */
98 000c 1DBC out (76)+1-0x20,__zero_reg__
99 000e 1CBC out 76-0x20,__zero_reg__
39:macClock.c **** outw(OCR1AL, interval); // 设置比较匹配寄存器
101 .LM6:
102 0010 82EE ldi r24,lo8(7650)
103 0012 9DE1 ldi r25,hi8(7650)
104 0014 9BBD out (74)+1-0x20,r25
105 0016 8ABD out 74-0x20,r24
40:macClock.c **** if (intEnabled)
107 .LM7:
108 0018 2223 tst r18
109 001a 09F0 breq .L2
41:macClock.c **** sei();
111 .LM8:
112 /* #APP */
113 001c 7894 sei
114 /* #NOAPP */
115 .L2:
42:macClock.c **** outp(scale, TCCR1B); // 设置为8分频
117 .LM9:
118 001e 89E0 ldi r24,lo8(9)
119 0020 8EBD out 78-0x20,r24
43:macClock.c **** sbi(TIMSK, OCIE1A); // 开中断
121 .LM10:
122 0022 87B7 in r24,87-0x20
123 0024 8061 ori r24,lo8(16)
124 0026 87BF out 87-0x20,r24
44:macClock.c ****
45:macClock.c **** timerTick = 0;
126 .LM11:
127 0028 1092 0000 sts timerTick,__zero_reg__
46:macClock.c **** timerInterval = 0;
129 .LM12:
130 002c 1092 0000 sts timerInterval,__zero_reg__
131 /* epilogue: frame size=0 */
132 0030 0895 ret
133 /* epilogue end (size=1) */
134 /* function ClockStart size 27 (26) */
140 .global ClockSet
142 ClockSet:
47:macClock.c **** }
48:macClock.c ****
49:macClock.c **** void ClockSet(uint8_t interval)
50:macClock.c **** {
144 .LM13:
145 /* prologue: frame size=0 */
146 /* prologue end (size=0) */
51:macClock.c **** timerInterval = interval;
148 .LM14:
149 0032 8093 0000 sts timerInterval,r24
150 /* epilogue: frame size=0 */
151 0036 0895 ret
152 /* epilogue end (size=1) */
153 /* function ClockSet size 3 (2) */
156 .global __vector_12
158 __vector_12:
52:macClock.c **** }
53:macClock.c ****
54:macClock.c **** INTERRUPT(SIG_OUTPUT_COMPARE1A) // 中断服务程序
55:macClock.c **** {
160 .LM15:
161 /* prologue: frame size=0 */
162 0038 7894 sei
163 003a 1F92 push __zero_reg__
164 003c 0F92 push __tmp_reg__
165 003e 0FB6 in __tmp_reg__,__SREG__
166 0040 0F92 push __tmp_reg__
167 0042 1124 clr __zero_reg__
168 0044 2F93 push r18
169 0046 3F93 push r19
170 0048 4F93 push r20
171 004a 5F93 push r21
172 004c 6F93 push r22
173 004e 7F93 push r23
174 0050 8F93 push r24
175 0052 9F93 push r25
176 0054 AF93 push r26
177 0056 BF93 push r27
178 0058 EF93 push r30
179 005a FF93 push r31
180 /* prologue end (size=18) */
56:macClock.c **** MACClockFire();
182 .LM16:
183 005c 0E94 0000 call MACClockFire
57:macClock.c **** if (timerInterval != 0)
185 .LM17:
186 0060 9091 0000 lds r25,timerInterval
187 0064 9923 tst r25
188 0066 59F0 breq .L4
58:macClock.c **** {
59:macClock.c **** timerTick++;
190 .LM18:
191 0068 8091 0000 lds r24,timerTick
192 006c 8F5F subi r24,lo8(-(1))
193 006e 8093 0000 sts timerTick,r24
60:macClock.c **** if (timerTick == timerInterval)
195 .LM19:
196 0072 8917 cp r24,r25
197 0074 21F4 brne .L4
61:macClock.c **** {
62:macClock.c **** timerTick = 0;
199 .LM20:
200 0076 1092 0000 sts timerTick,__zero_reg__
63:macClock.c **** LLCTimerFired();// 调用应用接口;
202 .LM21:
203 007a 0E94 0000 call LLCTimerFired
204 .L4:
205 /* epilogue: frame size=0 */
206 007e FF91 pop r31
207 0080 EF91 pop r30
208 0082 BF91 pop r27
209 0084 AF91 pop r26
210 0086 9F91 pop r25
211 0088 8F91 pop r24
212 008a 7F91 pop r23
213 008c 6F91 pop r22
214 008e 5F91 pop r21
215 0090 4F91 pop r20
216 0092 3F91 pop r19
217 0094 2F91 pop r18
218 0096 0F90 pop __tmp_reg__
219 0098 0FBE out __SREG__,__tmp_reg__
220 009a 0F90 pop __tmp_reg__
221 009c 1F90 pop __zero_reg__
222 009e 1895 reti
223 /* epilogue end (size=17) */
224 /* function __vector_12 size 52 (17) */
228 .global TimeStampGetTime32
230 TimeStampGetTime32:
64:macClock.c **** }
65:macClock.c **** }
66:macClock.c **** }
67:macClock.c ****
68:macClock.c **** void TimeStampGetTime32(uint32_t *timePtr) // 得到当前时钟计数器中的值,用于时间戳
69:macClock.c **** {
232 .LM22:
233 /* prologue: frame size=0 */
234 /* prologue end (size=0) */
235 00a0 FC01 movw r30,r24
70:macClock.c **** uint8_t intEnabled = bit_is_set(SREG, 7);
237 .LM23:
238 00a2 2FB7 in r18,95-0x20
239 00a4 2078 andi r18,lo8(-128)
71:macClock.c **** cli();
241 .LM24:
242 /* #APP */
243 00a6 F894 cli
72:macClock.c **** *timePtr = (uint32_t)inw(TCNT1L); // 读TCNT1
245 .LM25:
246 /* #NOAPP */
247 00a8 8CB5 in r24,76-0x20
248 00aa 9DB5 in r25,(76)+1-0x20
249 00ac AA27 clr r26
250 00ae BB27 clr r27
251 00b0 8083 st Z,r24
252 00b2 9183 std Z+1,r25
253 00b4 A283 std Z+2,r26
254 00b6 B383 std Z+3,r27
73:macClock.c **** if (intEnabled) sei();
256 .LM26:
257 00b8 2223 tst r18
258 00ba 09F0 breq .L7
260 .LM27:
261 /* #APP */
262 00bc 7894 sei
263 /* #NOAPP */
264 .L7:
265 00be 0895 ret
266 /* epilogue: frame size=0 */
267 00c0 0895 ret
268 /* epilogue end (size=1) */
269 /* function TimeStampGetTime32 size 19 (18) */
271 .comm timerTick,1,1
272 .comm timerInterval,1,1
275 .text
277 Letext:
278 /* File "macClock.c": code 101 = 0x0065 ( 63), prologues 18, epilogues 20 */
DEFINED SYMBOLS
*ABS*:00000000 macClock.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:77 .text:00000000 ClockStart
*COM*:00000001 timerTick
*COM*:00000001 timerInterval
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:142 .text:00000032 ClockSet
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:158 .text:00000038 __vector_12
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:230 .text:000000a0 TimeStampGetTime32
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cckxbaaa.s:277 .text:000000c2 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
MACClockFire
LLCTimerFired
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -