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

📄 rtl8019.lis

📁 uIP是免费的TCP/IP协议栈,我们将它移植到我们的AVR以太网开发板中
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00DA           ;       // clear the packet received interrupt flag
 00DA           ;       rtl8019Write(ISR, (1<<ISR_PRX));
 00DA                   .dbline 400
 00DA           ;       
 00DA           ;       // the boundary pointer is invalid, reset the contents of the buffer and exit
 00DA           ;       if( (bnry >= RXSTOP_INIT) || (bnry < RXSTART_INIT) )
 00DA 8C2D              mov R24,R12
 00DC 8036              cpi R24,96
 00DE 10F4              brsh L67
 00E0 8634              cpi R24,70
 00E2 78F4              brsh L65
 00E4           L67:
 00E4                   .dbline 401
 00E4           ;       {
 00E4           L68:
 00E4                   .dbline 402
 00E4                   .dbline 402
 00E4 86E4              ldi R24,70
 00E6 809300C3          sts 49920,R24
 00EA                   .dbline 402
 00EA           L69:
 00EA                   .dbline 402
 00EA           ;               rtl8019Write(BNRY, RXSTART_INIT);
 00EA           L71:
 00EA                   .dbline 403
 00EA                   .dbline 403
 00EA 82E6              ldi R24,98
 00EC 809300C0          sts 49152,R24
 00F0                   .dbline 403
 00F0           L72:
 00F0                   .dbline 403
 00F0           ;               rtl8019Write(CR, 0x62);
 00F0           L74:
 00F0                   .dbline 404
 00F0                   .dbline 404
 00F0 86E4              ldi R24,70
 00F2 809300C7          sts 50944,R24
 00F6                   .dbline 404
 00F6           L75:
 00F6                   .dbline 404
 00F6           ;               rtl8019Write(CURR, RXSTART_INIT);
 00F6           L77:
 00F6                   .dbline 405
 00F6                   .dbline 405
 00F6 82E2              ldi R24,34
 00F8 809300C0          sts 49152,R24
 00FC                   .dbline 405
 00FC           L78:
 00FC                   .dbline 405
 00FC           ;               rtl8019Write(CR, 0x22);
 00FC                   .dbline 407
 00FC           ;               
 00FC           ;               return 0;
 00FC 0027              clr R16
 00FE 1127              clr R17
 0100 47C0              xjmp L53
 0102           L65:
 0102           L80:
 0102                   .dbline 411
 0102                   .dbline 411
 0102 84E0              ldi R24,4
 0104 809300CA          sts 51712,R24
 0108                   .dbline 411
 0108           L81:
 0108                   .dbline 411
 0108           ;       }
 0108           ; 
 0108           ;       // initiate DMA to transfer the RTL8019 packet header
 0108           ;     rtl8019Write(RBCR0, 4);
 0108           L83:
 0108                   .dbline 412
 0108                   .dbline 412
 0108 2224              clr R2
 010A 209200CB          sts 51968,R2
 010E                   .dbline 412
 010E           L84:
 010E                   .dbline 412
 010E           ;     rtl8019Write(RBCR1, 0);
 010E           L86:
 010E                   .dbline 413
 010E                   .dbline 413
 010E 2224              clr R2
 0110 209200C8          sts 51200,R2
 0114                   .dbline 413
 0114           L87:
 0114                   .dbline 413
 0114           ;     rtl8019Write(RSAR0, 0);
 0114           L89:
 0114                   .dbline 414
 0114                   .dbline 414
 0114 C09200C9          sts 51456,R12
 0118                   .dbline 414
 0118           L90:
 0118                   .dbline 414
 0118           ;     rtl8019Write(RSAR1, bnry);
 0118           L92:
 0118                   .dbline 415
 0118                   .dbline 415
 0118 8AE0              ldi R24,10
 011A 809300C0          sts 49152,R24
 011E                   .dbline 415
 011E           L93:
 011E                   .dbline 415
 011E           ;     rtl8019Write(CR, 0x0A);
 011E                   .dbline 416
 011E           ;       for(i=0;i<4;i++)
 011E AA24              clr R10
 0120 09C0              xjmp L98
 0122           L95:
 0122                   .dbline 417
 0122 CE01              movw R24,R28
 0124 EA2D              mov R30,R10
 0126 FF27              clr R31
 0128 E80F              add R30,R24
 012A F91F              adc R31,R25
 012C 209000D0          lds R2,53248
 0130 2082              std z+0,R2
 0132           L96:
 0132                   .dbline 416
 0132 A394              inc R10
 0134           L98:
 0134                   .dbline 416
 0134 8A2D              mov R24,R10
 0136 8430              cpi R24,4
 0138 A0F3              brlo L95
 013A           L99:
 013A                   .dbline 420
 013A                   .dbline 420
 013A 82E2              ldi R24,34
 013C 809300C0          sts 49152,R24
 0140                   .dbline 420
 0140           L100:
 0140                   .dbline 420
 0140           ;               pageheader[i] = rtl8019Read(RDMAPORT);
 0140           ;       
 0140           ;       // end the DMA operation
 0140           ;     rtl8019Write(CR, 0x22);
 0140                   .dbline 421
 0140           ;     for(i = 0; i <= 20; i++)
 0140 AA24              clr R10
 0142 06C0              xjmp L105
 0144           L102:
 0144                   .dbline 422
 0144           ;         if(rtl8019Read(ISR) & 1<<6)
 0144 209000C7          lds R2,50944
 0148 26FE              sbrs R2,6
 014A 01C0              rjmp L106
 014C                   .dbline 423
 014C           ;             break;
 014C 04C0              xjmp L104
 014E           L106:
 014E           L103:
 014E                   .dbline 421
 014E A394              inc R10
 0150           L105:
 0150                   .dbline 421
 0150 84E1              ldi R24,20
 0152 8A15              cp R24,R10
 0154 B8F7              brsh L102
 0156           L104:
 0156           L108:
 0156                   .dbline 424
 0156                   .dbline 424
 0156 80E4              ldi R24,64
 0158 809300C7          sts 50944,R24
 015C                   .dbline 424
 015C           L109:
 015C                   .dbline 424
 015C           ;     rtl8019Write(ISR, 1<<6);
 015C                   .dbline 427
 015C           ; 
 015C           ;       
 015C           ;       rxlen = (pageheader[enetpacketLenH]<<8) + pageheader[enetpacketLenL];
 015C 2A80              ldd R2,y+2
 015E 3B80              ldd R3,y+3
 0160 B32C              mov R11,R3
 0162 A22C              mov R10,R2
 0164                   .dbline 428
 0164           ;       nextPage = pageheader[nextblock_ptr] ;
 0164 2980              ldd R2,y+1
 0166 20920200          sts _nextPage,R2
 016A                   .dbline 430
 016A           ;       
 016A           ;       currentRetreiveAddress = (bnry<<8) + 4;
 016A 84E0              ldi R24,4
 016C 3C2C              mov R3,R12
 016E 282E              mov R2,R24
 0170 30920100          sts _currentRetreiveAddress+1,R3
 0174 20920000          sts _currentRetreiveAddress,R2
 0178                   .dbline 433
 0178           ;       
 0178           ;       // if the nextPage pointer is invalid, the packet is not ready yet - exit
 0178           ;       if( (nextPage >= RXSTOP_INIT) || (nextPage < RXSTART_INIT) )
 0178 80910200          lds R24,_nextPage
 017C 8036              cpi R24,96
 017E 10F4              brsh L116
 0180 8634              cpi R24,70
 0182 18F4              brsh L114
 0184           L116:
 0184                   .dbline 434
 0184           ;               return 0;
 0184 0027              clr R16
 0186 1127              clr R17
 0188 03C0              xjmp L53
 018A           L114:
 018A                   .dbline 436
 018A           ;     
 018A           ;     return rxlen-4;
 018A 8501              movw R16,R10
 018C 0450              subi R16,4
 018E 1040              sbci R17,0
 0190                   .dbline -2
 0190           L53:
 0190 2496              adiw R28,4
 0192 0E940000          xcall pop_gset4x
 0196                   .dbline 0 ; func end
 0196 0895              ret
 0198                   .dbsym r rxlen 10 i
 0198                   .dbsym l pageheader 0 A[4:4]c
 0198                   .dbsym r bnry 12 c
 0198                   .dbsym r i 10 c
 0198                   .dbend
 0198                   .dbfunc e rtl8019RetreivePacketData _rtl8019RetreivePacketData fV
 0198           ;              i -> R10,R11
 0198           ;         length -> R18,R19
 0198           ;    localBuffer -> R16,R17
                        .even
 0198           _rtl8019RetreivePacketData::
 0198 0E940000          xcall push_gset3x
 019C                   .dbline -1
 019C                   .dbline 441
 019C           ; }
 019C           ; 
 019C           ; 
 019C           ; void rtl8019RetreivePacketData(unsigned char * localBuffer, unsigned int length)
 019C           ; {
 019C           L118:
 019C                   .dbline 445
 019C                   .dbline 445
 019C 209300CA          sts 51712,R18
 01A0                   .dbline 445
 01A0           L119:
 01A0                   .dbline 445
 01A0           ;       unsigned int i;
 01A0           ;       
 01A0           ;       // initiate DMA to transfer the data
 01A0           ;     rtl8019Write(RBCR0, (unsigned char)length);
 01A0           L121:
 01A0                   .dbline 446
 01A0                   .dbline 446
 01A0 1901              movw R2,R18
 01A2 232C              mov R2,R3
 01A4 3324              clr R3
 01A6 209200CB          sts 51968,R2
 01AA                   .dbline 446
 01AA           L122:
 01AA                   .dbline 446
 01AA           ;     rtl8019Write(RBCR1, (unsigned char)(length>>8));
 01AA           L124:
 01AA                   .dbline 447
 01AA                   .dbline 447
 01AA 20900000          lds R2,_currentRetreiveAddress
 01AE 30900100          lds R3,_currentRetreiveAddress+1
 01B2 209200C8          sts 51200,R2
 01B6                   .dbline 447
 01B6           L125:
 01B6                   .dbline 447
 01B6           ;     rtl8019Write(RSAR0, (unsigned char)currentRetreiveAddress);
 01B6           L127:
 01B6                   .dbline 448
 01B6                   .dbline 448
 01B6 20900000          lds R2,_currentRetreiveAddress
 01BA 30900100          lds R3,_currentRetreiveAddress+1
 01BE 232C              mov R2,R3
 01C0 3324              clr R3
 01C2 209200C9          sts 51456,R2
 01C6                   .dbline 448
 01C6           L128:
 01C6                   .dbline 448
 01C6           ;     rtl8019Write(RSAR1, (unsigned char)(currentRetreiveAddress>>8));
 01C6           L130:
 01C6                   .dbline 449
 01C6                   .dbline 449
 01C6 8AE0              ldi R24,10
 01C8 809300C0          sts 49152,R24
 01CC                   .dbline 449
 01CC           L131:
 01CC                   .dbline 449
 01CC           ;     rtl8019Write(CR, 0x0A);
 01CC                   .dbline 450
 01CC           ;       for(i=0;i<length;i++)
 01CC AA24              clr R10
 01CE BB24              clr R11
 01D0 09C0              xjmp L136
 01D2           L133:
 01D2                   .dbline 451
 01D2 F501              movw R30,R10
 01D4 E00F              add R30,R16
 01D6 F11F              adc R31,R17
 01D8 209000D0          lds R2,53248
 01DC 2082              std z+0,R2
 01DE           L134:
 01DE                   .dbline 450
 01DE C501              movw R24,R10
 01E0 0196              adiw R24,1
 01E2 5C01              movw R10,R24
 01E4           L136:
 01E4                   .dbline 450
 01E4 A216              cp R10,R18
 01E6 B306              cpc R11,R19
 01E8 A0F3              brlo L133
 01EA           L137:
 01EA                   .dbline 454
 01EA                   .dbline 454
 01EA 82E2              ldi R24,34
 01EC 809300C0          sts 49152,R24
 01F0                   .dbline 454
 01F0           L138:
 01F0                   .dbline 454
 01F0           ;               localBuffer[i] = rtl8019Read(RDMAPORT);
 01F0           ; 
 01F0           ;       // end the DMA operation
 01F0           ;     rtl8019Write(CR, 0x22);
 01F0                   .dbline 455
 01F0           ;     for(i = 0; i <= 20; i++)
 01F0 AA24              clr R10

⌨️ 快捷键说明

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