📄 main.lis
字号:
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 + -