📄 level4.lst
字号:
346 .stabn 68,0,219,.LM46-SendByte
347 .LM46:
348 0100 88EE ldi r24,lo8(1000)
349 0102 93E0 ldi r25,hi8(1000)
350 0104 00D0 rcall Delayus
220:level4.c **** cbi( PORTC , TEN_485 );
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 11
351 .stabn 68,0,220,.LM47-SendByte
352 .LM47:
353 0106 AD98 cbi 53-0x20,5
221:level4.c **** }
354 .stabn 68,0,221,.LM48-SendByte
355 .LM48:
356 /* epilogue: frame size=0 */
357 0108 0895 ret
358 /* epilogue end (size=1) */
359 /* function SendByte size 9 (8) */
360 .size SendByte, .-SendByte
361 .Lscope3:
362 .stabs "",36,0,0,.Lscope3-SendByte
363 .stabs "Send_Weigan26:F(0,20)",36,0,247,Send_Weigan26
364 .stabs "data:P(1,1)",64,0,246,16
365 .global Send_Weigan26
366 .type Send_Weigan26, @function
367 Send_Weigan26:
222:level4.c ****
223:level4.c ****
224:level4.c **** //weigan26
225:level4.c **** //E CCCC CCCC CCCC CCCC CCCC CCCC O
226:level4.c ****
227:level4.c **** //weigan34
228:level4.c **** //E CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC O
229:level4.c ****
230:level4.c **** //weigan36
231:level4.c **** //O CCCC CCCC CCCC CCCC C CCC CCCC CCCC CCCC IIE
232:level4.c **** //I is '0';
233:level4.c ****
234:level4.c **** //weigan44
235:level4.c **** //CCCC CCCC CCCC CCCC CCCC
236:level4.c **** //CCCC CCCC CCCC CCCC CCCC XXXX
237:level4.c **** //XXXX is the value of XOR of first 10 CCCC;
238:level4.c ****
239:level4.c ****
240:level4.c **** // ********************************************************************************************
241:level4.c **** // Description : Send weigan26 model and encode according to weigan26 protocol.
242:level4.c **** // Return value: None.
243:level4.c **** // parameter : * data -- the point of the data to be encoded.
244:level4.c **** // ********************************************************************************************
245:level4.c ****
246:level4.c **** void Send_Weigan26( uint8_t * data )
247:level4.c **** {
368 .stabn 68,0,247,.LM49-Send_Weigan26
369 .LM49:
370 /* prologue: frame size=0 */
371 010a EF92 push r14
372 010c FF92 push r15
373 010e 0F93 push r16
374 0110 1F93 push r17
375 0112 CF93 push r28
376 /* prologue end (size=5) */
377 0114 8C01 movw r16,r24
248:level4.c **** uint8_t i , weigan26_even_data , weigan26_odd_data , parity_bit , bit_cnt;
249:level4.c **** parity_bit = 0; //If use even parity check , this bit must be 0;
378 .stabn 68,0,249,.LM50-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 12
379 .LM50:
380 .LBB3:
381 0116 FF24 clr r15
250:level4.c **** for ( i = 8 ; i < 20 ; i++ )
382 .stabn 68,0,250,.LM51-Send_Weigan26
383 .LM51:
384 0118 C8E0 ldi r28,lo8(8)
385 .L46:
251:level4.c **** {
252:level4.c **** bit_cnt = i % 8 ;
386 .stabn 68,0,252,.LM52-Send_Weigan26
387 .LM52:
388 011a 4C2F mov r20,r28
389 011c 4770 andi r20,lo8(7)
253:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
390 .stabn 68,0,253,.LM53-Send_Weigan26
391 .LM53:
392 011e 8C2F mov r24,r28
393 0120 8695 lsr r24
394 0122 8695 lsr r24
395 0124 8695 lsr r24
396 0126 F801 movw r30,r16
397 0128 E80F add r30,r24
398 012a F11D adc r31,__zero_reg__
399 012c 8081 ld r24,Z
400 012e 282F mov r18,r24
401 0130 3327 clr r19
402 0132 87E0 ldi r24,lo8(7)
403 0134 90E0 ldi r25,hi8(7)
404 0136 841B sub r24,r20
405 0138 9109 sbc r25,__zero_reg__
406 013a 02C0 rjmp 2f
407 013c 3595 1: asr r19
408 013e 2795 ror r18
409 0140 8A95 2: dec r24
410 0142 E2F7 brpl 1b
411 0144 822F mov r24,r18
412 0146 8170 andi r24,lo8(1)
413 0148 F826 eor r15,r24
414 .stabn 68,0,250,.LM54-Send_Weigan26
415 .LM54:
416 014a CF5F subi r28,lo8(-(1))
417 014c C431 cpi r28,lo8(20)
418 014e 28F3 brlo .L46
419 0150 C4E1 ldi r28,lo8(20)
254:level4.c **** }
255:level4.c **** wdt_reset( );
420 .stabn 68,0,255,.LM55-Send_Weigan26
421 .LM55:
422 /* #APP */
423 0152 A895 wdr
256:level4.c **** #ifdef WDT
257:level4.c **** WatchDog_Feed( );
424 .stabn 68,0,257,.LM56-Send_Weigan26
425 .LM56:
426 /* #NOAPP */
427 0154 00D0 rcall WatchDog_Feed
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 13
258:level4.c **** #endif
259:level4.c **** weigan26_even_data = parity_bit ;
428 .stabn 68,0,259,.LM57-Send_Weigan26
429 .LM57:
430 0156 EF2C mov r14,r15
260:level4.c **** parity_bit = 1; //If use odd parity check , this bit must be 1 ;
431 .stabn 68,0,260,.LM58-Send_Weigan26
432 .LM58:
433 0158 81E0 ldi r24,lo8(1)
434 015a F82E mov r15,r24
435 .L51:
261:level4.c **** for ( i = 20 ; i < 32 ; i++ )
262:level4.c **** {
263:level4.c **** bit_cnt = i % 8;
436 .stabn 68,0,263,.LM59-Send_Weigan26
437 .LM59:
438 015c 4C2F mov r20,r28
439 015e 4770 andi r20,lo8(7)
264:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
440 .stabn 68,0,264,.LM60-Send_Weigan26
441 .LM60:
442 0160 8C2F mov r24,r28
443 0162 8695 lsr r24
444 0164 8695 lsr r24
445 0166 8695 lsr r24
446 0168 F801 movw r30,r16
447 016a E80F add r30,r24
448 016c F11D adc r31,__zero_reg__
449 016e 8081 ld r24,Z
450 0170 282F mov r18,r24
451 0172 3327 clr r19
452 0174 87E0 ldi r24,lo8(7)
453 0176 90E0 ldi r25,hi8(7)
454 0178 841B sub r24,r20
455 017a 9109 sbc r25,__zero_reg__
456 017c 02C0 rjmp 2f
457 017e 3595 1: asr r19
458 0180 2795 ror r18
459 0182 8A95 2: dec r24
460 0184 E2F7 brpl 1b
461 0186 822F mov r24,r18
462 0188 8170 andi r24,lo8(1)
463 018a F826 eor r15,r24
464 .stabn 68,0,261,.LM61-Send_Weigan26
465 .LM61:
466 018c CF5F subi r28,lo8(-(1))
467 018e C032 cpi r28,lo8(32)
468 0190 28F3 brlo .L51
265:level4.c **** }
266:level4.c **** wdt_reset( );
469 .stabn 68,0,266,.LM62-Send_Weigan26
470 .LM62:
471 /* #APP */
472 0192 A895 wdr
267:level4.c **** #ifdef WDT
268:level4.c **** WatchDog_Feed( );
473 .stabn 68,0,268,.LM63-Send_Weigan26
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 14
474 .LM63:
475 /* #NOAPP */
476 0194 00D0 rcall WatchDog_Feed
269:level4.c **** #endif
270:level4.c **** weigan26_odd_data = parity_bit;
271:level4.c **** if ( weigan26_even_data ) //Send E bit;
477 .stabn 68,0,271,.LM64-Send_Weigan26
478 .LM64:
479 0196 EE20 tst r14
480 0198 11F0 breq .L52
272:level4.c **** Send_Weigan1();
481 .stabn 68,0,272,.LM65-Send_Weigan26
482 .LM65:
483 019a 61D1 rcall Send_Weigan1
484 019c 01C0 rjmp .L53
485 .L52:
273:level4.c **** else
274:level4.c **** Send_Weigan0();
486 .stabn 68,0,274,.LM66-Send_Weigan26
487 .LM66:
488 019e 6AD1 rcall Send_Weigan0
489 .L53:
275:level4.c **** for ( i = 8 ; i < 32 ; i++ ) //Send CCCC CCCC CCCC CCCC CCCC CCCC;
490 .stabn 68,0,275,.LM67-Send_Weigan26
491 .LM67:
492 01a0 C8E0 ldi r28,lo8(8)
493 .L60:
276:level4.c **** {
277:level4.c **** bit_cnt = i % 8 ;
494 .stabn 68,0,277,.LM68-Send_Weigan26
495 .LM68:
496 01a2 4C2F mov r20,r28
497 01a4 4770 andi r20,lo8(7)
278:level4.c **** if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 ) //MSBit is sent first;
498 .stabn 68,0,278,.LM69-Send_Weigan26
499 .LM69:
500 01a6 8C2F mov r24,r28
501 01a8 8695 lsr r24
502 01aa 8695 lsr r24
503 01ac 8695 lsr r24
504 01ae F801 movw r30,r16
505 01b0 E80F add r30,r24
506 01b2 F11D adc r31,__zero_reg__
507 01b4 8081 ld r24,Z
508 01b6 282F mov r18,r24
509 01b8 3327 clr r19
510 01ba 87E0 ldi r24,lo8(7)
511 01bc 90E0 ldi r25,hi8(7)
512 01be 841B sub r24,r20
513 01c0 9109 sbc r25,__zero_reg__
514 01c2 02C0 rjmp 2f
515 01c4 3595 1: asr r19
516 01c6 2795 ror r18
517 01c8 8A95 2: dec r24
518 01ca E2F7 brpl 1b
519 01cc 20FF sbrs r18,0
520 01ce 02C0 rjmp .L58
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 15
279:level4.c **** Send_Weigan1();
521 .stabn 68,0,279,.LM70-Send_Weigan26
522 .LM70:
523 01d0 46D1 rcall Send_Weigan1
524 01d2 01C0 rjmp .L56
525 .L58:
280:level4.c **** else
281:level4.c **** Send_Weigan0();
526 .stabn 68,0,281,.LM71-Send_Weigan26
527 .LM71:
528 01d4 4FD1 rcall Send_Weigan0
529 .stabn 68,0,275,.LM72-Send_Weigan26
530 .LM72:
531 .L56:
532 01d6 CF5F subi r28,lo8(-(1))
533 01d8 C032 cpi r28,lo8(32)
534 01da 18F3 brlo .L60
282:level4.c **** }
283:level4.c **** if ( weigan26_odd_data ) //Send O bit;
535 .stabn 68,0,283,.LM73-Send_Weigan26
536 .LM73:
537 01dc FF20 tst r15
538 01de 11F0 breq .L61
284:level4.c **** Send_Weigan1();
539 .stabn 68,0,284,.LM74-Send_Weigan26
540 .LM74:
541 01e0 3ED1 rcall Send_Weigan1
542 01e2 01C0 rjmp .L41
543 .L61:
285:level4.c **** else
286:level4.c **** Send_Weigan0();
544 .stabn 68,0,286,.LM75-Send_Weigan26
545 .LM75:
546 01e4 47D1 rcall Send_Weigan0
287:level4.c **** }
547 .stabn 68,0,287,.LM76-Send_Weigan26
548 .LM76:
549 .L41:
550 .LBE3:
551 /* epilogue: frame size=0 */
552 01e6 CF91 pop r28
553 01e8 1F91 pop r17
554 01ea 0F91 pop r16
555 01ec FF90 pop r15
556 01ee EF90 pop r14
557 01f0 0895 ret
558 /* epilogue end (size=6) */
559 /* function Send_Weigan26 size 121 (110) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -