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

📄 main.lst

📁 无线传感器星型网络的节点的基站程序,采用802.15.4协议
💻 LST
📖 第 1 页 / 共 3 页
字号:
   1               		.file	"main.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:
 221               	.global	hardwareInit
 223               	hardwareInit:
   1:main.c        **** //----------------------------------------------------//
   2:main.c        **** //-------Institute Of  Computing Technology-----------//
   3:main.c        **** //------------Chinese Academic  Science---------------//
   4:main.c        **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
   5:main.c        **** //----------------------------------------------------//
   6:main.c        **** 
   7:main.c        **** // **************************************************
   8:main.c        **** // * @copyright:nbicc_lpp
   9:main.c        **** // * @this is main 
  10:main.c        **** // * @author zhouqiang  (zhouhongren@163.com)
  11:main.c        **** // *              liulingyi      (lingyiliu@ict.ac.cn)
  12:main.c        **** // * @data:2005.11.29
  13:main.c        **** // * @version:0.0.1
  14:main.c        **** // * @updata:$
  15:main.c        **** // **************************************************
  16:main.c        **** 
  17:main.c        **** #include "top.h"
  18:main.c        **** 
  19:main.c        **** //--------------------------------------------------------
  20:main.c        **** 
  21:main.c        **** demo_beaconpacket * demopacket;
  22:main.c        **** //--------------------------------------------------------
  23:main.c        **** 
  24:main.c        **** 
  25:main.c        **** //---------------------------------------------------------------
  26:main.c        **** inline uint8_t hardwareInit(void)
  27:main.c        **** 
  28:main.c        **** {
 225               	.LM1:
 226               	/* prologue: frame size=0 */
 227               	/* prologue end (size=0) */
  29:main.c        **** OS_SET_PIN_DIRECTIONS();
 229               	.LM2:
 230 0000 0E94 0000 		call OS_SET_PIN_DIRECTIONS
  30:main.c        ****   return SUCCESS;
  31:main.c        **** }
 232               	.LM3:
 233 0004 80E0      		ldi r24,lo8(0)
 234 0006 90E0      		ldi r25,hi8(0)
 235               	/* epilogue: frame size=0 */
 236 0008 0895      		ret
 237               	/* epilogue end (size=1) */
 238               	/* function hardwareInit size 5 (4) */
 241               	.global	memory_init
 243               	memory_init:
  32:main.c        **** 
  33:main.c        **** 
  34:main.c        **** 
  35:main.c        **** uint8_t demo_ieee_address[8];
  36:main.c        **** uint16_t shortaddress;
  37:main.c        **** bool       DATA_READY;
  38:main.c        **** 
  39:main.c        **** 
  40:main.c        **** //bool  IS_FIRST_TIME_SYN_REQ;
  41:main.c        **** //---------------------------------------------------------
  42:main.c        **** extern  MLME_SCAN_CONFIRM  scan_result_info;
  43:main.c        **** extern  MAC_PIB  mac_pib_data;
  44:main.c        **** extern  MAC_STATE_TYPE mac_current_state;
  45:main.c        **** extern  bool IS_NETWORK_FORMED;
  46:main.c        **** extern  RX_BUFFER  * head_of_rx_buffer;
  47:main.c        **** extern  TX_BUFFER  * head_of_tx_buffer;
  48:main.c        **** extern  Timer_Queue_pointer  head_of_timer_queue;
  49:main.c        **** extern  INDIRECT_TX_PENDING_QUEUE * head_of_indirect_pending_buffer;
  50:main.c        **** extern  LONG_ADDR  default_long_addr;
  51:main.c        **** //extern  void read_data_task(void);
  52:main.c        **** //extern  uint8_t  adc_init(void);
  53:main.c        **** //extern  uint8_t sensor_init(void);
  54:main.c        **** void memory_init(void)
  55:main.c        **** {
 245               	.LM4:
 246               	/* prologue: frame size=0 */
 247               	/* prologue end (size=0) */
  56:main.c        ****      uint16_t  index;
  57:main.c        ****      BYTE      *p;
  58:main.c        **** 	 p=NULL;
 249               	.LM5:
 250 000a E0E0      		ldi r30,lo8(0)
 251 000c F0E0      		ldi r31,hi8(0)
 252               	.L6:
  59:main.c        ****      for(index=0;index<4096;index++)
  60:main.c        **** 	 	*(p+index)=0x00;
 254               	.LM6:
 255 000e 1192      		st Z+,__zero_reg__
 257               	.LM7:
 258 0010 80E1      		ldi r24,hi8(4096)
 259 0012 E030      		cpi r30,lo8(4096)
 260 0014 F807      		cpc r31,r24
 261 0016 D8F3      		brlo .L6
 262               	/* epilogue: frame size=0 */
 263 0018 0895      		ret
 264               	/* epilogue end (size=1) */
 265               	/* function memory_init size 8 (7) */
 269               	.global	GET_ADC_value
 271               	GET_ADC_value:
  61:main.c        **** }
  62:main.c        **** 
  63:main.c        **** void GET_ADC_value(void)
  64:main.c        **** {
 273               	.LM8:
 274               	/* prologue: frame size=0 */
 275               	/* prologue end (size=0) */
  65:main.c        ****   //printf("\n--timer0 interrupt----\n");
  66:main.c        ****     read_data_task();
 277               	.LM9:
 278 001a 0E94 0000 		call read_data_task
  67:main.c        ****     DATA_READY=TRUE; 	
 280               	.LM10:
 281 001e 81E0      		ldi r24,lo8(1)
 282 0020 8093 0000 		sts DATA_READY,r24
  68:main.c        ****     mlmeSyncRequest(ppib.phyCurrentChanel,TRUE);
 284               	.LM11:
 285 0024 682F      		mov r22,r24
 286 0026 8091 0000 		lds r24,ppib
 287 002a 0E94 0000 		call mlmeSyncRequest
 288               	/* epilogue: frame size=0 */
 289 002e 0895      		ret
 290               	/* epilogue end (size=1) */
 291               	/* function GET_ADC_value size 11 (10) */
 293               		.data
 294               	.LC0:
 295 0000 7374 6172 		.string	"start timer is %08lx,head of systime queue is %04x\n"
 295      7420 7469 
 295      6D65 7220 
 295      6973 2025 
 295      3038 6C78 
 296               	.LC1:
 297 0034 0A2D 2D2D 		.string	"\n----START TO FORM NETWORK----"
 297      2D53 5441 
 297      5254 2054 
 297      4F20 464F 
 297      524D 204E 
 298               	.LC2:
 299 0053 2538 640A 		.string	"%8d\n"
 299      00
 300               	.LC3:
 301 0058 6F6B 00   		.string	"ok"
 302               	.LC4:
 303 005b 6F6B 3100 		.string	"ok1"
 304               	.LC5:
 305 005f 6F6B 3200 		.string	"ok2"
 306               	.LC6:
 307 0063 6F6B 3300 		.string	"ok3"
 308               	.LC7:
 309 0067 6F6B 3400 		.string	"ok4"
 310               	.LC8:
 311 006b 0A2D 2D2D 		.string	"\n----SYSTEM SLEEPING----"
 311      2D53 5953 
 311      5445 4D20 
 311      534C 4545 
 311      5049 4E47 
 312               		.text
 314               	.global	main
 316               	main:
  69:main.c        **** 
  70:main.c        **** }	
  71:main.c        **** 
  72:main.c        **** 
  73:main.c        **** int   main(void)
  74:main.c        **** {
 318               	.LM12:
 319               	/* prologue: frame size=34 */
 320 0030 C0E0      		ldi r28,lo8(__stack - 34)
 321 0032 D0E0      		ldi r29,hi8(__stack - 34)
 322 0034 DEBF      		out __SP_H__,r29
 323 0036 CDBF      		out __SP_L__,r28
 324               	/* prologue end (size=4) */
 325               	.LBB2:
 326               	.LBB3:
 328               	.LM13:
 329 0038 0E94 0000 		call OS_SET_PIN_DIRECTIONS
 330               	.LBE3:
 331               	.LBE2:
  75:main.c        **** 
  76:main.c        ****   uint8_t return_state;
  77:main.c        ****   uint8_t  index;
  78:main.c        ****   Node_Capability  temp_node;
  79:main.c        ****   ADDRESS  temp_addr;
  80:main.c        ****   
  81:main.c        ****   //memory_init();
  82:main.c        ****   hardwareInit();
  83:main.c        ****   Leds_greenOn();
 333               	.LM14:
 334 003c 0E94 0000 		call Leds_greenOn
  84:main.c        ****   Leds_redOn();
 336               	.LM15:
 337 0040 0E94 0000 		call Leds_redOn
  85:main.c        ****   Leds_yellowOn();
 339               	.LM16:
 340 0044 0E94 0000 		call Leds_yellowOn
  86:main.c        ****   IoInit();
 342               	.LM17:
 343 0048 0E94 0000 		call IoInit
  87:main.c        ****  
  88:main.c        ****   OS_sched_init();
 345               	.LM18:
 346 004c 0E94 0000 		call OS_sched_init
  89:main.c        **** 
  90:main.c        ****   phy_init();
 348               	.LM19:
 349 0050 0E94 0000 		call phy_init
  91:main.c        ****   //--------------------------------
  92:main.c        ****   //MAC_init();
  93:main.c        ****   os_atomic_enable_interrupt();
 351               	.LM20:
 352 0054 0E94 0000 		call os_atomic_enable_interrupt
  94:main.c        **** 
  95:main.c        ****   DATA_READY=FALSE;
 354               	.LM21:
 355 0058 1092 0000 		sts DATA_READY,__zero_reg__
  96:main.c        ****   if(IS_RFD)
  97:main.c        ****   	{
  98:main.c        ****           kertimer_init();
  99:main.c        ****           adc_init();
 100:main.c        ****           sensor_init();
 101:main.c        **** 		  
 102:main.c        ****   	}	  
 103:main.c        ****  // kertimer_start(2, KERTIMER_REPEAT, 0x27f, &Leds_yellowToggle);
 104:main.c        ****   //kertimer_start(1, KERTIMER_REPEAT, 0x07f, &Leds_greenToggle);
 105:main.c        ****   //kertimer_start(0, KERTIMER_REPEAT, 0x04f, &Leds_redToggle);
 106:main.c        ****   
 107:main.c        ****  // backoff_timer_setOneShot(0x20,&Leds_greenOn);
 108:main.c        ****  cc2420_enableAddrDecode();
 357               	.LM22:
 358 005c 0E94 0000 		call cc2420_enableAddrDecode
 109:main.c        ****  MAC_init();
 360               	.LM23:
 361 0060 0E94 0000 		call MAC_init
 110:main.c        ****  router_init();
 363               	.LM24:
 364 0064 0E94 0000 		call router_init
 111:main.c        ****  wdt_disable();
 366               	.LM25:
 367 0068 88E1      		ldi r24,lo8(24)
 368 006a 90E0      		ldi r25,hi8(24)
 369 006c 20E0      		ldi r18,lo8(0)
 370               	/* #APP */
 371 006e 0FB6      		in __tmp_reg__,__SREG__
 372 0070 F894      		cli
 373 0072 A895      		wdr
 374 0074 81BD      		out 33,r24
 375 0076 0FBE      		out __SREG__,__tmp_reg__
 376 0078 21BD      		out 33,r18
 112:main.c        ****  printf("start timer is %08lx,head of systime queue is %04x\n",systime32(),head_of_systimer_queue);
 378               	.LM26:
 379               	/* #NOAPP */
 380 007a 8091 0000 		lds r24,head_of_systimer_queue
 381 007e 9091 0000 		lds r25,(head_of_systimer_queue)+1
 382 0082 9F93      		push r25
 383 0084 8F93      		push r24
 384 0086 0E94 0000 		call systime32
 385 008a DC01      		movw r26,r24
 386 008c CB01      		movw r24,r22
 387 008e BF93      		push r27
 388 0090 AF93      		push r26
 389 0092 9F93      		push r25
 390 0094 8F93      		push r24
 391 0096 80E0      		ldi r24,lo8(.LC0)
 392 0098 90E0      		ldi r25,hi8(.LC0)
 393 009a 9F93      		push r25
 394 009c 8F93      		push r24
 395 009e 0E94 0000 		call printf
 113:main.c        **** 
 114:main.c        ****  //mlmeResetRequest(TRUE);
 115:main.c        ****  /*   
 116:main.c        ****  //用于测试ED SCAN的代码
 117:main.c        ****  return_state=PLME_SET_TRX_STATE_request(RX_ON);
 118:main.c        ****   phy_channel_state=INACTIVE_PERIOD;
 119:main.c        ****  if(return_state==PHY_SUCCESS)
 120:main.c        ****  	{
 121:main.c        ****  	       //scan_result_info.resultListSize=16;
 122:main.c        ****  	     //printf("\nstart to do ED SCAN\n");  
 123:main.c        ****               mlmeScanRequest(ED_SCAN, 0x0000ffff, 6);
 124:main.c        **** 		PLME_SET_TRX_STATE_request(TRX_OFF);	  
 125:main.c        **** 	       for(index=0;index<scan_result_info.resultListSize;index++)		  
 126:main.c        ****             //printf("%8d\n",scan_result_info.pEnergyDetectList[index]);
 127:main.c        ****  	}
 128:main.c        ****   //*/
 129:main.c        ****  //选中一批合适的信道并进行设置,然后进行active_passive_scan
 130:main.c        **** //PLME_SET_request(phyCurrentChanel_id, 3);
 131:main.c        **** 
 132:main.c        **** //用于测试ACTIVE_PASSIVE_SCAN的代码
 133:main.c        **** //----------------------------------
 134:main.c        **** 	//wdt_enable(WDTO_2S);
 135:main.c        ****        
 136:main.c        **** //----------------------------------
 137:main.c        **** //mlmeScanRequest(ACTIVE_PASSIVE_SCAN, 0x00000008, 6);
 138:main.c        **** 
 139:main.c        **** 
 140:main.c        ****   //while(mac_current_state!=MAC_STATE_ACTIVE_PASSIVE_SCAN_FINISHED);
 141:main.c        ****  /*
 142:main.c        ****   //选中新的网络地址
 143:main.c        ****   cc2420_bcn_accept();
 144:main.c        ****   cc2420_setshortaddress((uint16_t)mac_pib_data.macShortAddress.Val);
 145:main.c        ****   cc2420_setpanid((uint16_t)mac_pib_data.macPANId.Val);
 146:main.c        ****   phy_channel_state=WAITING_FOR_BEACON;
 147:main.c        ****   PLME_SET_request(phyCurrentChanel_id, 11);
 148:main.c        ****   //-------------------------
 149:main.c        ****   //uint16_t tempprint;
 150:main.c        ****   //tempprint=cc2420_readreg(cc2420_FSCTRL);
 151:main.c        ****   //printf("tempprintf is %04x",tempprint);
 152:main.c        ****   //-------------------------
 153:main.c        ****    return_state=PLME_SET_TRX_STATE_request(RX_ON);
 154:main.c        ****    if(return_state!=PHY_SUCCESS)  
 155:main.c        ****    	{
 156:main.c        ****    	   error("\nopen the RF failure\n");
 157:main.c        **** 	   return;
 158:main.c        ****    	}
 159:main.c        **** */
 160:main.c        ****   //测试信标帧的发送
 161:main.c        ****   //mlmeStartRequest(mac_pib_data.macPANId, ppib.phyCurrentChanel, mac_pib_data.macBeaconOrder, mac
 162:main.c        ****   
 163:main.c        ****   //head_of_systimer_queue=systimer_start_task(head_of_systimer_queue,RECEIVE_BEACON, 1000) ;
 164:main.c        ****   //head_of_systimer_queue=systimer_start_task(head_of_systimer_queue,CAP_OVER, 5000) ;
 165:main.c        **** 
 166:main.c        **** 
 167:main.c        **** 
 168:main.c        **** 
 169:main.c        ****   //cc2420_setrxmode();
 170:main.c        ****   
 171:main.c        ****   //cc2420_setpanid(0x0001);
 172:main.c        ****   //cc2420_setshortaddress(0x0001);
 173:main.c        ****   cc2420_enablefifop();
 397               	.LM27:
 398 00a2 0E94 0000 		call cc2420_enablefifop
 174:main.c        ****   while(1) {
 400               	.LM28:
 401 00a6 8DB7      		in r24,__SP_L__
 402 00a8 9EB7      		in r25,__SP_H__
 403 00aa 0896      		adiw r24,8
 404 00ac 0FB6      		in __tmp_reg__,__SREG__

⌨️ 快捷键说明

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