📄 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:
66 .global ClockStart
68 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 <inttypes.h>
18:macClock.c **** #include <avr/io.h>
19:macClock.c **** #include <avr/interrupt.h>
20:macClock.c **** #include <avr/signal.h>
21:macClock.c ****
22:macClock.c ****
23:macClock.c **** #define SCALE_1ms 1
24:macClock.c **** #define INTERVAL_1ms 7650 // 7650
25:macClock.c ****
26:macClock.c **** void ClockStart(void)
27:macClock.c **** {
70 .LM1:
71 /* prologue: frame size=0 */
72 /* prologue end (size=0) */
28:macClock.c **** uint8_t intEnabled, scale = SCALE_1ms;
29:macClock.c **** uint16_t interval = INTERVAL_1ms;
30:macClock.c **** scale |= 0x8;
31:macClock.c **** cbi(TIMSK, OCIE1A); // 关比较器A的输出中断
74 .LM2:
75 0000 87B7 in r24,87-0x20
76 0002 8F7E andi r24,lo8(-17)
77 0004 87BF out 87-0x20,r24
32:macClock.c **** intEnabled = bit_is_set(SREG, 7);
79 .LM3:
80 0006 2FB7 in r18,95-0x20
81 0008 2078 andi r18,lo8(-128)
33:macClock.c **** cli(); // 访问寄存器前先关中断
83 .LM4:
84 /* #APP */
85 000a F894 cli
34:macClock.c **** outw(TCNT1L, 0); // 清空寄存器
87 .LM5:
88 /* #NOAPP */
89 000c 1DBC out (76)+1-0x20,__zero_reg__
90 000e 1CBC out 76-0x20,__zero_reg__
35:macClock.c **** outw(OCR1AL, interval); // 设置比较匹配寄存器
92 .LM6:
93 0010 82EE ldi r24,lo8(7650)
94 0012 9DE1 ldi r25,hi8(7650)
95 0014 9BBD out (74)+1-0x20,r25
96 0016 8ABD out 74-0x20,r24
36:macClock.c **** if (intEnabled)
98 .LM7:
99 0018 2223 tst r18
100 001a 09F0 breq .L2
37:macClock.c **** sei();
102 .LM8:
103 /* #APP */
104 001c 7894 sei
105 /* #NOAPP */
106 .L2:
38:macClock.c **** outp(scale, TCCR1B); // 设置为8分频
108 .LM9:
109 001e 89E0 ldi r24,lo8(9)
110 0020 8EBD out 78-0x20,r24
39:macClock.c **** sbi(TIMSK, OCIE1A); // 开中断
112 .LM10:
113 0022 87B7 in r24,87-0x20
114 0024 8061 ori r24,lo8(16)
115 0026 87BF out 87-0x20,r24
116 /* epilogue: frame size=0 */
117 0028 0895 ret
118 /* epilogue end (size=1) */
119 /* function ClockStart size 23 (22) */
124 .global __vector_12
126 __vector_12:
40:macClock.c **** }
41:macClock.c ****
42:macClock.c **** INTERRUPT(SIG_OUTPUT_COMPARE1A) // 中断服务程序
43:macClock.c **** {
128 .LM11:
129 /* prologue: frame size=0 */
130 002a 7894 sei
131 002c 1F92 push __zero_reg__
132 002e 0F92 push __tmp_reg__
133 0030 0FB6 in __tmp_reg__,__SREG__
134 0032 0F92 push __tmp_reg__
135 0034 1124 clr __zero_reg__
136 0036 2F93 push r18
137 0038 3F93 push r19
138 003a 4F93 push r20
139 003c 5F93 push r21
140 003e 6F93 push r22
141 0040 7F93 push r23
142 0042 8F93 push r24
143 0044 9F93 push r25
144 0046 AF93 push r26
145 0048 BF93 push r27
146 004a EF93 push r30
147 004c FF93 push r31
148 /* prologue end (size=18) */
44:macClock.c **** MACClockFire();
150 .LM12:
151 004e 0E94 0000 call MACClockFire
152 /* epilogue: frame size=0 */
153 0052 FF91 pop r31
154 0054 EF91 pop r30
155 0056 BF91 pop r27
156 0058 AF91 pop r26
157 005a 9F91 pop r25
158 005c 8F91 pop r24
159 005e 7F91 pop r23
160 0060 6F91 pop r22
161 0062 5F91 pop r21
162 0064 4F91 pop r20
163 0066 3F91 pop r19
164 0068 2F91 pop r18
165 006a 0F90 pop __tmp_reg__
166 006c 0FBE out __SREG__,__tmp_reg__
167 006e 0F90 pop __tmp_reg__
168 0070 1F90 pop __zero_reg__
169 0072 1895 reti
170 /* epilogue end (size=17) */
171 /* function __vector_12 size 37 (2) */
175 .global TimeStampGetTime32
177 TimeStampGetTime32:
45:macClock.c **** }
46:macClock.c ****
47:macClock.c **** void TimeStampGetTime32(uint32_t *timePtr) // 得到当前时钟计数器中的值,用于时间戳
48:macClock.c **** {
179 .LM13:
180 /* prologue: frame size=0 */
181 /* prologue end (size=0) */
182 0074 FC01 movw r30,r24
49:macClock.c **** uint8_t intEnabled = bit_is_set(SREG, 7);
184 .LM14:
185 0076 2FB7 in r18,95-0x20
186 0078 2078 andi r18,lo8(-128)
50:macClock.c **** cli();
188 .LM15:
189 /* #APP */
190 007a F894 cli
51:macClock.c **** *timePtr = (uint32_t)inw(TCNT1L); // 读TCNT1
192 .LM16:
193 /* #NOAPP */
194 007c 8CB5 in r24,76-0x20
195 007e 9DB5 in r25,(76)+1-0x20
196 0080 AA27 clr r26
197 0082 BB27 clr r27
198 0084 8083 st Z,r24
199 0086 9183 std Z+1,r25
200 0088 A283 std Z+2,r26
201 008a B383 std Z+3,r27
52:macClock.c **** if (intEnabled) sei();
203 .LM17:
204 008c 2223 tst r18
205 008e 09F0 breq .L4
207 .LM18:
208 /* #APP */
209 0090 7894 sei
210 /* #NOAPP */
211 .L4:
212 0092 0895 ret
213 /* epilogue: frame size=0 */
214 0094 0895 ret
215 /* epilogue end (size=1) */
216 /* function TimeStampGetTime32 size 19 (18) */
218 .text
220 Letext:
221 /* File "macClock.c": code 79 = 0x004f ( 42), prologues 18, epilogues 19 */
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/cciobaaa.s:68 .text:00000000 ClockStart
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cciobaaa.s:126 .text:0000002a __vector_12
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cciobaaa.s:177 .text:00000074 TimeStampGetTime32
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/cciobaaa.s:220 .text:00000096 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
MACClockFire
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -