📄 router.lst
字号:
92:router.c ****
93:router.c **** SHORT_ADDR get_a_short_address(void)
94:router.c **** {
416 .LM16:
417 /* prologue: frame size=0 */
418 /* prologue end (size=0) */
95:router.c **** //从地址库中得到一个短地址
96:router.c **** SHORT_ADDR allocated_addr;
97:router.c **** allocated_addr.Val=(short_address_initial+address_allocated_num);
420 .LM17:
421 00f6 2091 0000 lds r18,short_address_initial
422 00fa 3091 0000 lds r19,(short_address_initial)+1
423 00fe 8091 0000 lds r24,address_allocated_num
424 0102 9091 0000 lds r25,(address_allocated_num)+1
98:router.c **** address_allocated_num++;
426 .LM18:
427 0106 0196 adiw r24,1
428 0108 9093 0000 sts (address_allocated_num)+1,r25
429 010c 8093 0000 sts address_allocated_num,r24
430 0110 0197 sbiw r24,1
99:router.c **** return allocated_addr;
100:router.c **** }
432 .LM19:
433 0112 820F add r24,r18
434 0114 931F adc r25,r19
435 /* epilogue: frame size=0 */
436 0116 0895 ret
437 /* epilogue end (size=1) */
438 /* function get_a_short_address size 17 (16) */
442 .global short_address_allocate_req
444 short_address_allocate_req:
446 .LM20:
447 /* prologue: frame size=8 */
448 0118 0F93 push r16
449 011a 1F93 push r17
450 011c CF93 push r28
451 011e DF93 push r29
452 0120 CDB7 in r28,__SP_L__
453 0122 DEB7 in r29,__SP_H__
454 0124 2897 sbiw r28,8
455 0126 0FB6 in __tmp_reg__,__SREG__
456 0128 F894 cli
457 012a DEBF out __SP_H__,r29
458 012c 0FBE out __SREG__,__tmp_reg__
459 012e CDBF out __SP_L__,r28
460 /* prologue end (size=12) */
461 0130 2983 std Y+1,r18
462 0132 3A83 std Y+2,r19
463 0134 4B83 std Y+3,r20
464 0136 5C83 std Y+4,r21
465 0138 6D83 std Y+5,r22
466 013a 7E83 std Y+6,r23
467 013c 8F83 std Y+7,r24
468 013e 9887 std Y+8,r25
470 .LM21:
471 0140 0E94 0000 call Is_associated
472 0144 282F mov r18,r24
474 .LM22:
475 0146 8A30 cpi r24,lo8(10)
476 0148 79F0 breq .L17
478 .LM23:
479 014a 3327 clr r19
480 014c 8BE0 ldi r24,lo8(11)
481 014e 90E0 ldi r25,hi8(11)
482 0150 289F mul r18,r24
483 0152 F001 movw r30,r0
484 0154 299F mul r18,r25
485 0156 F00D add r31,r0
486 0158 389F mul r19,r24
487 015a F00D add r31,r0
488 015c 1124 clr r1
489 015e E050 subi r30,lo8(-(associate_tab))
490 0160 F040 sbci r31,hi8(-(associate_tab))
491 0162 8085 ldd r24,Z+8
492 0164 9185 ldd r25,Z+9
493 0166 31C0 rjmp .L16
494 .L17:
496 .LM24:
497 0168 20E0 ldi r18,lo8(0)
499 .LM25:
500 016a 8091 0000 lds r24,associate_tab+10
501 016e 8823 tst r24
502 0170 81F0 breq .L21
503 0172 E0E0 ldi r30,lo8(associate_tab+10)
504 0174 F0E0 ldi r31,hi8(associate_tab+10)
505 .L20:
506 0176 2F5F subi r18,lo8(-(1))
507 0178 3B96 adiw r30,11
508 017a 8081 ld r24,Z
509 017c 8823 tst r24
510 017e 11F0 breq .L19
511 0180 2A30 cpi r18,lo8(10)
512 0182 C8F3 brlo .L20
513 .L19:
515 .LM26:
516 0184 2A30 cpi r18,lo8(10)
517 0186 29F4 brne .L21
519 .LM27:
520 0188 8091 0000 lds r24,default_short_addr
521 018c 9091 0000 lds r25,(default_short_addr)+1
522 0190 1CC0 rjmp .L16
523 .L21:
525 .LM28:
526 0192 3327 clr r19
527 0194 8BE0 ldi r24,lo8(11)
528 0196 90E0 ldi r25,hi8(11)
529 0198 289F mul r18,r24
530 019a 8001 movw r16,r0
531 019c 299F mul r18,r25
532 019e 100D add r17,r0
533 01a0 389F mul r19,r24
534 01a2 100D add r17,r0
535 01a4 1124 clr r1
536 01a6 0050 subi r16,lo8(-(associate_tab))
537 01a8 1040 sbci r17,hi8(-(associate_tab))
538 01aa 88E0 ldi r24,lo8(8)
539 01ac F801 movw r30,r16
540 01ae DE01 movw r26,r28
541 01b0 1196 adiw r26,1
542 01b2 0D90 ld __tmp_reg__,X+
543 01b4 0192 st Z+,__tmp_reg__
544 01b6 8A95 dec r24
545 01b8 E1F7 brne .-8
547 .LM29:
548 01ba 81E0 ldi r24,lo8(1)
549 01bc F801 movw r30,r16
550 01be 8287 std Z+10,r24
552 .LM30:
553 01c0 0E94 0000 call get_a_short_address
554 01c4 F801 movw r30,r16
555 01c6 8087 std Z+8,r24
556 01c8 9187 std Z+9,r25
557 .L16:
558 /* epilogue: frame size=8 */
559 01ca 2896 adiw r28,8
560 01cc 0FB6 in __tmp_reg__,__SREG__
561 01ce F894 cli
562 01d0 DEBF out __SP_H__,r29
563 01d2 0FBE out __SREG__,__tmp_reg__
564 01d4 CDBF out __SP_L__,r28
565 01d6 DF91 pop r29
566 01d8 CF91 pop r28
567 01da 1F91 pop r17
568 01dc 0F91 pop r16
569 01de 0895 ret
570 /* epilogue end (size=11) */
571 /* function short_address_allocate_req size 100 (77) */
576 .global disassociate_req
578 disassociate_req:
101:router.c ****
102:router.c ****
103:router.c **** bool disassociate_req(LONG_ADDR ieee_addr)
104:router.c **** {
580 .LM31:
581 /* prologue: frame size=8 */
582 01e0 CF93 push r28
583 01e2 DF93 push r29
584 01e4 CDB7 in r28,__SP_L__
585 01e6 DEB7 in r29,__SP_H__
586 01e8 2897 sbiw r28,8
587 01ea 0FB6 in __tmp_reg__,__SREG__
588 01ec F894 cli
589 01ee DEBF out __SP_H__,r29
590 01f0 0FBE out __SREG__,__tmp_reg__
591 01f2 CDBF out __SP_L__,r28
592 /* prologue end (size=10) */
593 01f4 2983 std Y+1,r18
594 01f6 3A83 std Y+2,r19
595 01f8 4B83 std Y+3,r20
596 01fa 5C83 std Y+4,r21
597 01fc 6D83 std Y+5,r22
598 01fe 7E83 std Y+6,r23
599 0200 8F83 std Y+7,r24
600 0202 9887 std Y+8,r25
105:router.c **** //地址删除,删除关联信息
106:router.c **** uint8_t index;
107:router.c **** index=0;
602 .LM32:
603 0204 20E0 ldi r18,lo8(0)
604 0206 4BE0 ldi r20,lo8(11)
605 0208 50E0 ldi r21,hi8(11)
606 020a 3981 ldd r19,Y+1
108:router.c **** while((associate_tab[index].ieee_addr.longaddr!=ieee_addr.longaddr)||(!associate_tab[index].i
608 .LM33:
609 020c 06C0 rjmp .L24
610 .L28:
109:router.c **** {
110:router.c **** index++;
612 .LM34:
613 020e 2F5F subi r18,lo8(-(1))
111:router.c **** if(index==MAX_ASSOCIATE_TABLE_NUM)
615 .LM35:
616 0210 2A30 cpi r18,lo8(10)
617 0212 19F4 brne .L24
112:router.c **** return FALSE;
619 .LM36:
620 0214 80E0 ldi r24,lo8(0)
621 0216 90E0 ldi r25,hi8(0)
622 0218 30C0 rjmp .L23
623 .L24:
624 021a 822F mov r24,r18
625 021c 9927 clr r25
626 021e 849F mul r24,r20
627 0220 F001 movw r30,r0
628 0222 859F mul r24,r21
629 0224 F00D add r31,r0
630 0226 949F mul r25,r20
631 0228 F00D add r31,r0
632 022a 1124 clr r1
633 022c E050 subi r30,lo8(-(associate_tab))
634 022e F040 sbci r31,hi8(-(associate_tab))
635 0230 8081 ld r24,Z
636 0232 8317 cp r24,r19
637 0234 61F7 brne .L28
638 0236 9181 ldd r25,Z+1
639 0238 8A81 ldd r24,Y+2
640 023a 9817 cp r25,r24
641 023c 41F7 brne .L28
642 023e 9281 ldd r25,Z+2
643 0240 8B81 ldd r24,Y+3
644 0242 9817 cp r25,r24
645 0244 21F7 brne .L28
646 0246 9381 ldd r25,Z+3
647 0248 8C81 ldd r24,Y+4
648 024a 9817 cp r25,r24
649 024c 01F7 brne .L28
650 024e 9481 ldd r25,Z+4
651 0250 8D81 ldd r24,Y+5
652 0252 9817 cp r25,r24
653 0254 E1F6 brne .L28
654 0256 9581 ldd r25,Z+5
655 0258 8E81 ldd r24,Y+6
656 025a 9817 cp r25,r24
657 025c C1F6 brne .L28
658 025e 9681 ldd r25,Z+6
659 0260 8F81 ldd r24,Y+7
660 0262 9817 cp r25,r24
661 0264 A1F6 brne .L28
662 0266 9781 ldd r25,Z+7
663 0268 8885 ldd r24,Y+8
664 026a 9817 cp r25,r24
665 026c 81F6 brne .L28
666 026e 8285 ldd r24,Z+10
667 0270 8823 tst r24
668 0272 69F2 breq .L28
113:router.c **** }
114:router.c **** if((associate_tab[index].ieee_addr.longaddr==ieee_addr.longaddr)&&(associate_tab[index].is_va
115:router.c **** associate_tab[index].is_valid=FALSE;
670 .LM37:
671 0274 1286 std Z+10,__zero_reg__
116:router.c **** return TRUE;
673 .LM38:
674 0276 81E0 ldi r24,lo8(1)
675 0278 90E0 ldi r25,hi8(1)
676 .L23:
677 /* epilogue: frame size=8 */
678 027a 2896 adiw r28,8
679 027c 0FB6 in __tmp_reg__,__SREG__
680 027e F894 cli
681 0280 DEBF out __SP_H__,r29
682 0282 0FBE out __SREG__,__tmp_reg__
683 0284 CDBF out __SP_L__,r28
684 0286 DF91 pop r29
685 0288 CF91 pop r28
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -