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 + -
显示快捷键?