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

📄 main.lss

📁 无线传感器星型网络的节点的基站程序,采用802.15.4协议
💻 LSS
📖 第 1 页 / 共 2 页
字号:
     1ea:	87 81       	ldd	r24, Z+7	; 0x07
     1ec:	99 27       	eor	r25, r25
     1ee:	87 fd       	sbrc	r24, 7
     1f0:	90 95       	com	r25
     1f2:	9f 93       	push	r25
     1f4:	8f 93       	push	r24
     1f6:	83 e5       	ldi	r24, 0x53	; 83
     1f8:	91 e0       	ldi	r25, 0x01	; 1
     1fa:	9f 93       	push	r25
     1fc:	8f 93       	push	r24
     1fe:	0e 94 15 3b 	call	0x762a
			      break;
     202:	0f 90       	pop	r0
     204:	0f 90       	pop	r0
     206:	0f 90       	pop	r0
     208:	0f 90       	pop	r0
     20a:	44 c1       	rjmp	.+648    	; 0x494
            case MAC_STATE_ENERGY_SCAN_FINISHED:
			      mlmeScanRequest(ACTIVE_PASSIVE_SCAN, 0x00000008, 6); 
     20c:	26 e0       	ldi	r18, 0x06	; 6
     20e:	48 e0       	ldi	r20, 0x08	; 8
     210:	50 e0       	ldi	r21, 0x00	; 0
     212:	60 e0       	ldi	r22, 0x00	; 0
     214:	70 e0       	ldi	r23, 0x00	; 0
     216:	81 e0       	ldi	r24, 0x01	; 1
     218:	0e 94 23 2d 	call	0x5a46
				
			      break; 	  
     21c:	3b c1       	rjmp	.+630    	; 0x494
		    case MAC_STATE_ACTIVE_PASSIVE_SCAN_FINISHED:
			     printf("ok\n");
     21e:	88 e5       	ldi	r24, 0x58	; 88
     220:	91 e0       	ldi	r25, 0x01	; 1
     222:	0e 94 2a 3b 	call	0x7654
				if(!IS_COORDINATOR)
				mlmeSyncRequest(ppib.phyCurrentChanel,TRUE);
				//mac_current_state=MAC_STATE_SYNING;
				else
				{
					printf("ok1\n");
     226:	8b e5       	ldi	r24, 0x5B	; 91
     228:	91 e0       	ldi	r25, 0x01	; 1
     22a:	0e 94 2a 3b 	call	0x7654
				  cc2420_setshortaddress((uint16_t)mac_pib_data.macShortAddress.Val);
     22e:	80 91 ae 08 	lds	r24, 0x08AE
     232:	90 91 af 08 	lds	r25, 0x08AF
     236:	0e 94 bb 1b 	call	0x3776
                              cc2420_setpanid((uint16_t)mac_pib_data.macPANId.Val);	  
     23a:	80 91 aa 08 	lds	r24, 0x08AA
     23e:	90 91 ab 08 	lds	r25, 0x08AB
     242:	0e 94 e7 1b 	call	0x37ce
				  mlmeStartRequest(mac_pib_data.macPANId,3, mac_pib_data.macBeaconOrder, mac_pib_data.macSuperframeOrder, TRUE, mac_pib_data.macBattLifeExt, FALSE, FALSE, 0);	
     246:	88 24       	eor	r8, r8
     248:	99 24       	eor	r9, r9
     24a:	aa 24       	eor	r10, r10
     24c:	ca 2c       	mov	r12, r10
     24e:	e0 90 91 08 	lds	r14, 0x0891
     252:	01 e0       	ldi	r16, 0x01	; 1
     254:	20 91 b8 08 	lds	r18, 0x08B8
     258:	40 91 96 08 	lds	r20, 0x0896
     25c:	63 e0       	ldi	r22, 0x03	; 3
     25e:	80 91 aa 08 	lds	r24, 0x08AA
     262:	90 91 ab 08 	lds	r25, 0x08AB
     266:	0e 94 06 2b 	call	0x560c
				}
			       break;	
     26a:	14 c1       	rjmp	.+552    	; 0x494
            case MAC_STATE_SYNING_END:
				  printf("ok2\n");
     26c:	8f e5       	ldi	r24, 0x5F	; 95
     26e:	91 e0       	ldi	r25, 0x01	; 1
     270:	0e 94 2a 3b 	call	0x7654
			       if(!IS_NETWORK_FORMED)
     274:	80 90 c9 07 	lds	r8, 0x07C9
     278:	88 20       	and	r8, r8
     27a:	d1 f4       	brne	.+52     	; 0x2b0
			       {
			           //if(phy_channel_state==PHY_IDLE)	  	
			         //printf("\nstart to do the associate\n");
				    //mac_current_state=MAC_STATE_IDLE;
				    temp_node.bytes=0x88;
				    temp_addr.Short=mac_pib_data.macCoordShortAddress;
     27c:	80 91 a4 08 	lds	r24, 0x08A4
     280:	90 91 a5 08 	lds	r25, 0x08A5
     284:	89 83       	std	Y+1, r24	; 0x01
     286:	9a 83       	std	Y+2, r25	; 0x02
				    mlmeAssociateRequest(ppib.phyCurrentChanel, 0x02, mac_pib_data.macPANId,temp_addr , temp_node, FALSE);
     288:	88 e8       	ldi	r24, 0x88	; 136
     28a:	a8 2e       	mov	r10, r24
     28c:	c9 80       	ldd	r12, Y+1	; 0x01
     28e:	da 80       	ldd	r13, Y+2	; 0x02
     290:	eb 80       	ldd	r14, Y+3	; 0x03
     292:	fc 80       	ldd	r15, Y+4	; 0x04
     294:	0d 81       	ldd	r16, Y+5	; 0x05
     296:	1e 81       	ldd	r17, Y+6	; 0x06
     298:	2f 81       	ldd	r18, Y+7	; 0x07
     29a:	38 85       	ldd	r19, Y+8	; 0x08
     29c:	40 91 aa 08 	lds	r20, 0x08AA
     2a0:	50 91 ab 08 	lds	r21, 0x08AB
     2a4:	62 e0       	ldi	r22, 0x02	; 2
     2a6:	80 91 db 06 	lds	r24, 0x06DB
     2aa:	0e 94 07 30 	call	0x600e
     2ae:	f2 c0       	rjmp	.+484    	; 0x494
				    //IS_FIRST	
			       }
				else
				{
				    if(DATA_READY)
     2b0:	80 91 34 06 	lds	r24, 0x0634
     2b4:	88 23       	and	r24, r24
     2b6:	09 f4       	brne	.+2      	; 0x2ba
     2b8:	ed c0       	rjmp	.+474    	; 0x494
				    	{
					 //printf("\n---sensor data sent--\n");	
					   //---------------------------------------
					   //---------------------------------------
					   NODE_INFO dst;
					   NODE_INFO src;
					   uint8_t        msdulength;
					   BYTE  *       pMsdu;
					   BYTE           msduhandle;
					   BYTE           txOptions;
					   dst.addrMode=0x02;
     2ba:	82 e0       	ldi	r24, 0x02	; 2
     2bc:	89 87       	std	Y+9, r24	; 0x09
					   dst.shortAddr=mac_pib_data.macCoordShortAddress;
     2be:	80 91 a4 08 	lds	r24, 0x08A4
     2c2:	90 91 a5 08 	lds	r25, 0x08A5
     2c6:	8a 8b       	std	Y+18, r24	; 0x12
     2c8:	9b 8b       	std	Y+19, r25	; 0x13
					   dst.panID=mac_pib_data.macPANId;
     2ca:	80 91 aa 08 	lds	r24, 0x08AA
     2ce:	90 91 ab 08 	lds	r25, 0x08AB
     2d2:	8c 8b       	std	Y+20, r24	; 0x14
     2d4:	9d 8b       	std	Y+21, r25	; 0x15
					   src.addrMode=0x03;
     2d6:	83 e0       	ldi	r24, 0x03	; 3
     2d8:	8e 8b       	std	Y+22, r24	; 0x16
					   src.longAddr=mac_pib_data.macExtAddress;
     2da:	88 e0       	ldi	r24, 0x08	; 8
     2dc:	de 01       	movw	r26, r28
     2de:	57 96       	adiw	r26, 0x17	; 23
     2e0:	e0 eb       	ldi	r30, 0xB0	; 176
     2e2:	f8 e0       	ldi	r31, 0x08	; 8
     2e4:	01 90       	ld	r0, Z+
     2e6:	0d 92       	st	X+, r0
     2e8:	8a 95       	dec	r24
     2ea:	e1 f7       	brne	.-8      	; 0x2e4
					   src.panID=mac_pib_data.macPANId;
     2ec:	80 91 aa 08 	lds	r24, 0x08AA
     2f0:	90 91 ab 08 	lds	r25, 0x08AB
     2f4:	89 a3       	std	Y+33, r24	; 0x21
     2f6:	9a a3       	std	Y+34, r25	; 0x22
					   msdulength=20;
					   pMsdu=(BYTE *)SENSOR_DATA_VALUE;
					   msduhandle=0;
					   txOptions=0x01;
					   mcpsDataRequest(dst, src, msdulength, pMsdu, msduhandle, txOptions);
     2f8:	81 e0       	ldi	r24, 0x01	; 1
     2fa:	8f 93       	push	r24
     2fc:	1f 92       	push	r1
     2fe:	86 e9       	ldi	r24, 0x96	; 150
     300:	96 e0       	ldi	r25, 0x06	; 6
     302:	9f 93       	push	r25
     304:	8f 93       	push	r24
     306:	84 e1       	ldi	r24, 0x14	; 20
     308:	8f 93       	push	r24
     30a:	8d b7       	in	r24, 0x3d	; 61
     30c:	9e b7       	in	r25, 0x3e	; 62
     30e:	0d 97       	sbiw	r24, 0x0d	; 13
     310:	0f b6       	in	r0, 0x3f	; 63
     312:	f8 94       	cli
     314:	9e bf       	out	0x3e, r25	; 62
     316:	0f be       	out	0x3f, r0	; 63
     318:	8d bf       	out	0x3d, r24	; 61
     31a:	01 96       	adiw	r24, 0x01	; 1
     31c:	2d e0       	ldi	r18, 0x0D	; 13
     31e:	fc 01       	movw	r30, r24
     320:	de 01       	movw	r26, r28
     322:	56 96       	adiw	r26, 0x16	; 22
     324:	0d 90       	ld	r0, X+
     326:	01 92       	st	Z+, r0
     328:	2a 95       	dec	r18
     32a:	e1 f7       	brne	.-8      	; 0x324
     32c:	c9 84       	ldd	r12, Y+9	; 0x09
     32e:	da 84       	ldd	r13, Y+10	; 0x0a
     330:	eb 84       	ldd	r14, Y+11	; 0x0b
     332:	fc 84       	ldd	r15, Y+12	; 0x0c
     334:	0d 85       	ldd	r16, Y+13	; 0x0d
     336:	1e 85       	ldd	r17, Y+14	; 0x0e
     338:	2f 85       	ldd	r18, Y+15	; 0x0f
     33a:	38 89       	ldd	r19, Y+16	; 0x10
     33c:	49 89       	ldd	r20, Y+17	; 0x11
     33e:	5a 89       	ldd	r21, Y+18	; 0x12
     340:	6b 89       	ldd	r22, Y+19	; 0x13
     342:	7c 89       	ldd	r23, Y+20	; 0x14
     344:	8d 89       	ldd	r24, Y+21	; 0x15
     346:	0e 94 c6 31 	call	0x638c
     34a:	8d b7       	in	r24, 0x3d	; 61
     34c:	9e b7       	in	r25, 0x3e	; 62
     34e:	42 96       	adiw	r24, 0x12	; 18
     350:	0f b6       	in	r0, 0x3f	; 63
     352:	f8 94       	cli
     354:	9e bf       	out	0x3e, r25	; 62
     356:	0f be       	out	0x3f, r0	; 63
     358:	8d bf       	out	0x3d, r24	; 61
					   //mac_current_state=MAC_STATE_START_TO_SLEEP;
				    	}	
				}
				break;
     35a:	9c c0       	rjmp	.+312    	; 0x494
             case MAC_STATE_ASSOC_FINISHED:
				printf("ok3\n");
     35c:	83 e6       	ldi	r24, 0x63	; 99
     35e:	91 e0       	ldi	r25, 0x01	; 1
     360:	0e 94 2a 3b 	call	0x7654
				//网络已经建立完成,可以启动ADC传感器采样  
				if((!head_of_rx_buffer)&&(!head_of_tx_buffer)&&(!head_of_timer_queue))
     364:	80 91 fb 07 	lds	r24, 0x07FB
     368:	90 91 fc 07 	lds	r25, 0x07FC
     36c:	89 2b       	or	r24, r25
     36e:	79 f4       	brne	.+30     	; 0x38e
     370:	80 91 d0 07 	lds	r24, 0x07D0
     374:	90 91 d1 07 	lds	r25, 0x07D1
     378:	89 2b       	or	r24, r25
     37a:	49 f4       	brne	.+18     	; 0x38e
     37c:	80 91 91 09 	lds	r24, 0x0991
     380:	90 91 92 09 	lds	r25, 0x0992
     384:	89 2b       	or	r24, r25
     386:	19 f4       	brne	.+6      	; 0x38e
				 //printf("\nnetwork successful formed\n");	
				IS_NETWORK_FORMED=TRUE;
     388:	81 e0       	ldi	r24, 0x01	; 1
     38a:	80 93 c9 07 	sts	0x07C9, r24
				mac_current_state=MAC_STATE_IDLE;
				//break;
				//test orphan scan & unicast coordinator realignment frame
	                     //mlmeScanRequest(ORPHAN_SCAN, 0x00000008, 0);
	                     
	                     //test PANID conflict & broadcast coordinator realignment frame
	                     //panid_confilct_frame_send();

				//test Disassociation from the RFD
				//mlmeDisassociateRequest(default_long_addr, 0x02, FALSE);
				mac_current_state=MAC_STATE_START_TO_SLEEP;
     38e:	82 e1       	ldi	r24, 0x12	; 18
     390:	80 93 f9 07 	sts	0x07F9, r24
				break;
     394:	7f c0       	rjmp	.+254    	; 0x494
             case  MAC_STATE_START_TO_SLEEP:
			    printf("ok4\n");
     396:	87 e6       	ldi	r24, 0x67	; 103
     398:	91 e0       	ldi	r25, 0x01	; 1
     39a:	0e 94 2a 3b 	call	0x7654
				//ADC 任务启动
				PLME_SET_TRX_STATE_request(FORCE_TRX_OFF);
     39e:	83 e0       	ldi	r24, 0x03	; 3
     3a0:	0e 94 90 1d 	call	0x3b20
				 DATA_READY=FALSE;
     3a4:	10 92 34 06 	sts	0x0634, r1
                                kertimer_start(0, KERTIMER_ONE_SHOT, 1024, GET_ADC_value);
     3a8:	02 e7       	ldi	r16, 0x72	; 114
     3aa:	10 e0       	ldi	r17, 0x00	; 0
     3ac:	20 e0       	ldi	r18, 0x00	; 0
     3ae:	34 e0       	ldi	r19, 0x04	; 4
     3b0:	40 e0       	ldi	r20, 0x00	; 0
     3b2:	50 e0       	ldi	r21, 0x00	; 0
     3b4:	61 e0       	ldi	r22, 0x01	; 1
     3b6:	80 e0       	ldi	r24, 0x00	; 0
     3b8:	0e 94 3a 05 	call	0xa74
				//printf("\n----the current state is MAC_STATE_START_TO_SLEEP---\n");
				Leds_greenOff();
     3bc:	0e 94 b3 02 	call	0x566
				Leds_yellowOff();
     3c0:	0e 94 78 02 	call	0x4f0
				Leds_redOff();
     3c4:	0e 94 ee 02 	call	0x5dc
				cc2420_sendcmd(cc2420_SFLUSHRX);
     3c8:	88 e0       	ldi	r24, 0x08	; 8
     3ca:	0e 94 35 19 	call	0x326a
				cc2420_sendcmd(cc2420_SFLUSHRX);
     3ce:	88 e0       	ldi	r24, 0x08	; 8
     3d0:	0e 94 35 19 	call	0x326a
				head_of_systimer_queue=systimer_stop_task(head_of_systimer_queue, CAP_OVER);
     3d4:	62 e0       	ldi	r22, 0x02	; 2
     3d6:	80 91 bb 06 	lds	r24, 0x06BB
     3da:	90 91 bc 06 	lds	r25, 0x06BC
     3de:	0e 94 21 0c 	call	0x1842
     3e2:	90 93 bc 06 	sts	0x06BC, r25
     3e6:	80 93 bb 06 	sts	0x06BB, r24
				head_of_systimer_queue=systimer_stop_task(head_of_systimer_queue, RECEIVE_BEACON);
     3ea:	61 e0       	ldi	r22, 0x01	; 1
     3ec:	0e 94 21 0c 	call	0x1842
     3f0:	90 93 bc 06 	sts	0x06BC, r25
     3f4:	80 93 bb 06 	sts	0x06BB, r24
				while(head_of_systimer_queue!=NULL)
					{
					    head_of_systimer_queue=systimer_stop_task(head_of_systimer_queue, head_of_systimer_queue->timer_reason);
     3f8:	89 2b       	or	r24, r25
     3fa:	39 f0       	breq	.+14     	; 0x40a
     3fc:	e0 91 bb 06 	lds	r30, 0x06BB
     400:	f0 91 bc 06 	lds	r31, 0x06BC
     404:	60 81       	ld	r22, Z
     406:	cf 01       	movw	r24, r30
     408:	f1 cf       	rjmp	.-30     	; 0x3ec
					  //printf("\n---error1--\n");
					}	
				while(head_of_timer_queue!=NULL)
					{
					    head_of_timer_queue=timer3quere_cancel(head_of_timer_queue, head_of_timer_queue->framedsn, head_of_timer_queue->timer_reason);
     40a:	80 91 91 09 	lds	r24, 0x0991
     40e:	90 91 92 09 	lds	r25, 0x0992
     412:	89 2b       	or	r24, r25
     414:	71 f0       	breq	.+28     	; 0x432
     416:	e0 91 91 09 	lds	r30, 0x0991
     41a:	f0 91 92 09 	lds	r31, 0x0992
     41e:	42 81       	ldd	r20, Z+2	; 0x02
     420:	61 81       	ldd	r22, Z+1	; 0x01
     422:	cf 01       	movw	r24, r30
     424:	0e 94 d8 0d 	call	0x1bb0
     428:	90 93 92 09 	sts	0x0992, r25
     42c:	80 93 91 09 	sts	0x0991, r24
     430:	f0 cf       	rjmp	.-32     	; 0x412
					  //printf("\n---error2--\n");	
					}
				while(head_of_rx_buffer!=NULL)
					{
					    remove_from_rx_buffer(head_of_rx_buffer);
     432:	80 91 fb 07 	lds	r24, 0x07FB
     436:	90 91 fc 07 	lds	r25, 0x07FC
     43a:	89 2b       	or	r24, r25
     43c:	39 f0       	breq	.+14     	; 0x44c
     43e:	80 91 fb 07 	lds	r24, 0x07FB
     442:	90 91 fc 07 	lds	r25, 0x07FC
     446:	0e 94 fb 24 	call	0x49f6
     44a:	f3 cf       	rjmp	.-26     	; 0x432
					  //printf("\n---error3--\n");		
					}
				while(head_of_tx_buffer!=NULL)
					{
					    remove_tx_queue(head_of_tx_buffer->FrameSeq);
     44c:	80 91 d0 07 	lds	r24, 0x07D0
     450:	90 91 d1 07 	lds	r25, 0x07D1
     454:	89 2b       	or	r24, r25
     456:	41 f0       	breq	.+16     	; 0x468
     458:	e0 91 d0 07 	lds	r30, 0x07D0
     45c:	f0 91 d1 07 	lds	r31, 0x07D1
     460:	83 81       	ldd	r24, Z+3	; 0x03
     462:	0e 94 09 25 	call	0x4a12
     466:	f2 cf       	rjmp	.-28     	; 0x44c
				         //printf("\n---error4--\n");				
					}
				while(head_of_indirect_pending_buffer!=NULL)
					{
					    remove_pending_queue(head_of_indirect_pending_buffer);
     468:	80 91 83 08 	lds	r24, 0x0883
     46c:	90 91 84 08 	lds	r25, 0x0884
     470:	89 2b       	or	r24, r25
     472:	39 f0       	breq	.+14     	; 0x482
     474:	80 91 83 08 	lds	r24, 0x0883
     478:	90 91 84 08 	lds	r25, 0x0884
     47c:	0e 94 a5 23 	call	0x474a
     480:	f3 cf       	rjmp	.-26     	; 0x468
					  //printf("\n---error5--\n");			
					}
				printf("\n----SYSTEM SLEEPING----\n");
     482:	8b e6       	ldi	r24, 0x6B	; 107
     484:	91 e0       	ldi	r25, 0x01	; 1
     486:	0e 94 2a 3b 	call	0x7654
				mac_current_state=MAC_STATE_INACTIVE;
     48a:	81 e1       	ldi	r24, 0x11	; 17
     48c:	80 93 f9 07 	sts	0x07F9, r24
				OS_sleep();
     490:	0e 94 79 04 	call	0x8f2
				break;
       	     default: break;
       	    	//开始作associate
       	    	
       	
		}
	       //printf("\nthe current state is %d---\n",mac_current_state);
	      // wdt_reset();
	OS_run_task();
     494:	0e 94 d1 04 	call	0x9a2
     498:	73 ce       	rjmp	.-794    	; 0x180

0000049a <Leds_init>:

//-----------------------------------------------------显示led驱

⌨️ 快捷键说明

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