📄 level4.lst
字号:
171 .stabn 68,0,69,.LM14-__vector_11
172 .LM14:
173 0068 2A3A cpi r18,lo8(-86)
174 006a 71F7 brne .L21
175 .stabn 68,0,70,.LM15-__vector_11
176 .LM15:
177 006c 82E0 ldi r24,lo8(2)
178 006e F0CF rjmp .L28
179 .L27:
180 0070 8530 cpi r24,5
181 0072 9105 cpc r25,__zero_reg__
182 0074 89F0 breq .L20
183 0076 8530 cpi r24,5
184 0078 9105 cpc r25,__zero_reg__
185 007a 54F0 brlt .L18
186 007c 0697 sbiw r24,6
187 007e 69F7 brne .L25
188 .stabn 68,0,112,.LM16-__vector_11
189 .LM16:
190 0080 3093 0000 sts rx_number,r19
191 .stabn 68,0,113,.LM17-__vector_11
192 .LM17:
193 0084 2A3A cpi r18,lo8(-86)
194 0086 81F4 brne .L1
195 .stabn 68,0,115,.LM18-__vector_11
196 .LM18:
197 0088 85E5 ldi r24,lo8(85)
198 008a 8093 0000 sts valid_data_flag,r24
199 .stabn 68,0,117,.LM19-__vector_11
200 .LM19:
201 008e 0CC0 rjmp .L1
202 .L18:
203 .stabn 68,0,97,.LM20-__vector_11
204 .LM20:
205 0090 2093 0000 sts uart_in_param,r18
206 .stabn 68,0,98,.LM21-__vector_11
207 .LM21:
208 0094 85E0 ldi r24,lo8(5)
209 0096 DCCF rjmp .L28
210 .L20:
211 .stabn 68,0,103,.LM22-__vector_11
212 .LM22:
213 0098 2535 cpi r18,lo8(85)
214 009a B1F6 brne .L21
215 .stabn 68,0,104,.LM23-__vector_11
216 .LM23:
217 009c 86E0 ldi r24,lo8(6)
218 009e D8CF rjmp .L28
219 .L15:
220 .stabn 68,0,87,.LM24-__vector_11
221 .LM24:
222 00a0 2093 0000 sts uart_in_command,r18
223 .stabn 68,0,88,.LM25-__vector_11
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 7
224 .LM25:
225 00a4 84E0 ldi r24,lo8(4)
226 00a6 D4CF rjmp .L28
120:level4.c **** break;
121:level4.c **** }
122:level4.c **** }
227 .stabn 68,0,122,.LM26-__vector_11
228 .LM26:
229 .L1:
230 .LBE2:
231 /* epilogue: frame size=0 */
232 00a8 9F91 pop r25
233 00aa 8F91 pop r24
234 00ac 3F91 pop r19
235 00ae 2F91 pop r18
236 00b0 0F90 pop __tmp_reg__
237 00b2 0FBE out __SREG__,__tmp_reg__
238 00b4 0F90 pop __tmp_reg__
239 00b6 1F90 pop __zero_reg__
240 00b8 1895 reti
241 /* epilogue end (size=9) */
242 /* function __vector_11 size 94 (76) */
243 .size __vector_11, .-__vector_11
244 .stabs "temp:r(4,2)",64,0,48,18
245 .stabn 192,0,0,.LBB2-__vector_11
246 .stabn 224,0,0,.LBE2-__vector_11
247 .Lscope0:
248 .stabs "",36,0,0,.Lscope0-__vector_11
249 .stabs "SendByte:F(0,20)",36,0,132,SendByte
250 .stabs "byte:P(4,2)",64,0,131,24
251 .global SendByte
252 .type SendByte, @function
253 SendByte:
123:level4.c ****
124:level4.c ****
125:level4.c **** // ********************************************************************************************
126:level4.c **** // Description : Send one byte through UART.
127:level4.c **** // Return value: None.
128:level4.c **** // parameter : byte -- the byte to be sent.
129:level4.c **** // ********************************************************************************************
130:level4.c ****
131:level4.c **** void SendByte( uint8_t byte )
132:level4.c **** {
254 .stabn 68,0,132,.LM27-SendByte
255 .LM27:
256 /* prologue: frame size=0 */
257 /* prologue end (size=0) */
133:level4.c **** sbi( PORTC , TEN_485 );
258 .stabn 68,0,133,.LM28-SendByte
259 .LM28:
260 00ba AD9A sbi 53-0x20,5
134:level4.c **** UDR = byte;
261 .stabn 68,0,134,.LM29-SendByte
262 .LM29:
263 00bc 8CB9 out 44-0x20,r24
135:level4.c **** while ( !( UCSRA & ( 1 << UDRE ) ) )
264 .stabn 68,0,135,.LM30-SendByte
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 8
265 .LM30:
266 .L32:
267 00be 5D9B sbis 43-0x20,5
268 00c0 FECF rjmp .L32
136:level4.c **** { }
137:level4.c **** Delayus( 900 );
269 .stabn 68,0,137,.LM31-SendByte
270 .LM31:
271 00c2 84E8 ldi r24,lo8(900)
272 00c4 93E0 ldi r25,hi8(900)
273 00c6 00D0 rcall Delayus
138:level4.c **** cbi( PORTC , TEN_485 );
274 .stabn 68,0,138,.LM32-SendByte
275 .LM32:
276 00c8 AD98 cbi 53-0x20,5
139:level4.c **** }
277 .stabn 68,0,139,.LM33-SendByte
278 .LM33:
279 /* epilogue: frame size=0 */
280 00ca 0895 ret
281 /* epilogue end (size=1) */
282 /* function SendByte size 9 (8) */
283 .size SendByte, .-SendByte
284 .Lscope1:
285 .stabs "",36,0,0,.Lscope1-SendByte
286 .stabs "Send_Weigan26:F(0,20)",36,0,150,Send_Weigan26
287 .stabs "data:P(1,1)=*(4,2)",64,0,149,16
288 .global Send_Weigan26
289 .type Send_Weigan26, @function
290 Send_Weigan26:
140:level4.c ****
141:level4.c ****
142:level4.c ****
143:level4.c **** // ********************************************************************************************
144:level4.c **** // Description : Send weigan26 model and encode according to weigan26 protocol.
145:level4.c **** // Return value: None.
146:level4.c **** // parameter : * data -- the point of the data to be encoded.
147:level4.c **** // ********************************************************************************************
148:level4.c ****
149:level4.c **** void Send_Weigan26( uint8_t * data )
150:level4.c **** {
291 .stabn 68,0,150,.LM34-Send_Weigan26
292 .LM34:
293 /* prologue: frame size=0 */
294 00cc DF92 push r13
295 00ce EF92 push r14
296 00d0 FF92 push r15
297 00d2 0F93 push r16
298 00d4 1F93 push r17
299 00d6 CF93 push r28
300 /* prologue end (size=6) */
301 00d8 8C01 movw r16,r24
151:level4.c **** uint8_t i , weigan26_even_data , weigan26_odd_data , parity_bit , bit_cnt;
152:level4.c **** parity_bit = 0; //If use even parity check , this bit must be 0;
302 .stabn 68,0,152,.LM35-Send_Weigan26
303 .LM35:
304 .LBB3:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 9
305 00da DD24 clr r13
153:level4.c **** for ( i = 8 ; i < 20 ; i++ )
306 .stabn 68,0,153,.LM36-Send_Weigan26
307 .LM36:
308 00dc C8E0 ldi r28,lo8(8)
309 00de 47E0 ldi r20,lo8(7)
310 00e0 50E0 ldi r21,hi8(7)
311 .L40:
154:level4.c **** {
155:level4.c **** bit_cnt = i % 8 ;
312 .stabn 68,0,155,.LM37-Send_Weigan26
313 .LM37:
314 00e2 2C2F mov r18,r28
315 00e4 2770 andi r18,lo8(7)
156:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
316 .stabn 68,0,156,.LM38-Send_Weigan26
317 .LM38:
318 00e6 8C2F mov r24,r28
319 00e8 8695 lsr r24
320 00ea 8695 lsr r24
321 00ec 8695 lsr r24
322 00ee F801 movw r30,r16
323 00f0 E80F add r30,r24
324 00f2 F11D adc r31,__zero_reg__
325 00f4 8081 ld r24,Z
326 00f6 9927 clr r25
327 00f8 BA01 movw r22,r20
328 00fa 621B sub r22,r18
329 00fc 7109 sbc r23,__zero_reg__
330 00fe 02C0 rjmp 2f
331 0100 9595 1: asr r25
332 0102 8795 ror r24
333 0104 6A95 2: dec r22
334 0106 E2F7 brpl 1b
335 0108 8170 andi r24,lo8(1)
336 010a D826 eor r13,r24
337 .stabn 68,0,153,.LM39-Send_Weigan26
338 .LM39:
339 010c CF5F subi r28,lo8(-(1))
340 010e C431 cpi r28,lo8(20)
341 0110 40F3 brlo .L40
342 0112 C4E1 ldi r28,lo8(20)
157:level4.c **** }
158:level4.c **** wdt_reset( );
343 .stabn 68,0,158,.LM40-Send_Weigan26
344 .LM40:
345 /* #APP */
346 0114 A895 wdr
159:level4.c **** #ifdef WDT
160:level4.c **** WatchDog_Feed( );
347 .stabn 68,0,160,.LM41-Send_Weigan26
348 .LM41:
349 /* #NOAPP */
350 0116 00D0 rcall WatchDog_Feed
161:level4.c **** #endif
162:level4.c **** weigan26_even_data = parity_bit ;
351 .stabn 68,0,162,.LM42-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 10
352 .LM42:
353 0118 FD2C mov r15,r13
163:level4.c **** parity_bit = 1; //If use odd parity check , this bit must be 1 ;
354 .stabn 68,0,163,.LM43-Send_Weigan26
355 .LM43:
356 011a 91E0 ldi r25,lo8(1)
357 011c D92E mov r13,r25
164:level4.c **** for ( i = 20 ; i < 32 ; i++ )
358 .stabn 68,0,164,.LM44-Send_Weigan26
359 .LM44:
360 011e 47E0 ldi r20,lo8(7)
361 0120 50E0 ldi r21,hi8(7)
362 .L45:
165:level4.c **** {
166:level4.c **** bit_cnt = i % 8;
363 .stabn 68,0,166,.LM45-Send_Weigan26
364 .LM45:
365 0122 2C2F mov r18,r28
366 0124 2770 andi r18,lo8(7)
167:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
367 .stabn 68,0,167,.LM46-Send_Weigan26
368 .LM46:
369 0126 8C2F mov r24,r28
370 0128 8695 lsr r24
371 012a 8695 lsr r24
372 012c 8695 lsr r24
373 012e F801 movw r30,r16
374 0130 E80F add r30,r24
375 0132 F11D adc r31,__zero_reg__
376 0134 8081 ld r24,Z
377 0136 9927 clr r25
378 0138 BA01 movw r22,r20
379 013a 621B sub r22,r18
380 013c 7109 sbc r23,__zero_reg__
381 013e 02C0 rjmp 2f
382 0140 9595 1: asr r25
383 0142 8795 ror r24
384 0144 6A95 2: dec r22
385 0146 E2F7 brpl 1b
386 0148 8170 andi r24,lo8(1)
387 014a D826 eor r13,r24
388 .stabn 68,0,164,.LM47-Send_Weigan26
389 .LM47:
390 014c CF5F subi r28,lo8(-(1))
391 014e C032 cpi r28,lo8(32)
392 0150 40F3 brlo .L45
168:level4.c **** }
169:level4.c **** wdt_reset( );
393 .stabn 68,0,169,.LM48-Send_Weigan26
394 .LM48:
395 /* #APP */
396 0152 A895 wdr
170:level4.c **** #ifdef WDT
171:level4.c **** WatchDog_Feed( );
397 .stabn 68,0,171,.LM49-Send_Weigan26
398 .LM49:
399 /* #NOAPP */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 11
400 0154 00D0 rcall WatchDog_Feed
172:level4.c **** #endif
173:level4.c **** weigan26_odd_data = parity_bit;
174:level4.c **** if ( weigan26_even_data ) //Send E bit;
401 .stabn 68,0,174,.LM50-Send_Weigan26
402 .LM50:
403 0156 FF20 tst r15
404 0158 31F1 breq .L46
175:level4.c **** Send_Weigan1();
405 .stabn 68,0,175,.LM51-Send_Weigan26
406 .LM51:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -