main.lis
来自「mega128平台下」· LIS 代码 · 共 1,179 行 · 第 1/4 页
LIS
1,179 行
03E6 0E940000 xcall _post
03EA ; start_T2(0,DATA_TRANS_INTVL);
03EA 24EF ldi R18,500
03EC 31E0 ldi R19,1
03EE 0027 clr R16
03F0 0E940000 xcall _start_T2
03F4 ; }
03F4 05C0 xjmp L78
03F6 L77:
03F6 ; else
03F6 ; {counter_data=0; stop_T2();}
03F6 2224 clr R2
03F8 20920300 sts _counter_data,R2
03FC 0E940000 xcall _stop_T2
0400 L78:
0400 L76:
0400 .dbline 0 ; func end
0400 0895 ret
0402 ; recv -> R22,R23
0402 ; i -> R20
.even
0402 _T3_timeout::
0402 0E940000 xcall push_gset2
0406 ; // led0Toggle();
0406 ; }
0406 ;
0406 ; void T3_timeout() //发送簇内数据
0406 ; {
0406 ; unsigned char *recv;
0406 ; unsigned char i;
0406 ; for(i=0;i<NODE_QUANTITY;i++)
0406 4427 clr R20
0408 2AC0 xjmp L83
040A L80:
040A ; {
040A ; if(flag[i]==3)
040A 80E0 ldi R24,<_flag
040C 90E0 ldi R25,>_flag
040E E42F mov R30,R20
0410 FF27 clr R31
0412 E80F add R30,R24
0414 F91F adc R31,R25
0416 8081 ldd R24,z+0
0418 8330 cpi R24,3
041A 01F5 brne L84
041C ; {
041C ; local_buff[4*i+1]=0;
041C 84E0 ldi R24,4
041E 849F mul R24,R20
0420 F001 movw R30,R0
0422 80E0 ldi R24,<_local_buff+1
0424 90E0 ldi R25,>_local_buff+1
0426 E80F add R30,R24
0428 F91F adc R31,R25
042A 2224 clr R2
042C 2082 std z+0,R2
042E ; local_buff[4*i+2]=0;
042E 84E0 ldi R24,4
0430 849F mul R24,R20
0432 F001 movw R30,R0
0434 80E0 ldi R24,<_local_buff+2
0436 90E0 ldi R25,>_local_buff+2
0438 E80F add R30,R24
043A F91F adc R31,R25
043C 2082 std z+0,R2
043E ; local_buff[4*i+3]=0;
043E 84E0 ldi R24,4
0440 849F mul R24,R20
0442 F001 movw R30,R0
0444 80E0 ldi R24,<_local_buff+3
0446 90E0 ldi R25,>_local_buff+3
0448 E80F add R30,R24
044A F91F adc R31,R25
044C 2082 std z+0,R2
044E ; flag[i]=0;
044E 80E0 ldi R24,<_flag
0450 90E0 ldi R25,>_flag
0452 E42F mov R30,R20
0454 FF27 clr R31
0456 E80F add R30,R24
0458 F91F adc R31,R25
045A 2082 std z+0,R2
045C ; }
045C L84:
045C L81:
045C 4395 inc R20
045E L83:
045E 4230 cpi R20,2
0460 08F4 brsh X8
0462 D3CF xjmp L80
0464 X8:
0464 ; }
0464 ; for(i=1;i<9;i++)
0464 41E0 ldi R20,1
0466 0FC0 xjmp L92
0468 L89:
0468 80E0 ldi R24,<_local_buff-1
046A 90E0 ldi R25,>_local_buff-1
046C E42F mov R30,R20
046E FF27 clr R31
0470 E80F add R30,R24
0472 F91F adc R31,R25
0474 2080 ldd R2,z+0
0476 80E0 ldi R24,<_pre_trans+6
0478 90E0 ldi R25,>_pre_trans+6
047A E42F mov R30,R20
047C FF27 clr R31
047E E80F add R30,R24
0480 F91F adc R31,R25
0482 2082 std z+0,R2
0484 L90:
0484 4395 inc R20
0486 L92:
0486 4930 cpi R20,9
0488 78F3 brlo L89
048A ; pre_trans.data[i]=local_buff[i-1];
048A ; //pre_trans.data[1]=test;
048A ; //test++;
048A ;
048A ; counter_data++;
048A 80910300 lds R24,_counter_data
048E 8F5F subi R24,255 ; addi 1
0490 80930300 sts _counter_data,R24
0494 ; pre_trans.data[0]=counter_data;
0494 282E mov R2,R24
0496 20922100 sts _pre_trans+6,R2
049A ;
049A ; recv=(unsigned char*)(&pre_trans.len);
049A 60E0 ldi R22,<_pre_trans
049C 70E0 ldi R23,>_pre_trans
049E ;
049E ; CC1100_send(recv,COMM_MSG_LENGTH+1);
049E 20E2 ldi R18,32
04A0 8B01 movw R16,R22
04A2 0E940000 xcall _CC1100_send
04A6 ; //printf("%d",pre_trans.data[1]);
04A6 ; start_T2(0,DATA_TRANS_INTVL);//启动重发时钟,500ms未收到ack则重发
04A6 24EF ldi R18,500
04A8 31E0 ldi R19,1
04AA 0027 clr R16
04AC 0E940000 xcall _start_T2
04B0 ; led2Toggle();
04B0 0E940000 xcall _led2Toggle
04B4 L79:
04B4 0E940000 xcall pop_gset2
04B8 .dbline 0 ; func end
04B8 0895 ret
04BA ; i -> R20,R21
04BA ; xtal -> R22,R23
.even
04BA _delay_1ms::
04BA 0E940000 xcall push_gset2
04BE B801 movw R22,R16
04C0 ; }
04C0 ;
04C0 ;
04C0 ; void delay_1ms(unsigned int xtal)
04C0 ; {
04C0 ; unsigned int i;
04C0 ; for(i=1;i<(unsigned int)(xtal*143-2);i++)
04C0 41E0 ldi R20,1
04C2 50E0 ldi R21,0
04C4 02C0 xjmp L100
04C6 L97:
04C6 L98:
04C6 4F5F subi R20,255 ; offset = 1
04C8 5F4F sbci R21,255
04CA L100:
04CA 0FE8 ldi R16,143
04CC 10E0 ldi R17,0
04CE 9B01 movw R18,R22
04D0 0E940000 xcall empy16s
04D4 C801 movw R24,R16
04D6 0297 sbiw R24,2
04D8 4817 cp R20,R24
04DA 5907 cpc R21,R25
04DC A0F3 brlo L97
04DE L96:
04DE 0E940000 xcall pop_gset2
04E2 .dbline 0 ; func end
04E2 0895 ret
04E4 ; i -> R20,R21
04E4 ; n -> R22,R23
.even
04E4 _delay_x::
04E4 0E940000 xcall push_gset2
04E8 B801 movw R22,R16
04EA ; ;
04EA ; }
04EA ;
04EA ; void delay_x(unsigned int n)
04EA ; {
04EA ; unsigned int i=0;
04EA 4427 clr R20
04EC 5527 clr R21
04EE ; for(i=0;i<n;i++)
04EE 05C0 xjmp L105
04F0 L102:
04F0 07E0 ldi R16,7
04F2 10E0 ldi R17,0
04F4 E2DF xcall _delay_1ms
04F6 L103:
04F6 4F5F subi R20,255 ; offset = 1
04F8 5F4F sbci R21,255
04FA L105:
04FA 4617 cp R20,R22
04FC 5707 cpc R21,R23
04FE C0F3 brlo L102
0500 L101:
0500 0E940000 xcall pop_gset2
0504 .dbline 0 ; func end
0504 0895 ret
.even
0506 _main::
0506 ; delay_1ms(7);
0506 ; }
0506 ;
0506 ;
0506 ; void main()
0506 ; {
0506 ;
0506 ; init_devices();
0506 C0DE xcall _init_devices
0508 ; sched_init();
0508 0E940000 xcall _sched_init
050C ; identifier_init();
050C 79DD xcall _identifier_init
050E ; CC1100_setInterrupt(0x01); //RF接收状态
050E 01E0 ldi R16,1
0510 0E940000 xcall _CC1100_setInterrupt
0514 02C0 xjmp L108
0516 L107:
0516 0E940000 xcall _run_task
051A L108:
051A ; //start_T3(1,2000);
051A ; /*
051A ; led0Toggle();
051A ; delay(100);
051A ; led1Toggle();
051A ; delay(100);
051A ; led2Toggle();
051A ; */
051A ; //halSpiWriteReg(CCxxx0_CHANNR, 0x0A);//初始化通道置为A
051A ;
051A ;
051A ; /*my program*/
051A ;
051A ; //CC1100_send(a,4);
051A ; //puts("hello\n");
051A ;
051A ; /*my program end*/
051A ;
051A ; /*schedule*/
051A ; while(1)
051A FDCF xjmp L107
051C X9:
051C L106:
051C .dbline 0 ; func end
051C 0895 ret
.area bss(ram, con, rel)
0000 _ackack::
0000 .blkb 2
0002 _change_channel::
0002 .blkb 1
0003 _counter_data::
0003 .blkb 1
0004 _counter_sync::
0004 .blkb 1
0005 _sync_Nflag::
0005 .blkb 1
0006 _sync_Cflag::
0006 .blkb 1
0007 _local_buff::
0007 .blkb 8
000F _ack::
000F .blkb 12
001B _pre_trans::
001B .blkb 32
003B _recv::
003B .blkb 32
.area data(ram, con, rel)
0004 L37:
0004 .blkb 4
.area idata
0004 25640A00 .byte 37,'d,10,0
.area data(ram, con, rel)
0008 L10:
0008 .blkb 6
.area idata
0008 646F6E650A00 .byte 'd,'o,'n,'e,10,0
.area data(ram, con, rel)
.area func_lit
0000 DA01 PL_resend: .word `_resend
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?