📄 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:
88 .global ClockStart
90 ClockStart:
1:macClock.c **** /*
2:macClock.c **** ****************************************************************************
3:macClock.c **** * 宁波中科集成电路设计中心 版权所有 Copyright 2005
4:macClock.c **** * http:\\www.nbicc.com
5:macClock.c **** *文件名: mac.c
6:macClock.c **** *程序员: 夏鹏 xpsonny@nbicc.com
7:macClock.c **** *主要内容 定时器
8:macClock.c ****
9:macClock.c **** *如有问题或BUG,请登录www.wsn.net.cn 提问或用邮件和作者联系
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 "dataqueue.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 **** #define SCALE_1ms 2
24:macClock.c **** #define INTERVAL_1ms 30000//15000 // 7650
25:macClock.c **** void ClockStart(void)
26:macClock.c **** {
92 .LM1:
93 /* prologue: frame size=0 */
94 /* prologue end (size=0) */
27:macClock.c **** uint8_t intEnabled, scale = SCALE_1ms;
28:macClock.c **** uint16_t interval = INTERVAL_1ms;
29:macClock.c **** scale |= 0x8;
30:macClock.c **** cbi(TIMSK, OCIE1A); // 关比较器A的输出中断
96 .LM2:
97 0000 87B7 in r24,87-0x20
98 0002 8F7E andi r24,lo8(-17)
99 0004 87BF out 87-0x20,r24
31:macClock.c **** intEnabled = bit_is_set(SREG, 7);
101 .LM3:
102 0006 2FB7 in r18,95-0x20
103 0008 2078 andi r18,lo8(-128)
32:macClock.c **** cli(); // 访问寄存器前先关中断
105 .LM4:
106 /* #APP */
107 000a F894 cli
33:macClock.c **** outw(TCNT1L, 0); // 清空寄存器
109 .LM5:
110 /* #NOAPP */
111 000c 1DBC out (76)+1-0x20,__zero_reg__
112 000e 1CBC out 76-0x20,__zero_reg__
34:macClock.c **** outw(OCR1AL, interval); // 设置比较匹配寄存器
114 .LM6:
115 0010 80E3 ldi r24,lo8(30000)
116 0012 95E7 ldi r25,hi8(30000)
117 0014 9BBD out (74)+1-0x20,r25
118 0016 8ABD out 74-0x20,r24
35:macClock.c **** if (intEnabled)
120 .LM7:
121 0018 2223 tst r18
122 001a 09F0 breq .L2
36:macClock.c **** sei();
124 .LM8:
125 /* #APP */
126 001c 7894 sei
127 /* #NOAPP */
128 .L2:
37:macClock.c **** outp(scale, TCCR1B); // 设置为8分频
130 .LM9:
131 001e 8AE0 ldi r24,lo8(10)
132 0020 8EBD out 78-0x20,r24
38:macClock.c **** sbi(TIMSK, OCIE1A); // 开中断
134 .LM10:
135 0022 87B7 in r24,87-0x20
136 0024 8061 ori r24,lo8(16)
137 0026 87BF out 87-0x20,r24
138 /* epilogue: frame size=0 */
139 0028 0895 ret
140 /* epilogue end (size=1) */
141 /* function ClockStart size 23 (22) */
146 .global __vector_12
148 __vector_12:
39:macClock.c **** }
40:macClock.c ****
41:macClock.c **** //16ms一次中断
42:macClock.c **** SIGNAL(SIG_OUTPUT_COMPARE1A) // 中断服务程序
43:macClock.c **** {
150 .LM11:
151 /* prologue: frame size=0 */
152 002a 1F92 push __zero_reg__
153 002c 0F92 push __tmp_reg__
154 002e 0FB6 in __tmp_reg__,__SREG__
155 0030 0F92 push __tmp_reg__
156 0032 1124 clr __zero_reg__
157 0034 2F93 push r18
158 0036 3F93 push r19
159 0038 4F93 push r20
160 003a 5F93 push r21
161 003c 6F93 push r22
162 003e 7F93 push r23
163 0040 8F93 push r24
164 0042 9F93 push r25
165 0044 AF93 push r26
166 0046 BF93 push r27
167 0048 EF93 push r30
168 004a FF93 push r31
169 /* prologue end (size=17) */
44:macClock.c **** MACClockFire();
171 .LM12:
172 004c 0E94 0000 call MACClockFire
45:macClock.c **** MACTask();
174 .LM13:
175 0050 0E94 0000 call MACTask
176 /* epilogue: frame size=0 */
177 0054 FF91 pop r31
178 0056 EF91 pop r30
179 0058 BF91 pop r27
180 005a AF91 pop r26
181 005c 9F91 pop r25
182 005e 8F91 pop r24
183 0060 7F91 pop r23
184 0062 6F91 pop r22
185 0064 5F91 pop r21
186 0066 4F91 pop r20
187 0068 3F91 pop r19
188 006a 2F91 pop r18
189 006c 0F90 pop __tmp_reg__
190 006e 0FBE out __SREG__,__tmp_reg__
191 0070 0F90 pop __tmp_reg__
192 0072 1F90 pop __zero_reg__
193 0074 1895 reti
194 /* epilogue end (size=17) */
195 /* function __vector_12 size 38 (4) */
197 .comm RecordPassed,30,1
198 .comm Queuemsgqueue,372,1
199 .comm QueueBroadcast,62,1
200 .comm QueueLocalMsg,62,1
205 .text
207 Letext:
208 /* File "macClock.c": code 61 = 0x003d ( 26), prologues 17, epilogues 18 */
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__
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc0abaaa.s:90 .text:00000000 ClockStart
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc0abaaa.s:148 .text:0000002a __vector_12
*COM*:0000001e RecordPassed
*COM*:00000174 Queuemsgqueue
*COM*:0000003e QueueBroadcast
*COM*:0000003e QueueLocalMsg
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc0abaaa.s:207 .text:00000076 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
MACClockFire
MACTask
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -