nodeapp.lis

来自「mega128平台下」· LIS 代码 · 共 788 行 · 第 1/2 页

LIS
788
字号
 014C 311E              adc R3,R17
 014E 20910800          lds R18,_T
 0152 30910900          lds R19,_T+1
 0156 2219              sub R18,R2
 0158 3309              sbc R19,R3
 015A 0027              clr R16
 015C 0E940000          xcall _start_T1
 0160 13C0              xjmp L30
 0162           L29:
 0162           ; 	   			else 
 0162           ; 	       			start_T1(0,((LOCAL_ID - source_id) * T_p_node  - seqNO*RE_SEND_DELAY));
 0162 20900000          lds R2,_LOCAL_ID
 0166 2C18              sub R2,R12
 0168 30900100          lds R3,_T_p_node
 016C 239C              mul R2,R3
 016E 1001              movw R2,R0
 0170 2A2D              mov R18,R10
 0172 3327              clr R19
 0174 04EF              ldi R16,500
 0176 11E0              ldi R17,1
 0178 0E940000          xcall empy16s
 017C 201A              sub R2,R16
 017E 310A              sbc R3,R17
 0180 9101              movw R18,R2
 0182 0027              clr R16
 0184 0E940000          xcall _start_T1
 0188           L30:
 0188           ; 	 			CC1100_sleep();
 0188 0E940000          xcall _CC1100_sleep
 018C           ;                       }
 018C           L27:
 018C           ; 	 		SREG = sreg;
 018C 6FBF              out 0x3f,R22
 018E           ;                       break;
 018E 2FC0              xjmp L19
 0190           L31:
 0190           ; 	 	}
 0190           ; 	 	case SINK_INIT_NODE:
 0190           ; 	 	{
 0190           ; 	  		LOCAL_ID = m->data[0];
 0190 FA01              movw R30,R20
 0192 2680              ldd R2,z+6
 0194 20920000          sts _LOCAL_ID,R2
 0198           ;                       eeprom_write(0,LOCAL_ID);
 0198 222D              mov R18,R2
 019A 3327              clr R19
 019C 0027              clr R16
 019E 1127              clr R17
 01A0 30DF              xcall _eeprom_write
 01A2           ;                       LOCAL_GID = m->data[1];
 01A2 FA01              movw R30,R20
 01A4 2780              ldd R2,z+7
 01A6 20920100          sts _LOCAL_GID,R2
 01AA           ;                       eeprom_write(0,LOCAL_GID);
 01AA 222D              mov R18,R2
 01AC 3327              clr R19
 01AE 0027              clr R16
 01B0 1127              clr R17
 01B2 27DF              xcall _eeprom_write
 01B4           ;                       T=m->data[2]; 
 01B4 FA01              movw R30,R20
 01B6 2084              ldd R2,z+8
 01B8 3324              clr R3
 01BA 30920900          sts _T+1,R3
 01BE 20920800          sts _T,R2
 01C2           ;                       eeprom_write(0,T);
 01C2 9101              movw R18,R2
 01C4 0027              clr R16
 01C6 1127              clr R17
 01C8 1CDF              xcall _eeprom_write
 01CA           ;             node_num =m->data[3];
 01CA FA01              movw R30,R20
 01CC 2184              ldd R2,z+9
 01CE 20920A00          sts _node_num,R2
 01D2           ;             eeprom_write(0,node_num);
 01D2 222D              mov R18,R2
 01D4 3327              clr R19
 01D6 0027              clr R16
 01D8 1127              clr R17
 01DA 13DF              xcall _eeprom_write
 01DC           ;             ALARM_TMP = m->data[4];
 01DC FA01              movw R30,R20
 01DE 2284              ldd R2,z+10
 01E0 20920400          sts _ALARM_TMP,R2
 01E4           ;             eeprom_write(0,ALARM_TMP);
 01E4 222D              mov R18,R2
 01E6 3327              clr R19
 01E8 0027              clr R16
 01EA 1127              clr R17
 01EC 0ADF              xcall _eeprom_write
 01EE           ;             // work_channel = m->data[5];//根据节点组号判断就可以
 01EE           ;                       // 存储配置信息
 01EE           ;                   break;
 01EE           ;               } 
 01EE           ;               
 01EE           ;               default :break;
 01EE           L19:
 01EE           ;      } //end switch
 01EE           ;   }//end if
 01EE           L14:
 01EE           L13:
 01EE 0E940000          xcall pop_gset4
 01F2                   .dbline 0 ; func end
 01F2 0895              ret
                        .even
 01F4           _resend::
 01F4           ; }
 01F4           ;  
 01F4           ; /*
 01F4           ; 
 01F4           ; void T2_timeout(){
 01F4           ;    unsigned char tmp,bat,crc;
 01F4           ;    //led0Toggle();
 01F4           ;   tmp = 0x38;//get_tmp();
 01F4           ;   bat = get_battle();
 01F4           ;   node_data.len = 12;
 01F4           ;   node_data.ID = LOCAL_ID;
 01F4           ;   node_data.GID = LOCAL_GID;
 01F4           ;   node_data.type = NODE_DATA;
 01F4           ;   node_data.data[0] = send_seq;
 01F4           ;   node_data.data[1] = (tmp>>8)&0xff;
 01F4           ;   node_data.data[2] = tmp&0xff;
 01F4           ;   node_data.data[3] = (bat>>8)&0xff;
 01F4           ;   node_data.data[4] = bat&0xff;
 01F4           ;   node_data.crc = 0xffff;
 01F4           ;    //切换通道
 01F4           ;   CC1100_send((unsigned char*)&node_data,node_data.len+1);
 01F4           ;   //切换通道
 01F4           ; }
 01F4           ; */
 01F4           ; /*
 01F4           ; void cllect_send()
 01F4           ; {
 01F4           ;   unsigned char tmp,bat,crc;
 01F4           ;   tmp = 0x38;//get_tmp();
 01F4           ;   if (tmp>ALARM_TMP)
 01F4           ;      start_T2(0,300000);//CYCLE_TIME = NEW_CYCLE_TIME; 
 01F4           ;   bat = 0x33;//get_battle();
 01F4           ;   node_data.len = 12;
 01F4           ;   node_data.ID = LOCAL_ID;
 01F4           ;   node_data.GID = LOCAL_GID;
 01F4           ;   node_data.type = NODE_DATA;
 01F4           ;   node_data.data[0] = send_seq;
 01F4           ;   node_data.data[1] = (tmp>>8)&0xff;
 01F4           ;   node_data.data[2] = tmp&0xff;
 01F4           ;   node_data.data[3] = (bat>>8)&0xff;
 01F4           ;   node_data.data[4] = bat&0xff;
 01F4           ;   node_data.crc = 0xffff;
 01F4           ;   CC1100_send((unsigned char*)&node_data,node_data.len+1);
 01F4           ;   start_T0(1,300);
 01F4           ;   led2Toggle();
 01F4           ;   
 01F4           ; }
 01F4           ; */
 01F4           ; 
 01F4           ; 
 01F4           ; void resend()
 01F4           ; {
 01F4           L34:
 01F4                   .dbline 0 ; func end
 01F4 0895              ret
 01F6           ;              i -> R0,R1
                        .even
 01F6           _T2_timeout::
 01F6           ; 
 01F6           ; }
 01F6           ; 
 01F6           ; void T2_timeout(){ 
 01F6           ; 	int i;
 01F6           ;    //led0Toggle();
 01F6           ;     //for(i=0;i<10000;i++)
 01F6           ;     ;
 01F6           L35:
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8           ;              i -> <dead>
                        .even
 01F8           _T3_timeout::
 01F8           ;    }
 01F8           ; 
 01F8           ; 
 01F8           ; void T3_timeout()
 01F8           ; {  int i;
 01F8           ;    timeout++;
 01F8 80910B00          lds R24,_timeout
 01FC 8F5F              subi R24,255    ; addi 1
 01FE 80930B00          sts _timeout,R24
 0202           ;     //led1Toggle();
 0202           ; 
 0202           ;    // CC1100_send((unsigned char*)&node_data,node_data.len+1);
 0202           ;    //start_T0(0,500);
 0202           ;    if (timeout <=2)        //重发3次结束
 0202 82E0              ldi R24,2
 0204 20900B00          lds R2,_timeout
 0208 8215              cp R24,R2
 020A 78F0              brlo L37
 020C           ;    {
 020C           ;       CC1100_send((unsigned char*)&node_data,node_data.len+1);
 020C 20910200          lds R18,_node_data
 0210 3327              clr R19
 0212 2F5F              subi R18,255  ; offset = 1
 0214 3F4F              sbci R19,255
 0216 00E0              ldi R16,<_node_data
 0218 10E0              ldi R17,>_node_data
 021A 0E940000          xcall _CC1100_send
 021E           ;       start_T3(0,RE_SEND_DELAY);
 021E 24EF              ldi R18,500
 0220 31E0              ldi R19,1
 0222 0027              clr R16
 0224 0E940000          xcall _start_T3
 0228           ;     //post(resend);
 0228           ;      //printf("stop\n");
 0228           ;    }
 0228 07C0              xjmp L38
 022A           L37:
 022A           ;    else
 022A           ;    {
 022A           ; 	
 022A           ; 	 stop_T3();
 022A 0E940000          xcall _stop_T3
 022E           ;        //post(mcu_sleep);
 022E           ;        //for(i=0;i<10000;i++);
 022E           ;      CC1100_sleep();
 022E 0E940000          xcall _CC1100_sleep
 0232           ;      timeout =0;
 0232 2224              clr R2
 0234 20920B00          sts _timeout,R2
 0238           ;    }  
 0238           L38:
 0238           L36:
 0238                   .dbline 0 ; func end
 0238 0895              ret
 023A           ;            crc -> R10
 023A           ;            bat -> R10
 023A           ;            tmp -> R12
                        .even
 023A           _T0_timeout::
 023A 0E940000          xcall push_gset4
 023E           ; }
 023E           ; 
 023E           ; void T0_timeout()
 023E           ; {
 023E           ;       unsigned char tmp,bat,crc=0;
 023E AA24              clr R10
 0240           ;       //led1Toggle();
 0240           ;       crc =1;
 0240 AA24              clr R10
 0242 A394              inc R10
 0244           ;       printf("%d",crc);
 0244 2A2D              mov R18,R10
 0246 3327              clr R19
 0248 00E0              ldi R16,<L40
 024A 10E0              ldi R17,>L40
 024C 0E940000          xcall _printf
 0250           ;       sync_count--;
 0250 80910F00          lds R24,_sync_count
 0254 90911000          lds R25,_sync_count+1
 0258 0197              sbiw R24,1
 025A 90931000          sts _sync_count+1,R25
 025E 80930F00          sts _sync_count,R24
 0262           ;     if (sync_count == 0)
 0262 8030              cpi R24,0
 0264 8907              cpc R24,R25
 0266 D9F4              brne L41
 0268           X6:
 0268           ;     {
 0268           ;       stop_T0();
 0268 0E940000          xcall _stop_T0
 026C           ;       start_T0(0, T - (node_num * T_p_node));
 026C 20900100          lds R2,_T_p_node
 0270 30900A00          lds R3,_node_num
 0274 329C              mul R3,R2
 0276 20910800          lds R18,_T
 027A 30910900          lds R19,_T+1
 027E 2019              sub R18,R0
 0280 3109              sbc R19,R1
 0282 0027              clr R16
 0284 0E940000          xcall _start_T0
 0288           ;       SYNC_FLAG =0;
 0288 2224              clr R2
 028A 20920300          sts _SYNC_FLAG,R2
 028E           ;       sync_count = SYNC_COUNT;
 028E 8EE1              ldi R24,30
 0290 90E0              ldi R25,0
 0292 90931000          sts _sync_count+1,R25
 0296 80930F00          sts _sync_count,R24
 029A           ;       CC1100_wakeup();        
 029A 0E940000          xcall _CC1100_wakeup
 029E           ;       }
 029E           L41:
 029E           ;   	tmp = get_tmp();
 029E 0E940000          xcall _get_tmp
 02A2 C02E              mov R12,R16
 02A4           ;       count ++;
 02A4 80910D00          lds R24,_count
 02A8 90910E00          lds R25,_count+1
 02AC 0196              adiw R24,1
 02AE 90930E00          sts _count+1,R25
 02B2 80930D00          sts _count,R24
 02B6           ;       if (tmp>ALARM_TMP)
 02B6 20900400          lds R2,_ALARM_TMP
 02BA 2016              cp R2,R16
 02BC 40F4              brsh L43
 02BE           ;       start_T3(0,300000);//CYCLE_TIME = NEW_CYCLE_TIME; 
 02BE 40EE              ldi R20,224
 02C0 53E9              ldi R21,147
 02C2 64E0              ldi R22,4
 02C4 70E0              ldi R23,0
 02C6 9A01              movw R18,R20
 02C8 0027              clr R16
 02CA 0E940000          xcall _start_T3
 02CE           L43:
 02CE           ;   	bat = 0x33;//get_battle();
 02CE 83E3              ldi R24,51
 02D0 A82E              mov R10,R24
 02D2           ;       node_data.len = 12;
 02D2 8CE0              ldi R24,12
 02D4 80930200          sts _node_data,R24
 02D8           ;       node_data.ID = LOCAL_ID;
 02D8 20900000          lds R2,_LOCAL_ID
 02DC 20920300          sts _node_data+1,R2
 02E0           ;       node_data.GID = LOCAL_GID;
 02E0 20900100          lds R2,_LOCAL_GID
 02E4 20920400          sts _node_data+2,R2
 02E8           ;       node_data.DA = CLUSTER_IP;
 02E8 3324              clr R3
 02EA 322C              mov R3,R2
 02EC 2224              clr R2
 02EE 30920600          sts _node_data+3+1,R3
 02F2 20920500          sts _node_data+3,R2
 02F6           ;       node_data.type = NODE_DATA;
 02F6 82E3              ldi R24,50
 02F8 80930700          sts _node_data+5,R24
 02FC           ;       node_data.data[0] = send_seq;
 02FC 20900C00          lds R2,_send_seq
 0300 20920800          sts _node_data+6,R2
 0304           ;       node_data.data[1] = tmp;
 0304 C0920900          sts _node_data+6+1,R12
 0308           ;       node_data.data[2] = (bat>>8)&0xff;
 0308 8A2D              mov R24,R10
 030A 9927              clr R25
 030C 892F              mov R24,R25
 030E 9927              clr R25
 0310 87FD              sbrc R24,7
 0312 9095              com R25
 0314 9070              andi R25,0
 0316 80930A00          sts _node_data+6+2,R24
 031A           ;       node_data.data[3] = bat&0xff;
 031A 8A2D              mov R24,R10
 031C 8F7F              andi R24,255
 031E 80930B00          sts _node_data+6+3,R24
 0322           ;       node_data.crc = 0xffff;
 0322 8FEF              ldi R24,65535
 0324 9FEF              ldi R25,255
 0326 90930D00          sts _node_data+10+1,R25
 032A 80930C00          sts _node_data+10,R24
 032E           ;       led2Toggle();
 032E 0E940000          xcall _led2Toggle
 0332           ;       CC1100_wakeup();
 0332 0E940000          xcall _CC1100_wakeup
 0336           ;       CC1100_send((unsigned char*)&node_data,node_data.len+1);
 0336 20910200          lds R18,_node_data
 033A 3327              clr R19
 033C 2F5F              subi R18,255  ; offset = 1
 033E 3F4F              sbci R19,255
 0340 00E0              ldi R16,<_node_data
 0342 10E0              ldi R17,>_node_data
 0344 0E940000          xcall _CC1100_send
 0348           ;       //CC1100_sleep();
 0348           ;       start_T3(0,RE_SEND_DELAY);
 0348 24EF              ldi R18,500
 034A 31E0              ldi R19,1
 034C 0027              clr R16
 034E 0E940000          xcall _start_T3
 0352           L39:
 0352 0E940000          xcall pop_gset4
 0356                   .dbline 0 ; func end
 0356 0895              ret
                        .area bss(ram, con, rel)
 0000           _sleep_flag::
 0000                   .blkb 1
 0001           _T_p_node::
 0001                   .blkb 1
 0002           _node_data::
 0002                   .blkb 15
 0011           _cluster_msg::
 0011                   .blkb 15
                        .area data(ram, con, rel)
 0011           L40:
 0011                   .blkb 3
                        .area idata
 0011 256400            .byte 37,'d,0
                        .area data(ram, con, rel)

⌨️ 快捷键说明

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