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

📄 main.lis

📁 在串口上PPP拨号上网的源程序(实现PPP协议栈)
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0004           ; 
 0004           ; BYTE UART_BUFFER[PPP_BUFFER_SIZE+3];
 0004           ; extern BYTE *ptrBUFFER=UART_BUFFER;
 0004           ; static WORD MRU=PPP_BUFFER_SIZE;
 0004           ; extern BYTE PPPStatus;
 0004           ; extern UART_ptr;
 0004           ; static WORD j=0;
 0004           ; #pragma interrupt_handler uart_inter:31
 0004           ; void uart_inter(void)
 0004           ; {
 0004                   .dbline 22
 0004           ; static BYTE i=0;
 0004           ; UCSR1B&=~(1<<RXCIE1);
 0004 80919A00          lds R24,154
 0008 8F77              andi R24,127
 000A 80939A00          sts 154,R24
 000E                   .dbline 23
 000E           ;   i=getchar();
 000E 0E940000          xcall _getchar
 0012 00930E00          sts L2,R16
 0016                   .dbline 24
 0016           ;       if(j>(PPP_BUFFER_SIZE+3)) 
 0016 83EB              ldi R24,1203
 0018 94E0              ldi R25,4
 001A 20900C00          lds R2,_j
 001E 30900D00          lds R3,_j+1
 0022 8215              cp R24,R2
 0024 9305              cpc R25,R3
 0026 30F4              brsh L3
 0028                   .dbline 25
 0028           ;        {
 0028                   .dbline 26
 0028           ;        j=0;
 0028 2224              clr R2
 002A 3324              clr R3
 002C 30920D00          sts _j+1,R3
 0030 20920C00          sts _j,R2
 0034                   .dbline 27
 0034           ;        }
 0034           L3:
 0034                   .dbline 28
 0034           ;                UART_BUFFER[j]=i;
 0034 80E0              ldi R24,<_UART_BUFFER
 0036 90E0              ldi R25,>_UART_BUFFER
 0038 E0910C00          lds R30,_j
 003C F0910D00          lds R31,_j+1
 0040 E80F              add R30,R24
 0042 F91F              adc R31,R25
 0044 20900E00          lds R2,L2
 0048 2082              std z+0,R2
 004A                   .dbline 29
 004A           ;                j++;
 004A 80910C00          lds R24,_j
 004E 90910D00          lds R25,_j+1
 0052 0196              adiw R24,1
 0054 90930D00          sts _j+1,R25
 0058 80930C00          sts _j,R24
 005C                   .dbline 30
 005C           ; UCSR1B|=(1<<RXCIE1);
 005C 80919A00          lds R24,154
 0060 8068              ori R24,128
 0062 80939A00          sts 154,R24
 0066                   .dbline -2
 0066                   .dbline 31
 0066           ; }
 0066           L1:
 0066 0E940000          xcall pop_lset
 006A                   .dbline 0 ; func end
 006A 1895              reti
 006C                   .dbend
 006C                   .dbfunc e main _main fV
 006C           ;              i -> R20,R21
                        .even
 006C           _main::
 006C                   .dbline -1
 006C                   .dbline 34
 006C           ; 
 006C           ; void main (void)
 006C           ; {
 006C                   .dbline 36
 006C           ; WORD i;
 006C           ; uart_init();
 006C 0E940000          xcall _uart_init
 0070                   .dbline 37
 0070           ; PPPInit();
 0070 0E940000          xcall _PPPInit
 0074                   .dbline 38
 0074           ; modem ();
 0074 2ED0              xcall _modem
 0076                   .dbline 39
 0076           ; for(i=0;i<(PPP_BUFFER_SIZE+3);i++)
 0076 4427              clr R20
 0078 5527              clr R21
 007A 09C0              xjmp L9
 007C           L6:
 007C                   .dbline 40
 007C                   .dbline 41
 007C 80E0              ldi R24,<_UART_BUFFER
 007E 90E0              ldi R25,>_UART_BUFFER
 0080 FA01              movw R30,R20
 0082 E80F              add R30,R24
 0084 F91F              adc R31,R25
 0086 2224              clr R2
 0088 2082              std z+0,R2
 008A                   .dbline 42
 008A           L7:
 008A                   .dbline 39
 008A 4F5F              subi R20,255  ; offset = 1
 008C 5F4F              sbci R21,255
 008E           L9:
 008E                   .dbline 39
 008E 433B              cpi R20,179
 0090 E4E0              ldi R30,4
 0092 5E07              cpc R21,R30
 0094 98F3              brlo L6
 0096                   .dbline 43
 0096           ; {
 0096           ; UART_BUFFER[i]='\0';
 0096           ; }
 0096           ; j=0;
 0096 2224              clr R2
 0098 3324              clr R3
 009A 30920D00          sts _j+1,R3
 009E 20920C00          sts _j,R2
 00A2                   .dbline 44
 00A2           ; LCPREQPacket(MRU);
 00A2 00910A00          lds R16,_MRU
 00A6 10910B00          lds R17,_MRU+1
 00AA 0E940000          xcall _LCPREQPacket
 00AE 0FC0              xjmp L11
 00B0           L10:
 00B0                   .dbline 47
 00B0           ; 
 00B0           ; while(1)
 00B0           ; {
 00B0                   .dbline 48
 00B0           ; if(UART_BUFFER[UART_ptr]!='\0')
 00B0 80E0              ldi R24,<_UART_BUFFER
 00B2 90E0              ldi R25,>_UART_BUFFER
 00B4 E0910000          lds R30,_UART_ptr
 00B8 F0910100          lds R31,_UART_ptr+1
 00BC E80F              add R30,R24
 00BE F91F              adc R31,R25
 00C0 2080              ldd R2,z+0
 00C2 2220              tst R2
 00C4 11F0              breq L13
 00C6                   .dbline 49
 00C6           ; {
 00C6                   .dbline 50
 00C6           ; ProcPPPReceive ();
 00C6 0E940000          xcall _ProcPPPReceive
 00CA                   .dbline 51
 00CA           ; }
 00CA           L13:
 00CA                   .dbline 52
 00CA 0E940000          xcall _PPPEntry
 00CE                   .dbline 53
 00CE           L11:
 00CE                   .dbline 46
 00CE F0CF              xjmp L10
 00D0           X0:
 00D0                   .dbline -2
 00D0                   .dbline 54
 00D0           ; PPPEntry();
 00D0           ; }
 00D0           ; }
 00D0           L5:
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbsym r i 20 i
 00D2                   .dbend
 00D2                   .dbfunc e modem _modem fV
 00D2           ;              k -> R20
                        .even
 00D2           _modem::
 00D2 0E940000          xcall push_gset1
 00D6                   .dbline -1
 00D6                   .dbline 59
 00D6           ; 
 00D6           ; 
 00D6           ; 
 00D6           ; void modem (void)
 00D6           ; {
 00D6                   .dbline 60
 00D6           ;  BYTE k=1;
 00D6 41E0              ldi R20,1
 00D8 11C0              xjmp L17
 00DA           L16:
 00DA                   .dbline 62
 00DA           ;  while(k)
 00DA           ;  {
 00DA                   .dbline 63
 00DA           ;   putstr("CLIENT");
 00DA 00E0              ldi R16,<L19
 00DC 10E0              ldi R17,>L19
 00DE 0E940000          xcall _putstr
 00E2                   .dbline 64
 00E2           ;   delay_ms(100);
 00E2 04E6              ldi R16,100
 00E4 10E0              ldi R17,0
 00E6 20D0              xcall _delay_ms
 00E8                   .dbline 65
 00E8           ;   if(strstr(UART_BUFFER,"CLIENTSERVER") != NULL)
 00E8 20E0              ldi R18,<L22
 00EA 30E0              ldi R19,>L22
 00EC 00E0              ldi R16,<_UART_BUFFER
 00EE 10E0              ldi R17,>_UART_BUFFER
 00F0 0E940000          xcall _strstr
 00F4 0030              cpi R16,0
 00F6 0107              cpc R16,R17
 00F8 09F0              breq L20
 00FA           X1:
 00FA                   .dbline 66
 00FA           ;   {
 00FA                   .dbline 67
 00FA           ;    k=0;
 00FA 4427              clr R20
 00FC                   .dbline 68
 00FC           ;   }
 00FC           L20:
 00FC                   .dbline 69
 00FC           L17:
 00FC                   .dbline 61
 00FC 4423              tst R20
 00FE 69F7              brne L16
 0100                   .dbline -2
 0100                   .dbline 70
 0100           ;  } 
 0100           ; }
 0100           L15:
 0100 0E940000          xcall pop_gset1
 0104                   .dbline 0 ; func end
 0104 0895              ret
 0106                   .dbsym r k 20 c
 0106                   .dbend
 0106                   .dbfunc e delay_1ms _delay_1ms fV
 0106           ;              i -> R16,R17
                        .even
 0106           _delay_1ms::
 0106 0E940000          xcall push_gset2
 010A                   .dbline -1
 010A                   .dbline 73
 010A           ; 
 010A           ; void delay_1ms(void)
 010A           ; { unsigned int i;
 010A                   .dbline 74
 010A 01E0              ldi R16,1
 010C 10E0              ldi R17,0
 010E 02C0              xjmp L27
 0110           L24:
 0110                   .dbline 74
 0110           L25:
 0110                   .dbline 74
 0110 0F5F              subi R16,255  ; offset = 1
 0112 1F4F              sbci R17,255
 0114           L27:
 0114                   .dbline 74
 0114           ;  for(i=1;i<(unsigned int)(xtal*143-2);i++);
 0114 4EEF              ldi R20,254
 0116 5FE7              ldi R21,127
 0118 67ED              ldi R22,215
 011A 7EE3              ldi R23,62
 011C 0417              cp R16,R20
 011E 1507              cpc R17,R21
 0120 B8F3              brlo L24
 0122                   .dbline -2
 0122                   .dbline 75
 0122           ; }
 0122           L23:
 0122 0E940000          xcall pop_gset2
 0126                   .dbline 0 ; func end
 0126 0895              ret
 0128                   .dbsym r i 16 i
 0128                   .dbend
 0128                   .dbfunc e delay_ms _delay_ms fV
 0128           ;              i -> R20,R21
 0128           ;              n -> R22,R23
                        .even
 0128           _delay_ms::
 0128 0E940000          xcall push_gset2
 012C B801              movw R22,R16
 012E                   .dbline -1
 012E                   .dbline 77
 012E           ; void delay_ms(unsigned int n )
 012E           ; {
 012E                   .dbline 78
 012E           ;  unsigned int i=0;
 012E 4427              clr R20
 0130 5527              clr R21
 0132 03C0              xjmp L30
 0134           L29:
 0134                   .dbline 80
 0134                   .dbline 80
 0134 E8DF              xcall _delay_1ms
 0136                   .dbline 81
 0136 4F5F              subi R20,255  ; offset = 1
 0138 5F4F              sbci R21,255
 013A                   .dbline 82
 013A           L30:
 013A                   .dbline 79
 013A           ;    while(i<n)
 013A 4617              cp R20,R22
 013C 5707              cpc R21,R23
 013E D0F3              brlo L29
 0140                   .dbline -2
 0140                   .dbline 83
 0140           ;    {delay_1ms();
 0140           ;     i++;
 0140           ;    }
 0140           ; }
 0140           L28:
 0140 0E940000          xcall pop_gset2
 0144                   .dbline 0 ; func end
 0144 0895              ret
 0146                   .dbsym r i 20 i
 0146                   .dbsym r n 22 i
 0146                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile G:\sppp\main.c
 0000           _UART_BUFFER::
 0000                   .blkb 1203
 04B3                   .dbsym e UART_BUFFER _UART_BUFFER A[1203:1203]c
                        .area data(ram, con, rel)
 000F                   .dbfile G:\sppp\main.c
 000F           L22:
 000F                   .blkb 13
                        .area idata
 000F 434C49454E5453455256455200        .byte 'C,'L,'I,'E,'N,'T,'S,'E,'R,'V,'E,'R,0
                        .area data(ram, con, rel)
 001C                   .dbfile G:\sppp\main.c
 001C           L19:
 001C                   .blkb 7
                        .area idata
 001C 434C49454E5400    .byte 'C,'L,'I,'E,'N,'T,0
                        .area data(ram, con, rel)
 0023                   .dbfile G:\sppp\main.c

⌨️ 快捷键说明

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