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