⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppp.s

📁 在串口上PPP拨号上网的源程序(实现PPP协议栈)
💻 S
📖 第 1 页 / 共 4 页
字号:
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	clr R5
	std y+1,R5
	std y+0,R4
	ldi R24,<_OutBuffer
	ldi R25,>_OutBuffer
	ldd R18,y+62
	ldd R19,y+63
	add R18,R24
	adc R19,R25
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	movw R16,R2
	add R16,R24
	adc R17,R25
	xcall _Move
	.dbline 214
; 			        OutBuffer[7]+=InBuffer[temp_buffer2[i]+1];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	lds R3,_OutBuffer+7
	add R3,R2
	sts _OutBuffer+7,R3
	.dbline 215
; 				length1+=InBuffer[temp_buffer2[i]+1];    
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	ldd R0,y+62
	ldd R1,y+63
	add R0,R2
	adc R1,R3
	std y+63,R1
	std y+62,R0
	.dbline 216
; 			        rej = 1;
	ldi R20,1
	.dbline 217
; 			   }//end of if((temp_buffer1[i]!=0x01)||(temp_buffer1[i]!=0x02)||(temp_buffer1[i]!=0x05))
L81:
	.dbline 218
L78:
	.dbline 207
	inc R22
L80:
	.dbline 207
	cp R22,R10
	brsh X20
	xjmp L77
X20:
	.dbline 219
; 			  }//end of for(i=0;i<j;i++)
; 			   if(rej == 1)
	cpi R20,1
	brne L84
	.dbline 220
; 			   {
	.dbline 221
; 			    OutBuffer [4] = LCP_CONFIG_REJECT;
	ldi R24,4
	sts _OutBuffer+4,R24
	.dbline 222
; 			    ProcPPPSend ((BYTE *)OutBuffer, OutBuffer[7] + 6);	
	lds R18,_OutBuffer+7
	subi R18,250    ; addi 6
	ldi R16,<_OutBuffer
	ldi R17,>_OutBuffer
	xcall _ProcPPPSend
	.dbline 223
; 				return;
	xjmp L62
L84:
	.dbline 226
; 			   }//end of if(rej == 1)
; 			   
; 			   for(i=0;i<j;i++)
	clr R22
	xjmp L91
L88:
	.dbline 227
; 			   {
	.dbline 228
; 				 if(temp_buffer1[i]==LCP_OPT_MRU)
	movw R24,R28
	adiw R24,42
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,1
	breq X21
	xjmp L92
X21:
	.dbline 229
; 				 {
	.dbline 231
; 				  
; 				  if(((((WORD)InBuffer[temp_buffer2[i]+2])<<8)+InBuffer [temp_buffer2[i]+3])>MRU)
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	movw R30,R2
	adiw R30,3
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	movw R30,R2
	adiw R30,2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	mov R3,R2
	mov R2,R4
	lds R4,_MRU
	lds R5,_MRU+1
	cp R4,R2
	cpc R5,R3
	brlo X22
	xjmp L94
X22:
	.dbline 232
; 				  {
	.dbline 233
; 				  Move (&InBuffer[temp_buffer2[i]],&OutBuffer[length1],InBuffer[temp_buffer2[i]+1]);
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	movw R30,R2
	adiw R30,1
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	clr R5
	std y+1,R5
	std y+0,R4
	ldi R24,<_OutBuffer
	ldi R25,>_OutBuffer
	ldd R18,y+62
	ldd R19,y+63
	add R18,R24
	adc R19,R25
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	movw R16,R2
	add R16,R24
	adc R17,R25
	xcall _Move
	.dbline 234
; 			          OutBuffer[7]+=InBuffer[temp_buffer2[i]+1];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	lds R3,_OutBuffer+7
	add R3,R2
	sts _OutBuffer+7,R3
	.dbline 235
; 				  OutBuffer[length1+2]=MRU>>8;
	ldi R24,<_OutBuffer
	ldi R25,>_OutBuffer
	ldd R30,y+62
	ldd R31,y+63
	adiw R30,2
	add R30,R24
	adc R31,R25
	lds R2,_MRU
	lds R3,_MRU+1
	mov R2,R3
	clr R3
	std z+0,R2
	.dbline 236
; 				  OutBuffer[length1+3]=MRU;
	ldd R30,y+62
	ldd R31,y+63
	adiw R30,3
	add R30,R24
	adc R31,R25
	lds R2,_MRU
	lds R3,_MRU+1
	std z+0,R2
	.dbline 237
; 				  length1+=InBuffer[temp_buffer2[i]+1];   
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	ldd R0,y+62
	ldd R1,y+63
	add R0,R2
	adc R1,R3
	std y+63,R1
	std y+62,R0
	.dbline 238
; 				  nak=1;
	clr R14
	inc R14
	.dbline 239
; 				  }
L94:
	.dbline 241
; 				  
; 				 }
L92:
	.dbline 242
; 				 if(temp_buffer1[i]==LCP_OPT_ASYNC_MAP)
	movw R24,R28
	adiw R24,42
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,2
	breq X23
	xjmp L97
X23:
	.dbline 243
; 				 {
	.dbline 244
; 				  if((InBuffer[temp_buffer2[i]+2]!=0x00)||
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	movw R30,R2
	adiw R30,2
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	tst R4
	brne L103
	movw R30,R2
	adiw R30,3
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	tst R4
	brne L103
	movw R30,R2
	adiw R30,4
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	tst R4
	brne L103
	movw R30,R2
	adiw R30,5
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne X24
	xjmp L99
X24:
L103:
	.dbline 249
; 				  (InBuffer[temp_buffer2[i]+3]!=0x00)||
; 				  (InBuffer[temp_buffer2[i]+4]!=0x00)||
; 				  (InBuffer[temp_buffer2[i]+5]!=0x00)
; 				  )
; 				  {
	.dbline 250
; 				  Move (&InBuffer[temp_buffer2[i]],&OutBuffer[length1],InBuffer[temp_buffer2[i]+1]);
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	movw R30,R2
	adiw R30,1
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	clr R5
	std y+1,R5
	std y+0,R4
	ldi R24,<_OutBuffer
	ldi R25,>_OutBuffer
	ldd R18,y+62
	ldd R19,y+63
	add R18,R24
	adc R19,R25
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	movw R16,R2
	add R16,R24
	adc R17,R25
	xcall _Move
	.dbline 251
; 			          OutBuffer[7]+=InBuffer[temp_buffer2[i]+1];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	lds R3,_OutBuffer+7
	add R3,R2
	sts _OutBuffer+7,R3
	.dbline 252
; 				  OutBuffer[length1+2]=0x00;
	ldi R24,<_OutBuffer
	ldi R25,>_OutBuffer
	ldd R30,y+62
	ldd R31,y+63
	adiw R30,2
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 253
; 				  OutBuffer[length1+3]=0x00;
	ldd R30,y+62
	ldd R31,y+63
	adiw R30,3
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 254
; 				  OutBuffer[length1+4]=0x00;
	ldd R30,y+62
	ldd R31,y+63
	adiw R30,4
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 255
; 				  OutBuffer[length1+5]=0x00;
	ldd R30,y+62
	ldd R31,y+63
	adiw R30,5
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 256
; 				  length1+=InBuffer[temp_buffer2[i]+1];   
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,1
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	ldd R0,y+62
	ldd R1,y+63
	add R0,R2
	adc R1,R3
	std y+63,R1
	std y+62,R0
	.dbline 257
; 				  nak=1;
	clr R14
	inc R14
	.dbline 258
; 				 }//end of if((InBuffer[temp_buffer2[i]+2]!==0x00)||...
L99:
	.dbline 259
; 				 }//end of if(temp_buffer1[i]==02)
L97:
	.dbline 260
L89:
	.dbline 226
	inc R22
L91:
	.dbline 226
	cp R22,R10
	brsh X25
	xjmp L88
X25:
	.dbline 261
; 				 }//end of for(i=0;i<j;i++)
; 				 if(nak==1)
	mov R24,R14
	cpi R24,1
	brne L105
	.dbline 262
; 			      {
	.dbline 263
; 			       OutBuffer [4] = LCP_CONFIG_NAK;
	ldi R24,3
	sts _OutBuffer+4,R24
	.dbline 264
; 			       ProcPPPSend ((BYTE *)OutBuffer, OutBuffer[7] + 6);	
	lds R18,_OutBuffer+7
	subi R18,250    ; addi 6
	ldi R16,<_OutBuffer
	ldi R17,>_OutBuffer
	xcall _ProcPPPSend
	.dbline 265
; 				   return;
	xjmp L62
L105:
	.dbline 268
; 			      } 
; 			      
; 			 for(i=0;i<j;i++)
	clr R22
	xjmp L112
L109:
	.dbline 269
; 			  {
	.dbline 270
; 			   if((temp_buffer1[i]==LCP_OPT_MAGIC))
	movw R24,R28
	adiw R24,42
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,5
	breq X26
	xjmp L113
X26:
	.dbline 271
; 			    {
	.dbline 272
; 			     remote_magic_num[0]=InBuffer[temp_buffer2[i]+2];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,2
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _remote_magic_num,R2
	.dbline 273
; 			     remote_magic_num[1]=InBuffer[temp_buffer2[i]+3];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,3
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _remote_magic_num+1,R2
	.dbline 274
; 			     remote_magic_num[2]=InBuffer[temp_buffer2[i]+4];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,4
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _remote_magic_num+2,R2
	.dbline 275
; 	                     remote_magic_num[3]=InBuffer[temp_buffer2[i]+5];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	movw R24,R28
	adiw R24,2
	add R30,R24
	adc R31,R25
	push R26
	push R27
	ldd R26,z+0
	ldd R27,z+1
	movw R30,R26
	pop R27
	pop R26
	adiw R30,5
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _remote_magic_num+3,R2
	.dbline 276
; 			    }
L113:
	.dbline 277
L110:
	.dbline 268
	inc R22
L112:
	.dbline 268
	cp R22,R10
	brsh X27
	xjmp L109
X27:
	.dbline 279
; 			  }
; 				 
; 			 Move (InBuffer, OutBuffer, InBuffer[7]+4);
	lds R24,_InBuffer+7
	clr R25
	adiw R24,4
	std y+1,R25
	std y+0,R24
	ldi R18,<_OutBuffer
	ldi R19,>_OutBuffer
	ldi R16,<_InBuffer
	ldi R17,>_InBuffer
	xcall _Move
	.dbline 280
; 			 OutBuffer [4] =  LCP_CONFIG_ACK;
	ldi R24,2
	sts _OutBuffer+4,R24
	.dbline 281
; 			 ProcPPPSend ((BYTE *)OutBuffer, OutBuffer[7] + 6);		
	lds R18,_OutBuffer+7
	subi R18,250    ; addi 6
	ldi R16,<_OutBuffer
	ldi R17,>_OutBuffer
	xcall _ProcPPPSend
	.dbline 282
;         break;
	xjmp L62
L122:
	.dbline 287
	.dbline 288
	ldi R24,<_InBuffer
	ldi R25,>_InBuffer
	ldd R30,y+62
	ldd R31,y+63
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	movw R24,R28
	adiw R24,42
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 289
	ldi R24,2
	mul R24,R10

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -