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

📄 router.lst

📁 无线传感器星型网络的节点的基站程序,采用802.15.4协议
💻 LST
📖 第 1 页 / 共 3 页
字号:
   1               		.file	"router.c"
   2               		.arch atmega128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 223               	.global	associate_tab_init
 225               	associate_tab_init:
   1:router.c      **** //----------------------------------------------------//
   2:router.c      **** //-------Institute Of  Computing Technology-----------//
   3:router.c      **** //------------Chinese Academic  Science---------------//
   4:router.c      **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
   5:router.c      **** //----------------------------------------------------//
   6:router.c      **** 
   7:router.c      **** /**
   8:router.c      ****  * @copyright:nbicc_lpp
   9:router.c      ****  * @this is router layer code
  10:router.c      ****  * @author liulingyi      (lingyiliu@ict.ac.cn)
  11:router.c      ****  * 
  12:router.c      ****  *              
  13:router.c      ****  * @data:2005.12.16
  14:router.c      ****  * @version:0.0.1
  15:router.c      ****  * @updata:$
  16:router.c      ****  *
  17:router.c      ****  */
  18:router.c      **** 
  19:router.c      **** #include "project.h"
  20:router.c      **** #include "router.h"
  21:router.c      **** 
  22:router.c      **** extern  SHORT_ADDR  default_short_addr;
  23:router.c      **** extern  MAC_PIB  mac_pib_data;
  24:router.c      **** 
  25:router.c      **** ASSOCIATE_TABLE_ELEM   associate_tab[MAX_ASSOCIATE_TABLE_NUM];
  26:router.c      **** 
  27:router.c      **** uint16_t   short_address_initial;
  28:router.c      **** uint16_t   address_allocated_num;
  29:router.c      **** 
  30:router.c      **** 
  31:router.c      **** void  associate_tab_init(void)
  32:router.c      **** {
 227               	.LM1:
 228               	/* prologue: frame size=0 */
 229               	/* prologue end (size=0) */
 230 0000 E0E0      		ldi r30,lo8(associate_tab)
 231 0002 F0E0      		ldi r31,hi8(associate_tab)
 232 0004 89E0      		ldi r24,lo8(9)
 233               	.L5:
 234               	.LBB2:
  33:router.c      ****     for(uint8_t index=0;index<MAX_ASSOCIATE_TABLE_NUM;index++)
  34:router.c      ****     	{
  35:router.c      **** 		associate_tab[index].is_valid=FALSE;
 236               	.LM2:
 237 0006 1286      		std Z+10,__zero_reg__
  36:router.c      **** 		associate_tab[index].ieee_addr.longaddr=0x0000000000000000;
 239               	.LM3:
 240 0008 1082      		st Z,__zero_reg__
 241 000a 1182      		std Z+1,__zero_reg__
 242 000c 1282      		std Z+2,__zero_reg__
 243 000e 1382      		std Z+3,__zero_reg__
 244 0010 1482      		std Z+4,__zero_reg__
 245 0012 1582      		std Z+5,__zero_reg__
 246 0014 1682      		std Z+6,__zero_reg__
 247 0016 1782      		std Z+7,__zero_reg__
 249               	.LM4:
 250 0018 8150      		subi r24,lo8(-(-1))
 251 001a 3B96      		adiw r30,11
 252 001c 87FF      		sbrs r24,7
 253 001e F3CF      		rjmp .L5
 254               	.LBE2:
 255               	/* epilogue: frame size=0 */
 256 0020 0895      		ret
 257               	/* epilogue end (size=1) */
 258               	/* function associate_tab_init size 17 (16) */
 264               	.global	router_init
 266               	router_init:
  37:router.c      ****     	}	
  38:router.c      **** }
  39:router.c      **** void  router_init(void)
  40:router.c      **** {
 268               	.LM5:
 269               	/* prologue: frame size=0 */
 270               	/* prologue end (size=0) */
  41:router.c      ****      associate_tab_init();
 272               	.LM6:
 273 0022 0E94 0000 		call associate_tab_init
  42:router.c      ****      short_address_initial=0x1201;	 
 275               	.LM7:
 276 0026 81E0      		ldi r24,lo8(4609)
 277 0028 92E1      		ldi r25,hi8(4609)
 278 002a 9093 0000 		sts (short_address_initial)+1,r25
 279 002e 8093 0000 		sts short_address_initial,r24
  43:router.c      ****      address_allocated_num=0;	 
 281               	.LM8:
 282 0032 1092 0000 		sts (address_allocated_num)+1,__zero_reg__
 283 0036 1092 0000 		sts address_allocated_num,__zero_reg__
 284               	/* epilogue: frame size=0 */
 285 003a 0895      		ret
 286               	/* epilogue end (size=1) */
 287               	/* function router_init size 13 (12) */
 291               	.global	Is_associated
 293               	Is_associated:
  44:router.c      **** }
  45:router.c      **** SHORT_ADDR short_address_allocate_req(LONG_ADDR  ieee_addr)
  46:router.c      **** {
  47:router.c      ****      
  48:router.c      ****      
  49:router.c      ****       //地址分配,记录关联信息
  50:router.c      ****       SHORT_ADDR  allocated_addr;
  51:router.c      **** 	//allocated_addr=get_a_short_address();
  52:router.c      ****       
  53:router.c      ****       
  54:router.c      **** 
  55:router.c      **** 	
  56:router.c      **** 	//return allocated_addr;
  57:router.c      ****      
  58:router.c      ****       uint8_t index;
  59:router.c      **** 
  60:router.c      ****       //allocated_addr.Val=0x0044;
  61:router.c      ****       //	  return allocated_addr;
  62:router.c      ****       index=Is_associated(ieee_addr);	  	  
  63:router.c      ****       if(index!=MAX_ASSOCIATE_TABLE_NUM)
  64:router.c      **** 	  	return associate_tab[index].allocated_addr;
  65:router.c      **** 
  66:router.c      ****       index=0;	  
  67:router.c      ****       while((associate_tab[index].is_valid)&&(index<MAX_ASSOCIATE_TABLE_NUM))
  68:router.c      **** 	  	index++;
  69:router.c      **** 	  
  70:router.c      ****       if(index==MAX_ASSOCIATE_TABLE_NUM)
  71:router.c      **** 	  	return default_short_addr;
  72:router.c      ****       associate_tab[index].ieee_addr=ieee_addr;
  73:router.c      ****       associate_tab[index].is_valid=TRUE;
  74:router.c      ****       associate_tab[index].allocated_addr=get_a_short_address();
  75:router.c      ****       return 	associate_tab[index].allocated_addr;  
  76:router.c      ****     
  77:router.c      **** }
  78:router.c      **** 
  79:router.c      **** 
  80:router.c      **** uint8_t Is_associated(LONG_ADDR long_address)
  81:router.c      **** {
 295               	.LM9:
 296               	/* prologue: frame size=8 */
 297 003c EF92      		push r14
 298 003e FF92      		push r15
 299 0040 0F93      		push r16
 300 0042 1F93      		push r17
 301 0044 CF93      		push r28
 302 0046 DF93      		push r29
 303 0048 CDB7      		in r28,__SP_L__
 304 004a DEB7      		in r29,__SP_H__
 305 004c 2897      		sbiw r28,8
 306 004e 0FB6      		in __tmp_reg__,__SREG__
 307 0050 F894      		cli
 308 0052 DEBF      		out __SP_H__,r29
 309 0054 0FBE      		out __SREG__,__tmp_reg__
 310 0056 CDBF      		out __SP_L__,r28
 311               	/* prologue end (size=14) */
 312 0058 2983      		std Y+1,r18
 313 005a 3A83      		std Y+2,r19
 314 005c 4B83      		std Y+3,r20
 315 005e 5C83      		std Y+4,r21
 316 0060 6D83      		std Y+5,r22
 317 0062 7E83      		std Y+6,r23
 318 0064 8F83      		std Y+7,r24
 319 0066 9887      		std Y+8,r25
  82:router.c      ****       uint8_t index;
  83:router.c      **** 	  index=0;
 321               	.LM10:
 322 0068 90E0      		ldi r25,lo8(0)
 323 006a 7BE0      		ldi r23,lo8(11)
 324 006c E72E      		mov r14,r23
 325 006e F12C      		mov r15,__zero_reg__
 326 0070 022F      		mov r16,r18
 327 0072 132F      		mov r17,r19
 328 0074 B42F      		mov r27,r20
 329 0076 A52F      		mov r26,r21
 330 0078 762F      		mov r23,r22
 331 007a 6E81      		ldd r22,Y+6
 332 007c 582F      		mov r21,r24
 333 007e 4885      		ldd r20,Y+8
  84:router.c      ****       while((!associate_tab[index].is_valid)||(associate_tab[index].ieee_addr.longaddr!=long_addres
 335               	.LM11:
 336 0080 06C0      		rjmp .L10
 337               	.L14:
  85:router.c      ****       {
  86:router.c      ****           index++;
 339               	.LM12:
 340 0082 9F5F      		subi r25,lo8(-(1))
  87:router.c      **** 	   if(index==MAX_ASSOCIATE_TABLE_NUM)
 342               	.LM13:
 343 0084 9A30      		cpi r25,lo8(10)
 344 0086 19F4      		brne .L10
  88:router.c      **** 	   	return MAX_ASSOCIATE_TABLE_NUM;
 346               	.LM14:
 347 0088 8AE0      		ldi r24,lo8(10)
 348 008a 90E0      		ldi r25,hi8(10)
 349 008c 27C0      		rjmp .L9
 350               	.L10:
 351 008e 292F      		mov r18,r25
 352 0090 3327      		clr r19
 353 0092 2E9D      		mul r18,r14
 354 0094 F001      		movw r30,r0
 355 0096 2F9D      		mul r18,r15
 356 0098 F00D      		add r31,r0
 357 009a 3E9D      		mul r19,r14
 358 009c F00D      		add r31,r0
 359 009e 1124      		clr r1
 360 00a0 E050      		subi r30,lo8(-(associate_tab))
 361 00a2 F040      		sbci r31,hi8(-(associate_tab))
 362 00a4 8285      		ldd r24,Z+10
 363 00a6 8823      		tst r24
 364 00a8 61F3      		breq .L14
 365 00aa 8081      		ld r24,Z
 366 00ac 8017      		cp r24,r16
 367 00ae 49F7      		brne .L14
 368 00b0 8181      		ldd r24,Z+1
 369 00b2 8117      		cp r24,r17
 370 00b4 31F7      		brne .L14
 371 00b6 8281      		ldd r24,Z+2
 372 00b8 8B17      		cp r24,r27
 373 00ba 19F7      		brne .L14
 374 00bc 8381      		ldd r24,Z+3
 375 00be 8A17      		cp r24,r26
 376 00c0 01F7      		brne .L14
 377 00c2 8481      		ldd r24,Z+4
 378 00c4 8717      		cp r24,r23
 379 00c6 E9F6      		brne .L14
 380 00c8 8581      		ldd r24,Z+5
 381 00ca 8617      		cp r24,r22
 382 00cc D1F6      		brne .L14
 383 00ce 8681      		ldd r24,Z+6
 384 00d0 8517      		cp r24,r21
 385 00d2 B9F6      		brne .L14
 386 00d4 8781      		ldd r24,Z+7
 387 00d6 8417      		cp r24,r20
 388 00d8 A1F6      		brne .L14
  89:router.c      ****       	}
  90:router.c      ****       return index;
 390               	.LM15:
 391 00da C901      		movw r24,r18
 392               	.L9:
 393               	/* epilogue: frame size=8 */
 394 00dc 2896      		adiw r28,8
 395 00de 0FB6      		in __tmp_reg__,__SREG__
 396 00e0 F894      		cli
 397 00e2 DEBF      		out __SP_H__,r29
 398 00e4 0FBE      		out __SREG__,__tmp_reg__
 399 00e6 CDBF      		out __SP_L__,r28
 400 00e8 DF91      		pop r29
 401 00ea CF91      		pop r28
 402 00ec 1F91      		pop r17
 403 00ee 0F91      		pop r16
 404 00f0 FF90      		pop r15
 405 00f2 EF90      		pop r14
 406 00f4 0895      		ret
 407               	/* epilogue end (size=13) */
 408               	/* function Is_associated size 93 (66) */
 412               	.global	get_a_short_address
 414               	get_a_short_address:
  91:router.c      **** }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -