📄 sensor.lst
字号:
1 .file "sensor.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:
90 .global SensorTempStdControlInit
92 SensorTempStdControlInit:
1:sensor.c **** /*
2:sensor.c **** ****************************************************************************
3:sensor.c **** * 宁波中科集成电路设计中心 版权所有 Copyright 2005
4:sensor.c **** * http:\\www.nbicc.com
5:sensor.c **** *文件名: sensor.c
6:sensor.c **** *程序员: 夏鹏 xpsonny@nbicc.com
7:sensor.c **** *主要内容 光传感和温度传感采集
8:sensor.c ****
9:sensor.c **** *如有问题或BUG,请登录www.wsn.net.cn 提问或用邮件和作者联系
10:sensor.c **** ****************************************************************************
11:sensor.c **** */
12:sensor.c ****
13:sensor.c **** #include "sensor.h"
14:sensor.c **** #include "os.h"
15:sensor.c **** #include "adc.h"
16:sensor.c ****
17:sensor.c **** static void OSH_SET_TEMP_CTL_PIN(void);
18:sensor.c **** static void OSH_MAKE_TEMP_CTL_OUTPUT(void);
19:sensor.c **** static void OSH_CLR_PHOTO_CTL_PIN(void);
20:sensor.c **** static void OSH_MAKE_PHOTO_CTL_INPUT(void);
21:sensor.c ****
22:sensor.c **** static void OSH_SET_PHOTO_CTL_PIN(void);
23:sensor.c **** static void OSH_MAKE_PHOTO_CTL_OUTPUT(void);
24:sensor.c **** static void OSH_CLR_TEMP_CTL_PIN(void);
25:sensor.c **** static void OSH_MAKE_TEMP_CTL_INPUT(void);
26:sensor.c ****
27:sensor.c **** static int PhotoTempM_state;
28:sensor.c ****
29:sensor.c **** enum PhotoTempM_state {
30:sensor.c **** PhotoTempM_IDLE = 1,
31:sensor.c **** PhotoTempM_BUSY = 2,
32:sensor.c **** PhotoTempM_CONTINUOUS = 3
33:sensor.c **** };
34:sensor.c ****
35:sensor.c **** result_t SensorTempStdControlInit(void)
36:sensor.c **** {
94 .LM1:
95 /* prologue: frame size=0 */
96 /* prologue end (size=0) */
37:sensor.c **** ADCBindPort(OS_ADC_TEMP_PORT, OSH_ACTUAL_TEMP_PORT);
98 .LM2:
99 0000 61E0 ldi r22,lo8(1)
100 0002 82E0 ldi r24,lo8(2)
101 0004 0E94 0000 call ADCBindPort
102 .LBB2:
38:sensor.c **** { uint8_t atomicState = AtomicStart();
104 .LM3:
105 0008 0E94 0000 call AtomicStart
39:sensor.c **** {
40:sensor.c **** PhotoTempM_state = PhotoTempM_IDLE;
107 .LM4:
108 000c 21E0 ldi r18,lo8(1)
109 000e 30E0 ldi r19,hi8(1)
110 0010 3093 0000 sts (PhotoTempM_state)+1,r19
111 0014 2093 0000 sts PhotoTempM_state,r18
41:sensor.c **** }
42:sensor.c **** AtomicEnd(atomicState); }
113 .LM5:
114 0018 0E94 0000 call AtomicEnd
115 .LBE2:
43:sensor.c **** return ADCControlInit();
117 .LM6:
118 001c 0E94 0000 call ADCControlInit
44:sensor.c **** }
120 .LM7:
121 0020 9927 clr r25
122 /* epilogue: frame size=0 */
123 0022 0895 ret
124 /* epilogue end (size=1) */
125 /* function SensorTempStdControlInit size 18 (17) */
128 .global OSH_MAKE_INT1_OUTPUT
130 OSH_MAKE_INT1_OUTPUT:
45:sensor.c ****
46:sensor.c **** void OSH_MAKE_INT1_OUTPUT(void)
47:sensor.c **** {
132 .LM8:
133 /* prologue: frame size=0 */
134 /* prologue end (size=0) */
48:sensor.c **** * (volatile unsigned char *)(0x02 + 0x20) |= 1 << 5;
136 .LM9:
137 0024 159A sbi 34-0x20,5
138 /* epilogue: frame size=0 */
139 0026 0895 ret
140 /* epilogue end (size=1) */
141 /* function OSH_MAKE_INT1_OUTPUT size 2 (1) */
145 OSH_MAKE_PHOTO_CTL_OUTPUT:
49:sensor.c **** }
50:sensor.c ****
51:sensor.c **** void OSH_MAKE_PHOTO_CTL_OUTPUT(void)
52:sensor.c **** {
147 .LM10:
148 /* prologue: frame size=0 */
149 /* prologue end (size=0) */
53:sensor.c **** OSH_MAKE_INT1_OUTPUT();
151 .LM11:
152 0028 0E94 0000 call OSH_MAKE_INT1_OUTPUT
153 /* epilogue: frame size=0 */
154 002c 0895 ret
155 /* epilogue end (size=1) */
156 /* function OSH_MAKE_PHOTO_CTL_OUTPUT size 3 (2) */
159 .global OSH_SET_INT1_PIN
161 OSH_SET_INT1_PIN:
54:sensor.c **** }
55:sensor.c ****
56:sensor.c **** void OSH_SET_INT1_PIN(void)
57:sensor.c **** {
163 .LM12:
164 /* prologue: frame size=0 */
165 /* prologue end (size=0) */
58:sensor.c **** * (volatile unsigned char *)(0x03 + 0x20) |= 1 << 5;
167 .LM13:
168 002e 1D9A sbi 35-0x20,5
169 /* epilogue: frame size=0 */
170 0030 0895 ret
171 /* epilogue end (size=1) */
172 /* function OSH_SET_INT1_PIN size 2 (1) */
176 OSH_SET_PHOTO_CTL_PIN:
59:sensor.c **** }
60:sensor.c ****
61:sensor.c **** void OSH_SET_PHOTO_CTL_PIN(void)
62:sensor.c **** {
178 .LM14:
179 /* prologue: frame size=0 */
180 /* prologue end (size=0) */
63:sensor.c **** OSH_SET_INT1_PIN();
182 .LM15:
183 0032 0E94 0000 call OSH_SET_INT1_PIN
184 /* epilogue: frame size=0 */
185 0036 0895 ret
186 /* epilogue end (size=1) */
187 /* function OSH_SET_PHOTO_CTL_PIN size 3 (2) */
190 .global OSH_MAKE_INT2_OUTPUT
192 OSH_MAKE_INT2_OUTPUT:
64:sensor.c **** }
65:sensor.c ****
66:sensor.c **** void OSH_MAKE_INT2_OUTPUT(void)
67:sensor.c **** {
194 .LM16:
195 /* prologue: frame size=0 */
196 /* prologue end (size=0) */
68:sensor.c **** * (volatile unsigned char *)(0x02 + 0x20) |= 1 << 6;
198 .LM17:
199 0038 169A sbi 34-0x20,6
200 /* epilogue: frame size=0 */
201 003a 0895 ret
202 /* epilogue end (size=1) */
203 /* function OSH_MAKE_INT2_OUTPUT size 2 (1) */
207 OSH_MAKE_TEMP_CTL_OUTPUT:
69:sensor.c **** }
70:sensor.c ****
71:sensor.c **** void OSH_MAKE_TEMP_CTL_OUTPUT(void)
72:sensor.c **** {
209 .LM18:
210 /* prologue: frame size=0 */
211 /* prologue end (size=0) */
73:sensor.c **** OSH_MAKE_INT2_OUTPUT();
213 .LM19:
214 003c 0E94 0000 call OSH_MAKE_INT2_OUTPUT
215 /* epilogue: frame size=0 */
216 0040 0895 ret
217 /* epilogue end (size=1) */
218 /* function OSH_MAKE_TEMP_CTL_OUTPUT size 3 (2) */
221 .global OSH_SET_INT2_PIN
223 OSH_SET_INT2_PIN:
74:sensor.c **** }
75:sensor.c ****
76:sensor.c **** void OSH_SET_INT2_PIN(void)
77:sensor.c **** {
225 .LM20:
226 /* prologue: frame size=0 */
227 /* prologue end (size=0) */
78:sensor.c **** * (volatile unsigned char *)(0x03 + 0x20) |= 1 << 6;
229 .LM21:
230 0042 1E9A sbi 35-0x20,6
231 /* epilogue: frame size=0 */
232 0044 0895 ret
233 /* epilogue end (size=1) */
234 /* function OSH_SET_INT2_PIN size 2 (1) */
238 OSH_SET_TEMP_CTL_PIN:
79:sensor.c **** }
80:sensor.c ****
81:sensor.c **** void OSH_SET_TEMP_CTL_PIN(void)
82:sensor.c **** {
240 .LM22:
241 /* prologue: frame size=0 */
242 /* prologue end (size=0) */
83:sensor.c **** OSH_SET_INT2_PIN();
244 .LM23:
245 0046 0E94 0000 call OSH_SET_INT2_PIN
246 /* epilogue: frame size=0 */
247 004a 0895 ret
248 /* epilogue end (size=1) */
249 /* function OSH_SET_TEMP_CTL_PIN size 3 (2) */
252 .global SensorTempStdControlStart
254 SensorTempStdControlStart:
84:sensor.c **** }
85:sensor.c ****
86:sensor.c **** result_t SensorTempStdControlStart(void)
87:sensor.c **** {
256 .LM24:
257 /* prologue: frame size=0 */
258 004c 1F93 push r17
259 /* prologue end (size=1) */
260 .LBB3:
88:sensor.c **** { uint8_t atomicState = AtomicStart();
262 .LM25:
263 004e 0E94 0000 call AtomicStart
264 0052 182F mov r17,r24
89:sensor.c **** {
90:sensor.c **** OSH_SET_TEMP_CTL_PIN();
266 .LM26:
267 0054 0E94 0000 call OSH_SET_TEMP_CTL_PIN
91:sensor.c **** OSH_MAKE_TEMP_CTL_OUTPUT();
269 .LM27:
270 0058 0E94 0000 call OSH_MAKE_TEMP_CTL_OUTPUT
92:sensor.c **** }
93:sensor.c **** AtomicEnd(atomicState); }
272 .LM28:
273 005c 812F mov r24,r17
274 005e 0E94 0000 call AtomicEnd
275 .LBE3:
94:sensor.c **** return SUCCESS;
95:sensor.c **** }
277 .LM29:
278 0062 81E0 ldi r24,lo8(1)
279 0064 90E0 ldi r25,hi8(1)
280 /* epilogue: frame size=0 */
281 0066 1F91 pop r17
282 0068 0895 ret
283 /* epilogue end (size=2) */
284 /* function SensorTempStdControlStart size 15 (12) */
290 .global SensorInternalTempADCGetData
292 SensorInternalTempADCGetData:
96:sensor.c ****
97:sensor.c **** result_t SensorInternalTempADCGetData(void)
98:sensor.c **** {
294 .LM30:
295 /* prologue: frame size=0 */
296 /* prologue end (size=0) */
99:sensor.c **** unsigned char result;
100:sensor.c **** result = ADCGetData(OS_ADC_TEMP_PORT);
298 .LM31:
299 006a 82E0 ldi r24,lo8(2)
300 006c 0E94 0000 call ADCGetData
101:sensor.c ****
102:sensor.c **** return result;
103:sensor.c **** }
302 .LM32:
303 0070 9927 clr r25
304 /* epilogue: frame size=0 */
305 0072 0895 ret
306 /* epilogue end (size=1) */
307 /* function SensorInternalTempADCGetData size 5 (4) */
310 .global OSH_MAKE_INT2_INPUT
312 OSH_MAKE_INT2_INPUT:
104:sensor.c ****
105:sensor.c **** void OSH_MAKE_INT2_INPUT(void)
106:sensor.c **** {
314 .LM33:
315 /* prologue: frame size=0 */
316 /* prologue end (size=0) */
107:sensor.c **** * (volatile unsigned char *)(0x02 + 0x20) &= ~(1 << 6);
318 .LM34:
319 0074 1698 cbi 34-0x20,6
320 /* epilogue: frame size=0 */
321 0076 0895 ret
322 /* epilogue end (size=1) */
323 /* function OSH_MAKE_INT2_INPUT size 2 (1) */
326 .global OSH_CLR_INT2_PIN
328 OSH_CLR_INT2_PIN:
108:sensor.c **** }
109:sensor.c ****
110:sensor.c **** void OSH_MAKE_TEMP_CTL_INPUT(void)
111:sensor.c **** {
112:sensor.c **** OSH_MAKE_INT2_INPUT();
113:sensor.c **** }
114:sensor.c ****
115:sensor.c **** void OSH_CLR_INT2_PIN(void)
116:sensor.c **** {
330 .LM35:
331 /* prologue: frame size=0 */
332 /* prologue end (size=0) */
117:sensor.c **** * (volatile unsigned char *)(0x03 + 0x20) &= ~(1 << 6);
334 .LM36:
335 0078 1E98 cbi 35-0x20,6
336 /* epilogue: frame size=0 */
337 007a 0895 ret
338 /* epilogue end (size=1) */
339 /* function OSH_CLR_INT2_PIN size 2 (1) */
342 .global OSH_MAKE_INT1_INPUT
344 OSH_MAKE_INT1_INPUT:
118:sensor.c **** }
119:sensor.c ****
120:sensor.c **** void OSH_CLR_TEMP_CTL_PIN(void)
121:sensor.c **** {
122:sensor.c **** OSH_CLR_INT2_PIN();
123:sensor.c **** }
124:sensor.c ****
125:sensor.c **** void OSH_MAKE_INT1_INPUT(void)
126:sensor.c **** {
346 .LM37:
347 /* prologue: frame size=0 */
348 /* prologue end (size=0) */
127:sensor.c **** * (volatile unsigned char *)(0x02 + 0x20) &= ~(1 << 5);
350 .LM38:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -