⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 router.lst

📁 无线传感器星型网络的节点的基站程序,采用802.15.4协议
💻 LST
📖 第 1 页 / 共 3 页
字号:
  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 + -