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

📄 ppp.lst

📁 在串口上PPP拨号上网的源程序(实现PPP协议栈)
💻 LST
📖 第 1 页 / 共 5 页
字号:
    08CB ADFF      LDD	R31,Y+63
    08CC 0FE8      ADD	R30,R24
    08CD 1FF9      ADC	R31,R25
    08CE 8020      LDD	R2,Z+0
    08CF 01CE      MOVW	R24,R28
    08D0 968A      ADIW	R24,0x2A
    08D1 2DEA      MOV	R30,R10
    08D2 27FF      CLR	R31
    08D3 0FE8      ADD	R30,R24
    08D4 1FF9      ADC	R31,R25
    08D5 8220      STD	Z+0,R2
(0289) 				temp_buffer2[j]=length1;
    08D6 E082      LDI	R24,2
    08D7 9D8A      MUL	R24,R10
    08D8 01F0      MOVW	R30,R0
    08D9 01CE      MOVW	R24,R28
    08DA 9602      ADIW	R24,2
    08DB 0FE8      ADD	R30,R24
    08DC 1FF9      ADC	R31,R25
    08DD AC0E      LDD	R0,Y+62
    08DE AC1F      LDD	R1,Y+63
    08DF 8211      STD	Z+1,R1
    08E0 8200      STD	Z+0,R0
(0290) 				length0-=InBuffer[length1+1];
    08E1 EA87      LDI	R24,0xA7
    08E2 E09A      LDI	R25,0xA
    08E3 01F0      MOVW	R30,R0
    08E4 9631      ADIW	R30,1
    08E5 0FE8      ADD	R30,R24
    08E6 1FF9      ADC	R31,R25
    08E7 8020      LDD	R2,Z+0
    08E8 2433      CLR	R3
    08E9 01FE      MOVW	R30,R28
    08EA 5CE0      SUBI	R30,0xC0
    08EB 4FFF      SBCI	R31,0xFF
    08EC 8000      LDD	R0,Z+0
    08ED 8011      LDD	R1,Z+1
    08EE 1802      SUB	R0,R2
    08EF 0813      SBC	R1,R3
    08F0 01FE      MOVW	R30,R28
    08F1 5CE0      SUBI	R30,0xC0
    08F2 4FFF      SBCI	R31,0xFF
    08F3 8211      STD	Z+1,R1
    08F4 8200      STD	Z+0,R0
(0291) 				length1+=InBuffer[length1+1];
    08F5 ADEE      LDD	R30,Y+62
    08F6 ADFF      LDD	R31,Y+63
    08F7 9631      ADIW	R30,1
    08F8 0FE8      ADD	R30,R24
    08F9 1FF9      ADC	R31,R25
    08FA 8020      LDD	R2,Z+0
    08FB 2433      CLR	R3
    08FC AC0E      LDD	R0,Y+62
    08FD AC1F      LDD	R1,Y+63
    08FE 0C02      ADD	R0,R2
    08FF 1C13      ADC	R1,R3
    0900 AE1F      STD	Y+63,R1
    0901 AE0E      STD	Y+62,R0
(0292) 				j++;
    0902 94A3      INC	R10
    0903 01FE      MOVW	R30,R28
    0904 5CE0      SUBI	R30,0xC0
    0905 4FFF      SBCI	R31,0xFF
    0906 8000      LDD	R0,Z+0
    0907 8011      LDD	R1,Z+1
    0908 2000      TST	R0
    0909 F009      BEQ	0x090B
    090A CFBD      RJMP	0x08C8
    090B 2011      TST	R1
    090C F009      BEQ	0x090E
    090D CFBA      RJMP	0x08C8
(0293) 			  }//end of while(length0)
(0294) 			  if((temp_buffer1[i]==LCP_OPT_MRU))
    090E 01CE      MOVW	R24,R28
    090F 968A      ADIW	R24,0x2A
    0910 2FE6      MOV	R30,R22
    0911 27FF      CLR	R31
    0912 0FE8      ADD	R30,R24
    0913 1FF9      ADC	R31,R25
    0914 8180      LDD	R24,Z+0
    0915 3081      CPI	R24,1
    0916 F4D9      BNE	0x0932
(0295) 			    {
(0296) 				 MRU=((((WORD)InBuffer[temp_buffer2[i]+2])<<8)+InBuffer [temp_buffer2[i]+3]);
    0917 E082      LDI	R24,2
    0918 9F86      MUL	R24,R22
    0919 01F0      MOVW	R30,R0
    091A 01CE      MOVW	R24,R28
    091B 9602      ADIW	R24,2
    091C 0FE8      ADD	R30,R24
    091D 1FF9      ADC	R31,R25
    091E 8020      LDD	R2,Z+0
    091F 8031      LDD	R3,Z+1
    0920 EA87      LDI	R24,0xA7
    0921 E09A      LDI	R25,0xA
    0922 01F1      MOVW	R30,R2
    0923 9633      ADIW	R30,3
    0924 0FE8      ADD	R30,R24
    0925 1FF9      ADC	R31,R25
    0926 8040      LDD	R4,Z+0
    0927 01F1      MOVW	R30,R2
    0928 9632      ADIW	R30,2
    0929 0FE8      ADD	R30,R24
    092A 1FF9      ADC	R31,R25
    092B 8020      LDD	R2,Z+0
    092C 2C32      MOV	R3,R2
    092D 2C24      MOV	R2,R4
    092E 92300130  STS	0x130,R3
    0930 9220012F  STS	0x12F,R2
(0297) 				}
(0298) 			 IPAssignPacket();
    0932 940E0B66  CALL	_IPAssignPacket
(0299) 			 		
(0300) 		break;
    0934 C02A      RJMP	0x095F
(0301) 
(0302) 		//++++++++++++++++++++++++++++++++++++++++++++++++++++
(0303) 		case LCP_CONFIG_NAK:	
(0304) 		           local_magic_num[0]=InBuffer[10];
    0935 90200AB1  LDS	R2,0xAB1
    0937 92200123  STS	0x123,R2
(0305) 			       local_magic_num[1]=InBuffer[11];
    0939 90200AB2  LDS	R2,0xAB2
    093B 92200124  STS	0x124,R2
(0306) 			       local_magic_num[2]=InBuffer[12];
    093D 90200AB3  LDS	R2,0xAB3
    093F 92200125  STS	0x125,R2
(0307) 	               local_magic_num[3]=InBuffer[13];
    0941 90200AB4  LDS	R2,0xAB4
    0943 92200126  STS	0x126,R2
(0308) 			   Move (InBuffer, OutBuffer, InBuffer[7]+4);
    0945 91800AAE  LDS	R24,0xAAE
    0947 2799      CLR	R25
    0948 9604      ADIW	R24,4
    0949 8399      STD	Y+1,R25
    094A 8388      STD	Y+0,R24
    094B EF26      LDI	R18,0xF6
    094C E035      LDI	R19,5
    094D EA07      LDI	R16,0xA7
    094E E01A      LDI	R17,0xA
    094F DB10      RCALL	_Move
(0309) 			   OutBuffer[4]=LCP_CONFIG_REQUEST;
    0950 E081      LDI	R24,1
    0951 938005FA  STS	0x5FA,R24
(0310) 			   ProcPPPSend ((BYTE *)OutBuffer, OutBuffer[7] + 6);
    0953 912005FD  LDS	R18,0x5FD
    0955 5F2A      SUBI	R18,0xFA
    0956 EF06      LDI	R16,0xF6
    0957 E015      LDI	R17,5
    0958 DB7A      RCALL	_ProcPPPSend
(0311) 		break;
    0959 C005      RJMP	0x095F
(0312) 
(0313) 		//++++++++++++++++++++++++++++++++++++++++++++++++++++
(0314) 		case LCP_CONFIG_REJECT:
(0315) 		break;
(0316) 		
(0317) 		//++++++++++++++++++++++++++++++++++++++++++++++++++++
(0318) 		case LCP_TERMINATE_ACK:			// Terminate ACK!
(0319) 			PPPStatus &= ~LinkOn;
    095A 9180012B  LDS	R24,0x12B
    095C 7D8F      ANDI	R24,0xDF
    095D 9380012B  STS	0x12B,R24
(0320) 		break;
(0321) 	}
(0322) 	return;
    095F 96EF      ADIW	R28,0x3F
    0960 9623      ADIW	R28,3
    0961 940E0BFA  CALL	pop_gset5
    0963 9508      RET
_HandleIPCPOptions:
  nak                  --> R20
  rej                  --> R22
  temp_buffer1         --> Y+42
  temp_buffer2         --> Y+2
  length0              --> Y+62
  j                    --> R12
  i                    --> R14
  length1              --> R10
    0964 940E0C20  CALL	push_gset5
    0966 97EF      SBIW	R28,0x3F
    0967 9721      SBIW	R28,1
(0323) }
(0324) 
(0325) static void HandleIPCPOptions (void) {
(0326) 
(0327) WORD length0=0;
    0968 2400      CLR	R0
    0969 2411      CLR	R1
    096A AE1F      STD	Y+63,R1
    096B AE0E      STD	Y+62,R0
(0328) WORD length1=8;
    096C E088      LDI	R24,0x8
    096D E090      LDI	R25,0
    096E 015C      MOVW	R10,R24
(0329) BYTE rej=0;
    096F 2766      CLR	R22
(0330) BYTE nak=0;
    0970 2744      CLR	R20
(0331) BYTE i=0;
    0971 24EE      CLR	R14
(0332) BYTE j=0;
    0972 24CC      CLR	R12
(0333) BYTE temp_buffer1[20];
(0334) WORD temp_buffer2[20];
(0335) 
(0336) 	switch (InBuffer [4] ) {
    0973 91400AAB  LDS	R20,0xAAB
    0975 2755      CLR	R21
    0976 3041      CPI	R20,1
    0977 E0E0      LDI	R30,0
    0978 075E      CPC	R21,R30
    0979 F081      BEQ	0x098A
    097A 3042      CPI	R20,2
    097B E0E0      LDI	R30,0
    097C 075E      CPC	R21,R30
    097D F409      BNE	0x097F
    097E C0F0      RJMP	0x0A6F
    097F 3043      CPI	R20,3
    0980 E0E0      LDI	R30,0
    0981 075E      CPC	R21,R30
    0982 F409      BNE	0x0984
    0983 C100      RJMP	0x0A84
    0984 3044      CPI	R20,4
    0985 E0E0      LDI	R30,0
    0986 075E      CPC	R21,R30
    0987 F409      BNE	0x0989
    0988 C113      RJMP	0x0A9C
    0989 C112      RJMP	0x0A9C
(0337) 		case IPCP_CONFIG_REQUEST:
(0338) 		     length0=InBuffer[7]-4;
    098A 91800AAE  LDS	R24,0xAAE
    098C 2799      CLR	R25
    098D 9704      SBIW	R24,4
    098E AF9F      STD	Y+63,R25
    098F AF8E      STD	Y+62,R24
    0990 C02D      RJMP	0x09BE
(0339) 			  while(length0)
(0340) 			  {
(0341) 			    temp_buffer1[j]=InBuffer[length1];
    0991 EA87      LDI	R24,0xA7
    0992 E09A      LDI	R25,0xA
    0993 01F5      MOVW	R30,R10
    0994 0FE8      ADD	R30,R24
    0995 1FF9      ADC	R31,R25
    0996 8020      LDD	R2,Z+0
    0997 01CE      MOVW	R24,R28
    0998 968A      ADIW	R24,0x2A
    0999 2DEC      MOV	R30,R12
    099A 27FF      CLR	R31
    099B 0FE8      ADD	R30,R24
    099C 1FF9      ADC	R31,R25
    099D 8220      STD	Z+0,R2
(0342) 				temp_buffer2[j]=length1;
    099E E082      LDI	R24,2
    099F 9D8C      MUL	R24,R12
    09A0 01F0      MOVW	R30,R0
    09A1 01CE      MOVW	R24,R28
    09A2 9602      ADIW	R24,2
    09A3 0FE8      ADD	R30,R24
    09A4 1FF9      ADC	R31,R25
    09A5 82B1      STD	Z+1,R11
    09A6 82A0      STD	Z+0,R10
(0343) 				length0-=InBuffer[length1+1];
    09A7 EA87      LDI	R24,0xA7
    09A8 E09A      LDI	R25,0xA
    09A9 01F5      MOVW	R30,R10
    09AA 9631      ADIW	R30,1
    09AB 0FE8      ADD	R30,R24
    09AC 1FF9      ADC	R31,R25
    09AD 8020      LDD	R2,Z+0
    09AE 2433      CLR	R3
    09AF AC0E      LDD	R0,Y+62
    09B0 AC1F      LDD	R1,Y+63
    09B1 1802      SUB	R0,R2
    09B2 0813      SBC	R1,R3
    09B3 AE1F      STD	Y+63,R1
    09B4 AE0E      STD	Y+62,R0
(0344) 				length1+=InBuffer[length1+1];
    09B5 01F5      MOVW	R30,R10
    09B6 9631      ADIW	R30,1
    09B7 0FE8      ADD	R30,R24
    09B8 1FF9      ADC	R31,R25
    09B9 8020      LDD	R2,Z+0
    09BA 2433      CLR	R3
    09BB 0CA2      ADD	R10,R2
    09BC 1CB3      ADC	R11,R3
(0345) 				j++;
    09BD 94C3      INC	R12
    09BE AC0E      LDD	R0,Y+62
    09BF AC1F      LDD	R1,Y+63
    09C0 2000      TST	R0
    09C1 F009      BEQ	0x09C3
    09C2 CFCE      RJMP	0x0991
    09C3 2011      TST	R1
    09C4 F009      BEQ	0x09C6
    09C5 CFCB      RJMP	0x0991
(0346) 			  }//end of while(length0)
(0347) 			  Move (InBuffer, OutBuffer, 8);
    09C6 E088      LDI	R24,0x8
    09C7 E090      LDI	R25,0
    09C8 8399      STD	Y+1,R25
    09C9 8388      STD	Y+0,R24
    09CA EF26      LDI	R18,0xF6
    09CB E035      LDI	R19,5
    09CC EA07      LDI	R16,0xA7
    09CD E01A      LDI	R17,0xA
    09CE DA91      RCALL	_Move
(0348) 			  length1=8;
    09CF E088      LDI	R24,0x8
    09D0 E090      LDI	R25,0
    09D1 015C      MOVW	R10,R24
(0349) 			  OutBuffer[7]=4;
    09D2 E084      LDI	R24,4
    09D3 938005FD  STS	0x5FD,R24
(0350) 		     for(i=0;i<j;i++)
    09D5 24EE      CLR	R14
    09D6 C05A      RJMP	0x0A31
(0351) 			 {
(0352) 			   if(temp_buffer1[i]!=0x03)
    09D7 01CE      MOVW	R24,R28
    09D8 968A      ADIW	R24,0x2A
    09D9 2DEE      MOV	R30,R14
    09DA 27FF      CLR	R31
    09DB 0FE8      ADD	R30,R24
    09DC 1FF9      ADC	R31,R25
    09DD 8180      LDD	R24,Z+0
    09DE 3083      CPI	R24,3
    09DF F409      BNE	0x09E1
    09E0 C04F      RJMP	0x0A30
(0353) 			   {
(0354) 			    Move (&InBuffer[temp_buffer2[i]],&OutBuffer[length1],InBuffer[temp_buffer2[i]+1]);
    09E1 E082      LDI	R24,2
    09E2 9D8E      MUL	R24,R14
    09E3 01F0      MOVW	R30,R0
    09E4 01CE      MOVW	R24,R28
    09E5 9602      ADIW	R24,2
    09E6 0FE8      ADD	R30,R24
    09E7 1FF9      ADC	R31,R25
    09E8 8020      LDD	R2,Z+0
    09E9 8031      LDD	R3,Z+1
    09EA EA87      LDI	R24,0xA7
    09EB E09A      LDI	R25,0xA
    09EC 01F1      MOVW	R30,R2
    09ED 9631      ADIW	R30,1
    09EE 0FE8      ADD	R30,R24
    09EF 1FF9      ADC	R31,R25
    09F0 8040      LDD	R4,Z+0
    09F1 2455      CLR	R5
    09F2 8259      STD	Y+1,R5
    09F3 8248      STD	Y+0,R4
    09F4 EF86      LDI	R24,0xF6
    09F5 E095      LDI	R25,5
    09F6 0195      MOVW	R18,R10
    09F7 0F28      ADD	R18,R24
    09F8 1F39      ADC	R19,R25
    09F9 EA87      LDI	R24,0xA7
    09FA E09A      LDI	R25,0xA
    09FB 0181      MOVW	R16,R2
    09FC 0F08      ADD	R16,R24
    09FD 1F19      ADC	R17,R25
    09FE DA61      RCALL	_Move
(0355) 			    OutBuffer[7]+=InBuffer[temp_buffer2[i]+1];
    09FF E082      LDI	R24,2
    0A00 9D8E      MUL	R24,R14
    0A01 01F0      MOVW	R30,R0
    0A02 01CE      MOVW	R24,R28
    0A03 9602      ADIW	R24,2
    0A04 0FE8      ADD	R30,R24
    0A05 1FF9      ADC	R31,R25
    0A06 93AF      PUSH	R26
    0A07 93BF      PUSH	R27
    0A08 81A0      LDD	R26,Z+0
    0A09 81B1      LDD	R27,Z+1
    0A0A 01FD      MOVW	R30,R26
    0A0B 91BF      POP	R27
    0A0C 91AF      POP	R26
    0A0D 9631      ADIW	R30,1
    0A0E EA87      LDI	R24,0xA7
    0A0F E09A      LDI	R25,0xA
    0A10 0FE8      ADD	R30,R24
    0A11 1FF9      ADC	R31,R25
    0A12 8020      LDD	R2,Z+0
    0A13 903005FD  LDS	R3,0x5FD
    0A15 0C32      ADD	R3,R2
    0A16 923005FD  STS	0x5FD,R3
(0356) 				length1+=InBuffer[temp_buffer2[i]+1];    
    0A18 E082      LDI	R24,2
    0A19 9D8E      MUL	R24,R14
    0A1A 01F0      MOVW	R30,R0
    0A1B 01CE      MOVW	R24,R28
    0A1C 9602      ADIW	R24,2
    0A1D 0FE8      ADD	R30,R24
    0A1E 1FF9      ADC	R31,R25
    0A1F 93AF      PUSH	R26
    0A20 93BF      PUSH	R27
    0A21 81A0      LDD	R26,Z+0
    0A22 81B1      LDD	R27,Z+1
    0A23 01FD      MOVW	R30,R26
    0A24 91BF      POP	R27
    0A25 91AF      POP	R26
    0A26 9631      ADIW	R30,1
    0A27 EA87      LDI	R24,0xA7
    0A28 E09A      LDI	R25,0xA
    0A29 0FE8      ADD	R30,R24
    0A2A 1FF9      ADC	R31,R25
    0A2B 8020      LDD	R2,Z+0
    0A2C 2433      CLR	R3
    0A2D 0CA2      ADD	R10,R2
    0A2E 1CB3      ADC	R11

⌨️ 快捷键说明

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