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

📄 main.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 02FA FA01              movw R30,R20
 02FC 2588              ldd R2,z+21
 02FE 20921C00          sts _Data+20,R2
 0302           ;                       Data[21]=receive_msg->data[16];
 0302 FA01              movw R30,R20
 0304 2688              ldd R2,z+22
 0306 20921D00          sts _Data+21,R2
 030A           ;                       
 030A           ;                       Data[22]=receive_msg->GID;
 030A FA01              movw R30,R20
 030C 2280              ldd R2,z+2
 030E 20921E00          sts _Data+22,R2
 0312           ;                       Data[23]=receive_msg->data[17];
 0312 FA01              movw R30,R20
 0314 2788              ldd R2,z+23
 0316 20921F00          sts _Data+23,R2
 031A           ;                       Data[24]=receive_msg->data[18];
 031A FA01              movw R30,R20
 031C 208C              ldd R2,z+24
 031E 20922000          sts _Data+24,R2
 0322           ;                       Data[25]=receive_msg->data[19];
 0322 FA01              movw R30,R20
 0324 218C              ldd R2,z+25
 0326 20922100          sts _Data+25,R2
 032A           ;                       Data[26]=receive_msg->data[20];
 032A FA01              movw R30,R20
 032C 228C              ldd R2,z+26
 032E 20922200          sts _Data+26,R2
 0332           ;               
 0332           ;                       Data[27]=0;//crc  receive_msg->GID;
 0332 2224              clr R2
 0334 20922300          sts _Data+27,R2
 0338           ;                       Data[28]=0;//crc  receive_msg->data[5];
 0338 20922400          sts _Data+28,R2
 033C           ;               
 033C           ;                   //printf("ko\n");
 033C           ;                       serial_put(Data,Data[0]);
 033C 20910800          lds R18,_Data
 0340 3327              clr R19
 0342 00E0              ldi R16,<_Data
 0344 10E0              ldi R17,>_Data
 0346 0E940000          xcall _serial_put
 034A           ;                   
 034A           ;                   RADIO_ACK_MSG.DA = target;
 034A 70932C00          sts _RADIO_ACK_MSG+3+1,R23
 034E 60932B00          sts _RADIO_ACK_MSG+3,R22
 0352           ;                       radio_ack_task();
 0352 42DF              xcall _radio_ack_task
 0354           ;                       break;
 0354 1AC0              xjmp L41
 0356           L73:
 0356           ; 		}	
 0356           ;   		
 0356           ; 		case INIT_NODE_PARAMEATER_ACK: //初始化节点响应
 0356           ; 		{
 0356           ; 		    Data[0]=6;
 0356 86E0              ldi R24,6
 0358 80930800          sts _Data,R24
 035C           ;                       Data[1]=INIT_NODE_PARAMEATER_ACK;
 035C 8DE1              ldi R24,29
 035E 80930900          sts _Data+1,R24
 0362           ;                       Data[2]=receive_msg->GID;
 0362 FA01              movw R30,R20
 0364 2280              ldd R2,z+2
 0366 20920A00          sts _Data+2,R2
 036A           ;                       Data[3]=receive_msg->data[0];
 036A FA01              movw R30,R20
 036C 2680              ldd R2,z+6
 036E 20920B00          sts _Data+3,R2
 0372           ;                       Data[4]=0;//crc
 0372 2224              clr R2
 0374 20920C00          sts _Data+4,R2
 0378           ;                       Data[5]=0;//crc
 0378 20920D00          sts _Data+5,R2
 037C           ;                       serial_put(Data,Data[0]);
 037C 20910800          lds R18,_Data
 0380 3327              clr R19
 0382 00E0              ldi R16,<_Data
 0384 10E0              ldi R17,>_Data
 0386 0E940000          xcall _serial_put
 038A           ;                       break;
 038A           ;               }
 038A           ;               
 038A           ;               default: break;                                                                                 
 038A           L41:
 038A           L37:
 038A 0E940000          xcall pop_gset3
 038E                   .dbline 0 ; func end
 038E 0895              ret
 0390           ;              n -> R20,R21
 0390           ;     sync_seqno -> R20,R21
 0390           ;        msg_crc -> <dead>
 0390           ;  INIT_NODE_MSG -> <dead>
 0390           ;        ASK_MSG -> <dead>
 0390           ;     RTC_TIMER1 -> R20
 0390           ;     RTC_TIMER0 -> R20
 0390           ;       CMD_type -> R20
 0390           ;        command -> R22,R23
                        .even
 0390           _uart_receive_CMD::
 0390 0E940000          xcall push_gset2
 0394 B801              movw R22,R16
 0396           ;       }  //end of switch
 0396           ; }
 0396           ; 
 0396           ; 
 0396           ; int uart_receive_CMD(Uart_CMD *command)
 0396           ; {
 0396           ;       Uart_server_MSG *ASK_MSG;
 0396           ;       COMM_MSG *INIT_NODE_MSG;
 0396           ;       
 0396           ;       unsigned char CMD_type;
 0396           ;       unsigned short int msg_crc;
 0396           ;       unsigned char RTC_TIMER0,RTC_TIMER1;
 0396           ;       CMD_type = command->type;
 0396 FB01              movw R30,R22
 0398 4281              ldd R20,z+2
 039A           ;       switch(CMD_type)
 039A 5527              clr R21
 039C 4531              cpi R20,21
 039E E0E0              ldi R30,0
 03A0 5E07              cpc R21,R30
 03A2 49F0              breq L84
 03A4 4931              cpi R20,25
 03A6 E0E0              ldi R30,0
 03A8 5E07              cpc R21,R30
 03AA 51F0              breq L85
 03AC 4A31              cpi R20,26
 03AE E0E0              ldi R30,0
 03B0 5E07              cpc R21,R30
 03B2 41F1              breq L91
 03B4 51C0              xjmp L82
 03B6           X4:
 03B6           ; 	{
 03B6           L84:
 03B6           ; 	 
 03B6           ; 		case SINK_SERVER_SYNC: //更改RTC时间
 03B6           ; 		{
 03B6           ; 			 RTC_TIMER0 = command->data[0];
 03B6 FB01              movw R30,R22
 03B8 4381              ldd R20,z+3
 03BA           ;                        RTC_TIMER1 = command->data[1];
 03BA FB01              movw R30,R22
 03BC 4481              ldd R20,z+4
 03BE           ;                        break;                  
 03BE 4CC0              xjmp L82
 03C0           L85:
 03C0           ; 		}
 03C0           ; 		case SERVER_RESET :  //同步
 03C0           ; 		{
 03C0           ; 			unsigned sync_seqno = 0;
 03C0 4427              clr R20
 03C2 5527              clr R21
 03C4           ;                       SYNC_MSG.len = LEN_SEND_MSG;
 03C4 8CE0              ldi R24,12
 03C6 80933900          sts _SYNC_MSG,R24
 03CA           ;                       SYNC_MSG.ID = 0;
 03CA 2224              clr R2
 03CC 20923A00          sts _SYNC_MSG+1,R2
 03D0           ;                       SYNC_MSG.GID = 0;
 03D0 20923B00          sts _SYNC_MSG+2,R2
 03D4           ;                       SYNC_MSG.DA = 0xffff;
 03D4 8FEF              ldi R24,65535
 03D6 9FEF              ldi R25,255
 03D8 90933D00          sts _SYNC_MSG+3+1,R25
 03DC 80933C00          sts _SYNC_MSG+3,R24
 03E0           ;                       SYNC_MSG.type = SINK_CLUSTER_SYNC;
 03E0 81E0              ldi R24,1
 03E2 80933E00          sts _SYNC_MSG+5,R24
 03E6           ;                       SYNC_MSG.data[0] = sync_seqno;
 03E6 40933F00          sts _SYNC_MSG+6,R20
 03EA           ;                       //SYNC_MSG->crc = xcrc_calc(SYNC_MSG, 0, 18);
 03EA           ;                       CC1100_send( (char *)&SYNC_MSG, LEN_SEND_MSG+1);
 03EA 2DE0              ldi R18,13
 03EC 00E0              ldi R16,<_SYNC_MSG
 03EE 10E0              ldi R17,>_SYNC_MSG
 03F0 0E940000          xcall _CC1100_send
 03F4           ;                       start_T0(0,SYNC_INTERVAL);
 03F4 24EF              ldi R18,500
 03F6 31E0              ldi R19,1
 03F8 0027              clr R16
 03FA 0E940000          xcall _start_T0
 03FE           ;                       led0Toggle();   
 03FE 0E940000          xcall _led0Toggle
 0402           ;                       break;                           
 0402 2AC0              xjmp L82
 0404           L91:
 0404           ; 		}
 0404           ; 		
 0404           ; 		/*
 0404           ; 		case SERVER_ASK_SINKDATA:   //要数据
 0404           ; 		{	
 0404           ; 			int n=0;
 0404           ; 			ASK_MSG->startbyte = 0x7e;
 0404           ; 			ASK_MSG->len = 28;
 0404           ; 			ASK_MSG->type = SINKDATA;
 0404           ; 			ASK_MSG->data = CURRENT_DATA;
 0404           ; 		
 0404           ; 			for(n=0; n<=23; n++)
 0404           ; 			{
 0404           ; 				ASK_MSG->data[n] = 0;
 0404           ; 			}
 0404           ; 			ASK_MSG->CRC =  xcrc_calc(ASK_MSG, 1, 26);
 0404           ; 			serial_put(ASK_MSG); 
 0404           ; 			break;
 0404           ; 		}
 0404           ; 		*/
 0404           ; 		
 0404           ; 		case SERVER_INIT_NODE: //初始化节点参数
 0404           ; 		{    
 0404           ; 			int n=0;                  // 是否需要切换通道?
 0404 4427              clr R20
 0406 5527              clr R21
 0408           ;                       SYNC_MSG.len = LEN_SEND_MSG;
 0408 8CE0              ldi R24,12
 040A 80933900          sts _SYNC_MSG,R24
 040E           ;                       SYNC_MSG.ID = 0;
 040E 2224              clr R2
 0410 20923A00          sts _SYNC_MSG+1,R2
 0414           ;                       SYNC_MSG.GID = 0;
 0414 20923B00          sts _SYNC_MSG+2,R2
 0418           ;                       SYNC_MSG.DA = 0x0000;
 0418 3324              clr R3
 041A 30923D00          sts _SYNC_MSG+3+1,R3
 041E 20923C00          sts _SYNC_MSG+3,R2
 0422           ;                       SYNC_MSG.type = SINK_INIT_NODE;
 0422 8AE0              ldi R24,10
 0424 80933E00          sts _SYNC_MSG+5,R24
 0428           ;                        
 0428           ;                       for(n=0; n <= 5; n++) //5个字节的长度
 0428           L96:
 0428 CB01              movw R24,R22
 042A 0396              adiw R24,3
 042C FA01              movw R30,R20
 042E E80F              add R30,R24
 0430 F91F              adc R31,R25
 0432 2080              ldd R2,z+0
 0434 80E0              ldi R24,<_SYNC_MSG+6
 0436 90E0              ldi R25,>_SYNC_MSG+6
 0438 FA01              movw R30,R20
 043A E80F              add R30,R24
 043C F91F              adc R31,R25
 043E 2082              std z+0,R2
 0440           L97:
 0440 4F5F              subi R20,255  ; offset = 1
 0442 5F4F              sbci R21,255
 0444 85E0              ldi R24,5
 0446 90E0              ldi R25,0
 0448 8417              cp R24,R20
 044A 9507              cpc R25,R21
 044C 6CF7              brge L96
 044E           ;                       {
 044E           ;                               SYNC_MSG.data[n] = command->data[n];
 044E           ;                       }
 044E           ;                        //SYNC_MSG->data[0] = command->data[0] ;
 044E           ;                        //SYNC_MSG->crc = xcrc_calc(SYNC_MSG, 0, 18);
 044E           ;                       CC1100_send((unsigned char *)&SYNC_MSG, LEN_SEND_MSG+1);
 044E 2DE0              ldi R18,13
 0450 00E0              ldi R16,<_SYNC_MSG
 0452 10E0              ldi R17,>_SYNC_MSG
 0454 0E940000          xcall _CC1100_send
 0458           ;                       break;
 0458           ;               }
 0458           ;               
 0458           ;               default: break;
 0458           L82:
 0458           ; 	}	
 0458           ; 	return 1;
 0458 01E0              ldi R16,1
 045A 10E0              ldi R17,0
 045C           L80:
 045C 0E940000          xcall pop_gset2
 0460                   .dbline 0 ; func end
 0460 0895              ret
                        .even
 0462           _main::
 0462           ; }
 0462           ; 
 0462           ; extern unsigned char put_done;
 0462           ; 
 0462           ; void main() 
 0462           ; {
 0462           ;     
 0462           ;     init_devices();
 0462 F1DD              xcall _init_devices
 0464           ;     put_done =1; //使能串口输出
 0464 81E0              ldi R24,1
 0466 80930000          sts _put_done,R24
 046A           ;       sched_init();
 046A 0E940000          xcall _sched_init
 046E           ;       CC1100_setInterrupt(0x01);  //RF接收状态
 046E 01E0              ldi R16,1
 0470 0E940000          xcall _CC1100_setInterrupt
 0474 02C0              xjmp L103
 0476           L102:
 0476 0E940000          xcall _run_task
 047A           L103:
 047A           ;     // start_T0(0,2000);
 047A           ;     // start_T1(1,12000);
 047A           ;  
 047A           ;     /*my program*/
 047A           ; 	//led0Toggle();
 047A           ; 	//start_T1(1,8000);
 047A           ; 	//start_T3(1,1000);
 047A           ; 	//start_T0(1,1000);
 047A           ; 	//start_T2(1,1000);
 047A           ; 	
 047A           ; 	//CC1100_send(a,4);
 047A           ; 	//puts("hello\n");
 047A           ; 	
 047A           ; 	/*my program end*/
 047A           ; 	
 047A           ; 	/*schedule*/
 047A           ; 	while(1) 
 047A FDCF              xjmp L102
 047C           X5:
 047C           L101:
 047C                   .dbline 0 ; func end
 047C 0895              ret
                        .area bss(ram, con, rel)
 0000           _Node::
 0000                   .blkb 8
 0008           _Data:
 0008                   .blkb 28
 0024           _crc::
 0024                   .blkb 2
 0026           _ask_seqno::
 0026                   .blkb 1
 0027           _SyncSeqNo::
 0027                   .blkb 1
 0028           _RADIO_ACK_MSG::
 0028                   .blkb 17
 0039           _SYNC_MSG::
 0039                   .blkb 17

⌨️ 快捷键说明

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