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