main.lis
来自「mega128平台下」· LIS 代码 · 共 1,179 行 · 第 1/4 页
LIS
1,179 行
00EE A6C0 xjmp L20
00F0 L29:
00F0 ;
00F0 ; case 2: //如果第一次没有同步,进行处理,否则,不处理
00F0 ; if(sync_Cflag==0)
00F0 20900600 lds R2,_sync_Cflag
00F4 2220 tst R2
00F6 09F0 breq X5
00F8 A1C0 xjmp L20
00FA X5:
00FA ; {
00FA ; halSpiWriteReg(CCxxx0_CHANNR, 2*LOCAL_GID-1+0xa);
00FA 2DE0 ldi R18,13
00FC 0AE0 ldi R16,10
00FE 0E940000 xcall _halSpiWriteReg
0102 ; start_T1(0,2*SYNC_INTVL+1000);
0102 20ED ldi R18,2000
0104 37E0 ldi R19,7
0106 0027 clr R16
0108 0E940000 xcall _start_T1
010C ; sync_Cflag=1;
010C 81E0 ldi R24,1
010E 80930600 sts _sync_Cflag,R24
0112 ; }
0112 ; break;
0112 94C0 xjmp L20
0114 L32:
0114 ;
0114 ; case 3:
0114 ; if(sync_Cflag==0)
0114 20900600 lds R2,_sync_Cflag
0118 2220 tst R2
011A 09F0 breq X6
011C 8FC0 xjmp L20
011E X6:
011E ; {
011E ; halSpiWriteReg(CCxxx0_CHANNR, 2*LOCAL_GID-1+0xa);
011E 2DE0 ldi R18,13
0120 0AE0 ldi R16,10
0122 0E940000 xcall _halSpiWriteReg
0126 ; start_T1(0,SYNC_INTVL+1000);
0126 2CED ldi R18,1500
0128 35E0 ldi R19,5
012A 0027 clr R16
012C 0E940000 xcall _start_T1
0130 ; sync_Cflag=1;
0130 81E0 ldi R24,1
0132 80930600 sts _sync_Cflag,R24
0136 ; }
0136 ; break;
0136 ; default:break;
0136 ; }
0136 ; }
0136 ; break;
0136 82C0 xjmp L20
0138 L35:
0138 ;
0138 ; case(CLUSTER_ACK): //收到sink的ack,取消重发
0138 ; stop_T2();
0138 0E940000 xcall _stop_T2
013C ; counter_data=0;
013C 2224 clr R2
013E 20920300 sts _counter_data,R2
0142 ; break;
0142 7CC0 xjmp L20
0144 L36:
0144 ;
0144 ; case(NODE_DATA): //保存数据,并发送ACK
0144 ;
0144 ; //if(m->DA==0x0100)
0144 ; {
0144 ; //printf("%d\n",m->ID);
0144 ; //printf("%d\n",m->data[1]);
0144 ; //printf("%d\n",m->data[2]);
0144 ; //printf("%d\n",m->data[3]);
0144 ;
0144 ; nodeID=m->ID;
0144 FA01 movw R30,R20
0146 6181 ldd R22,z+1
0148 ; printf("%d\n",nodeID);
0148 262F mov R18,R22
014A 3327 clr R19
014C 00E0 ldi R16,<L37
014E 10E0 ldi R17,>L37
0150 0E940000 xcall _printf
0154 ; local_buff[4*(nodeID-1)]=m->ID;
0154 84E0 ldi R24,4
0156 869F mul R24,R22
0158 F001 movw R30,R0
015A 80E0 ldi R24,<_local_buff-4
015C 90E0 ldi R25,>_local_buff-4
015E E80F add R30,R24
0160 F91F adc R31,R25
0162 DA01 movw R26,R20
0164 1196 adiw R26,1
0166 2C90 ld R2,x
0168 2082 std z+0,R2
016A ; local_buff[4*(nodeID-1)+1]=m->data[1];
016A 84E0 ldi R24,4
016C 869F mul R24,R22
016E F001 movw R30,R0
0170 80E0 ldi R24,<_local_buff+1-4
0172 90E0 ldi R25,>_local_buff+1-4
0174 E80F add R30,R24
0176 F91F adc R31,R25
0178 DA01 movw R26,R20
017A 1796 adiw R26,7
017C 2C90 ld R2,x
017E 2082 std z+0,R2
0180 ; local_buff[4*(nodeID-1)+2]=m->data[2];
0180 84E0 ldi R24,4
0182 869F mul R24,R22
0184 F001 movw R30,R0
0186 80E0 ldi R24,<_local_buff+2-4
0188 90E0 ldi R25,>_local_buff+2-4
018A E80F add R30,R24
018C F91F adc R31,R25
018E DA01 movw R26,R20
0190 1896 adiw R26,8
0192 2C90 ld R2,x
0194 2082 std z+0,R2
0196 ; local_buff[4*(nodeID-1)+3]=m->data[3];
0196 84E0 ldi R24,4
0198 869F mul R24,R22
019A F001 movw R30,R0
019C 80E0 ldi R24,<_local_buff+3-4
019E 90E0 ldi R25,>_local_buff+3-4
01A0 E80F add R30,R24
01A2 F91F adc R31,R25
01A4 DA01 movw R26,R20
01A6 1996 adiw R26,9
01A8 2C90 ld R2,x
01AA 2082 std z+0,R2
01AC ;
01AC ; flag[nodeID-1]=0;
01AC 80E0 ldi R24,<_flag-1
01AE 90E0 ldi R25,>_flag-1
01B0 E62F mov R30,R22
01B2 FF27 clr R31
01B4 E80F add R30,R24
01B6 F91F adc R31,R25
01B8 2224 clr R2
01BA 2082 std z+0,R2
01BC ;
01BC ; ack.len=NODE_MSG_LENGTH;
01BC 8BE0 ldi R24,11
01BE 80930F00 sts _ack,R24
01C2 ; ack.ID=LOCAL_ID;
01C2 20921000 sts _ack+1,R2
01C6 ; ack.GID=LOCAL_GID;
01C6 82E0 ldi R24,2
01C8 80931100 sts _ack+2,R24
01CC ; ack.DA=((LOCAL_GID <<8)&0xff00)+nodeID;
01CC 862F mov R24,R22
01CE 9927 clr R25
01D0 8050 subi R24,0 ; offset = 512
01D2 9E4F sbci R25,254
01D4 90931300 sts _ack+3+1,R25
01D8 80931200 sts _ack+3,R24
01DC ; ack.type=NODE_ACK;
01DC 84E0 ldi R24,4
01DE 80931400 sts _ack+5,R24
01E2 ; //ack.data[0]=recv.data[0];
01E2 ; ackack=(unsigned char*)(&ack.len); //强制转化
01E2 80E0 ldi R24,<_ack
01E4 90E0 ldi R25,>_ack
01E6 90930100 sts _ackack+1,R25
01EA 80930000 sts _ackack,R24
01EE ; CC1100_send(ackack,NODE_MSG_LENGTH+1);
01EE 2CE0 ldi R18,12
01F0 8C01 movw R16,R24
01F2 0E940000 xcall _CC1100_send
01F6 ; }
01F6 ; break;
01F6 22C0 xjmp L20
01F8 L50:
01F8 ;
01F8 ; case(CLUSTER_DATA): //未收到同步,根据收到的其他簇头信息进行同步
01F8 ; if (!sync_Cflag)
01F8 20900600 lds R2,_sync_Cflag
01FC 2220 tst R2
01FE F1F4 brne L20
0200 ; {
0200 ; //if(LOCAL_GID > m->GID) //下轮进行同步
0200 ; counter_sync =3;
0200 83E0 ldi R24,3
0202 80930400 sts _counter_sync,R24
0206 ; start_T1(0,CHANGE_CHAN_INTVL-(m->GID*3000)-(m->data[0]*DATA_TRANS_INTVL));
0206 FA01 movw R30,R20
0208 2281 ldd R18,z+2
020A 3327 clr R19
020C 08EB ldi R16,3000
020E 1BE0 ldi R17,11
0210 0E940000 xcall empy16s
0214 80EE ldi R24,12000
0216 9EE2 ldi R25,46
0218 801B sub R24,R16
021A 910B sbc R25,R17
021C FA01 movw R30,R20
021E 2681 ldd R18,z+6
0220 3327 clr R19
0222 04EF ldi R16,500
0224 11E0 ldi R17,1
0226 0E940000 xcall empy16s
022A 801B sub R24,R16
022C 910B sbc R25,R17
022E 9C01 movw R18,R24
0230 0027 clr R16
0232 0E940000 xcall _start_T1
0236 ; sync_Cflag=1;
0236 81E0 ldi R24,1
0238 80930600 sts _sync_Cflag,R24
023C ; //start_T0(0,CHANGE_CHAN_INTVL-(LOCAL_GID+1-m->GID)*3000);
023C ; //else
023C ; //start_T0(0,(CLUSTER_QUANTITY-m->GID+1)*3000+CHANGE_CHAN_INTVL);
023C ; }
023C ; break;
023C ; default:break;
023C ; }
023C ; return ;
023C L20:
023C 0E940000 xcall pop_gset2
0240 .dbline 0 ; func end
0240 0895 ret
.even
0242 _port_init::
0242 ; }
0242 ;
0242 ;
0242 ; void port_init(void)
0242 ; {
0242 ; //cc1100
0242 ; /* IN G1 o
0242 ; GD0O D1 i
0242 ; CSN C2 o
0242 ; SCLK G0 o
0242 ; OUT C1 i
0242 ; */
0242 ; //led
0242 ; /* led0 C4 o
0242 ; led1 C5 o
0242 ; led2 C6 o
0242 ; */
0242 ;
0242 ; PORTA = 0x00;
0242 2224 clr R2
0244 2BBA out 0x1b,R2
0246 ; DDRA = 0x00;
0246 2ABA out 0x1a,R2
0248 ; PORTB = 0x00;
0248 28BA out 0x18,R2
024A ; DDRB = 0x00;
024A 27BA out 0x17,R2
024C ; PORTC = 0x00; //m103 output only
024C 25BA out 0x15,R2
024E ; DDRC = 0x74;
024E 84E7 ldi R24,116
0250 84BB out 0x14,R24
0252 ; PORTD = 0x00;
0252 22BA out 0x12,R2
0254 ; DDRD = 0x00;
0254 21BA out 0x11,R2
0256 ; PORTE = 0x00;
0256 23B8 out 0x3,R2
0258 ; DDRE = 0x00;
0258 22B8 out 0x2,R2
025A ; PORTF = 0x00;
025A 20926200 sts 98,R2
025E ; DDRF = 0x00;
025E 20926100 sts 97,R2
0262 ; PORTG = 0x00;
0262 20926500 sts 101,R2
0266 ; DDRG = 0x03;
0266 83E0 ldi R24,3
0268 80936400 sts 100,R24
026C L55:
026C .dbline 0 ; func end
026C 0895 ret
.even
026E _uart0_init::
026E ; }
026E ;
026E ;
026E ;
026E ; //UART0 initialize
026E ; // desired baud rate: 57600
026E ; // actual: baud rate:57600 (0.0%)
026E ; // char size: 8 bit
026E ; // parity: Disabled
026E ; void uart0_init(void)
026E ; {
026E ; UCSR0B = 0x00; //disable while setting baud rate
026E 2224 clr R2
0270 2AB8 out 0xa,R2
0272 ; UCSR0A = 0x00;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?