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

📄 p16web.lst

📁 一种基于16位单片机的tcp/ip协议源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
0B74:  BCF    03,6
0B75:  CALL   2FA
....................     putnic_data(myeth, MACLEN); 
0B76:  MOVLW  00
0B77:  BSF    03,6
0B78:  MOVWF  3D
0B79:  MOVLW  2A
0B7A:  MOVWF  3C
0B7B:  MOVLW  06
0B7C:  MOVWF  3E
0B7D:  BCF    03,6
0B7E:  CALL   2FA
....................     swapw(nicin.eth.pcol);          
....................     putnic_data(&nicin.eth.pcol, 2); 
*
0B9A:  MOVLW  00
0B9B:  BSF    03,6
0B9C:  MOVWF  3D
0B9D:  MOVLW  42
0B9E:  MOVWF  3C
0B9F:  MOVLW  02
0BA0:  MOVWF  3E
0BA1:  BCF    03,6
0BA2:  CALL   2FA
....................     putnic_data(data, dlen); 
0BA3:  BSF    03,6
0BA4:  MOVF   39,W
0BA5:  MOVWF  3D
0BA6:  MOVF   38,W
0BA7:  MOVWF  3C
0BA8:  MOVF   3A,W
0BA9:  MOVWF  3E
0BAA:  BCF    03,6
0BAB:  CALL   2FA
0BAC:  RETLW  00
.................... } 
....................  
.................... /* Transmit the Ethernet frame */ 
.................... void xmit_ether(WORD dlen) 
.................... { 
....................     dlen += MACLEN+MACLEN+2; 
0BAD:  MOVLW  0E
0BAE:  BSF    03,6
0BAF:  ADDWF  38,F
0BB0:  MOVLW  00
0BB1:  BTFSC  03,0
0BB2:  ADDLW  01
0BB3:  ADDWF  39,F
0BB4:  BCF    03,6
....................     if (dlen < MINFRAME) 
0BB5:  BSF    03,6
0BB6:  MOVF   39,F
0BB7:  BTFSC  03,2
0BB8:  GOTO   3BB
0BB9:  BCF    03,6
0BBA:  GOTO   3C9
0BBB:  BCF    03,6
0BBC:  MOVLW  3C
0BBD:  BSF    03,6
0BBE:  SUBWF  38,W
0BBF:  BTFSS  03,0
0BC0:  GOTO   3C3
0BC1:  BCF    03,6
0BC2:  GOTO   3C9
0BC3:  BCF    03,6
....................         dlen = MINFRAME;            /* Constrain length */ 
0BC4:  BSF    03,6
0BC5:  CLRF   39
0BC6:  MOVLW  3C
0BC7:  MOVWF  38
0BC8:  BCF    03,6
....................     outnic(TBCR0, dlen);            /* Set Tx length regs */ 
0BC9:  MOVLW  05
0BCA:  BSF    03,6
0BCB:  MOVWF  40
0BCC:  MOVF   38,W
0BCD:  MOVWF  41
0BCE:  BCF    03,6
0BCF:  BCF    0A,3
0BD0:  CALL   6B5
0BD1:  BSF    0A,3
....................     outnic(TBCR1, dlen >> 8);                                   
0BD2:  BSF    03,6
0BD3:  MOVF   39,W
0BD4:  MOVWF  3A
0BD5:  CLRF   3B
0BD6:  MOVLW  06
0BD7:  MOVWF  40
0BD8:  MOVF   3A,W
0BD9:  MOVWF  41
0BDA:  BCF    03,6
0BDB:  BCF    0A,3
0BDC:  CALL   6B5
0BDD:  BSF    0A,3
....................     outnic(CMDR, 0x24);             /* Transmit the packet */ 
0BDE:  BSF    03,6
0BDF:  CLRF   40
0BE0:  MOVLW  24
0BE1:  MOVWF  41
0BE2:  BCF    03,6
0BE3:  BCF    0A,3
0BE4:  CALL   6B5
0BE5:  BSF    0A,3
0BE6:  RETLW  00
.................... } 
....................  
.................... /* Copy a block from NIC Rx to Tx buffers (not crossing page boundaries) */ 
.................... void copy_rx_tx(BYTE dest, BYTE srce, BYTE len) 
.................... {        
....................     BYTE b; 
....................      
....................     outnic(ISR, 0x40);                  /* Clear remote DMA interrupt flag */ 
*
1966:  MOVLW  07
1967:  MOVWF  40
1968:  MOVLW  40
1969:  MOVWF  41
196A:  BCF    03,6
196B:  BCF    0A,4
196C:  BCF    0A,3
196D:  CALL   6B5
196E:  BSF    0A,4
196F:  BSF    0A,3
....................     dest += sizeof(ETHERHEADER); 
1970:  MOVLW  0E
1971:  BSF    03,6
1972:  ADDWF  2D,F
....................     srce += sizeof(NICETHERHEADER); 
1973:  MOVLW  12
1974:  ADDWF  2E,F
1975:  BCF    03,6
....................     while (len--) 
1976:  BSF    03,6
1977:  MOVF   2F,W
1978:  DECF   2F,F
1979:  IORLW  00
197A:  BTFSS  03,2
197B:  GOTO   17E
197C:  BCF    03,6
197D:  GOTO   1BE
197E:  BCF    03,6
....................     { 
....................         outnic(RSAR0, srce); 
197F:  MOVLW  08
1980:  BSF    03,6
1981:  MOVWF  40
1982:  MOVF   2E,W
1983:  MOVWF  41
1984:  BCF    03,6
1985:  BCF    0A,4
1986:  BCF    0A,3
1987:  CALL   6B5
1988:  BSF    0A,4
1989:  BSF    0A,3
....................         outnic(RSAR1, curr_rx_page); 
198A:  MOVLW  09
198B:  BSF    03,6
198C:  MOVWF  40
198D:  BCF    03,6
198E:  MOVF   31,W
198F:  BSF    03,6
1990:  MOVWF  41
1991:  BCF    03,6
1992:  BCF    0A,4
1993:  BCF    0A,3
1994:  CALL   6B5
1995:  BSF    0A,4
1996:  BSF    0A,3
....................         b = getnic_byte(); 
1997:  BCF    0A,4
1998:  CALL   224
1999:  BSF    0A,4
199A:  MOVF   78,W
199B:  BSF    03,6
199C:  MOVWF  30
....................         outnic(RSAR0, dest); 
199D:  MOVLW  08
199E:  MOVWF  40
199F:  MOVF   2D,W
19A0:  MOVWF  41
19A1:  BCF    03,6
19A2:  BCF    0A,4
19A3:  BCF    0A,3
19A4:  CALL   6B5
19A5:  BSF    0A,4
19A6:  BSF    0A,3
....................         outnic(RSAR1, TXSTART); 
19A7:  MOVLW  09
19A8:  BSF    03,6
19A9:  MOVWF  40
19AA:  MOVLW  40
19AB:  MOVWF  41
19AC:  BCF    03,6
19AD:  BCF    0A,4
19AE:  BCF    0A,3
19AF:  CALL   6B5
19B0:  BSF    0A,4
19B1:  BSF    0A,3
....................         putnic_byte(b); 
19B2:  BSF    03,6
19B3:  MOVF   30,W
19B4:  MOVWF  3E
19B5:  BCF    03,6
19B6:  BCF    0A,4
19B7:  CALL   5B7
19B8:  BSF    0A,4
....................         srce++; 
19B9:  BSF    03,6
19BA:  INCF   2E,F
....................         dest++; 
19BB:  INCF   2D,F
....................     } 
19BC:  BCF    03,6
19BD:  GOTO   176
.................... } 
....................  
.................... /* Checksum the given number of bytes in the Rx NIC buffer */ 
.................... void check_rxbytes(BYTE oset, WORD len) 
.................... {        
....................     BYTE b; 
....................   
....................     outnic(ISR, 0x40);                  /* Clear remote DMA interrupt flag */ 
*
1B6E:  MOVLW  07
1B6F:  MOVWF  40
1B70:  MOVLW  40
1B71:  MOVWF  41
1B72:  BCF    03,6
1B73:  BCF    0A,4
1B74:  BCF    0A,3
1B75:  CALL   6B5
1B76:  BSF    0A,4
1B77:  BSF    0A,3
....................     outnic(RBCR0, len);                 /* Byte count */ 
1B78:  MOVLW  0A
1B79:  BSF    03,6
1B7A:  MOVWF  40
1B7B:  MOVF   32,W
1B7C:  MOVWF  41
1B7D:  BCF    03,6
1B7E:  BCF    0A,4
1B7F:  BCF    0A,3
1B80:  CALL   6B5
1B81:  BSF    0A,4
1B82:  BSF    0A,3
....................     outnic(RBCR1, len>>8); 
1B83:  BSF    03,6
1B84:  MOVF   33,W
1B85:  MOVWF  35
1B86:  CLRF   36
1B87:  MOVLW  0B
1B88:  MOVWF  40
1B89:  MOVF   35,W
1B8A:  MOVWF  41
1B8B:  BCF    03,6
1B8C:  BCF    0A,4
1B8D:  BCF    0A,3
1B8E:  CALL   6B5
1B8F:  BSF    0A,4
1B90:  BSF    0A,3
....................     outnic(CMDR, 0x0a);                 /* Start, DMA remote read */ 
1B91:  BSF    03,6
1B92:  CLRF   40
1B93:  MOVLW  0A
1B94:  MOVWF  41
1B95:  BCF    03,6
1B96:  BCF    0A,4
1B97:  BCF    0A,3
1B98:  CALL   6B5
1B99:  BSF    0A,4
1B9A:  BSF    0A,3
....................     while (len--)                       /* Get bytes */ 
1B9B:  BSF    03,6
1B9C:  MOVF   33,W
1B9D:  BCF    03,6
1B9E:  MOVWF  7A
1B9F:  BSF    03,6
1BA0:  MOVF   32,W
1BA1:  BTFSC  03,2
1BA2:  DECF   33,F
1BA3:  DECF   32,F
1BA4:  BCF    03,6
1BA5:  IORWF  7A,W
1BA6:  BTFSC  03,2
1BA7:  GOTO   3BB
....................     { 
....................         b = innic(DATAPORT); 
1BA8:  MOVLW  10
1BA9:  BSF    03,6
1BAA:  MOVWF  3F
1BAB:  BCF    03,6
1BAC:  BCF    0A,4
1BAD:  BCF    0A,3
1BAE:  CALL   6A2
1BAF:  BSF    0A,4
1BB0:  BSF    0A,3
1BB1:  MOVF   78,W
1BB2:  BSF    03,6
1BB3:  MOVWF  34
....................         check_byte(b); 
1BB4:  MOVF   34,W
1BB5:  MOVWF  3E
1BB6:  BCF    03,6
1BB7:  BCF    0A,4
1BB8:  CALL   249
1BB9:  BSF    0A,4
....................     } 
1BBA:  GOTO   39B
.................... }     
....................  
.................... /* Set the 'remote DMA' address in the NIC's RAM to be accessed */ 
.................... void setnic_addr(WORD addr) 
.................... { 
....................     outnic(ISR, 0x40);                  /* Clear remote DMA interrupt flag */ 
*
0863:  MOVLW  07
0864:  BSF    03,6
0865:  MOVWF  40
0866:  MOVLW  40
0867:  MOVWF  41
0868:  BCF    03,6
0869:  BCF    0A,3
086A:  CALL   6B5
086B:  BSF    0A,3
....................     outnic(RSAR0, addr&0xff);           /* Data addr */ 
086C:  BSF    03,6
086D:  MOVF   3D,W
086E:  ANDLW  00
086F:  MOVWF  3F
0870:  MOVF   3C,W
0871:  MOVWF  3E
0872:  MOVLW  08
0873:  MOVWF  40
0874:  MOVF   3E,W
0875:  MOVWF  41
0876:  BCF    03,6
0877:  BCF    0A,3
0878:  CALL   6B5
0879:  BSF    0A,3
....................     outnic(RSAR1, addr>>8); 
087A:  BSF    03,6
087B:  MOVF   3D,W
087C:  MOVWF  3E
087D:  CLRF   3F
087E:  MOVLW  09
087F:  MOVWF  40
0880:  MOVF   3E,W
0881:  MOVWF  41
0882:  BCF    03,6
0883:  BCF    0A,3
0884:  CALL   6B5
0885:  BSF    0A,3
0886:  RETLW  00
.................... } 
....................  
.................... /* Get the 'remote DMA' address in the NIC's RAM to be accessed */ 
.................... WORD getnic_addr(void) 
.................... {       
....................     WORD addr;     
....................      
....................     addr = innic(RSAR0) + ((WORD)innic(RSAR1) << 8); 
*
1B25:  MOVLW  08
1B26:  BSF    03,6
1B27:  MOVWF  3F
1B28:  BCF    03,6
1B29:  BCF    0A,4
1B2A:  BCF    0A,3
1B2B:  CALL   6A2
1B2C:  BSF    0A,4
1B2D:  BSF    0A,3
1B2E:  MOVF   78,W
1B2F:  BSF    03,6
1B30:  MOVWF  31
1B31:  MOVLW  09
1B32:  MOVWF  3F
1B33:  BCF    03,6
1B34:  BCF    0A,4
1B35:  BCF    0A,3
1B36:  CALL   6A2
1B37:  BSF    0A,4
1B38:  BSF    0A,3
1B39:  BSF    03,6
1B3A:  CLRF   33
1B3B:  BCF    03,6
1B3C:  MOVF   78,W
1B3D:  BSF    03,6
1B3E:  MOVWF  32
1B3F:  MOVF   32,W
1B40:  BCF    03,6
1B41:  MOVWF  7A
1B42:  CLRW
1B43:  BSF    03,6
1B44:  ADDWF  31,W
1B45:  MOVWF  2F
1B46:  BCF    03,6
1B47:  MOVF   7A,W
1B48:  BSF    03,6
1B49:  MOVWF  30
1B4A:  BTFSC  03,0
1B4B:  INCF   30,F
....................     return(addr); 
1B4C:  MOVF   2F,W
1B4D:  BCF    03,6
1B4E:  MOVWF  78
1B4F:  BSF    03,6
1B50:  MOVF   30,W
1B51:  BCF    03,6
1B52:  MOVWF  79
.................... } 
....................  
.................... /* Return a byte from the NIC RAM */ 
.................... BYTE getnic_byte(void) 
.................... { 
....................     BYTE b; 
....................      
....................     outnic(RBCR0, 1);                   /* Byte count */ 
*
0A24:  MOVLW  0A
0A25:  BSF    03,6
0A26:  MOVWF  40
0A27:  MOVLW  01
0A28:  MOVWF  41
0A29:  BCF    03,6
0A2A:  BCF    0A,3
0A2B:  CALL   6B5
0A2C:  BSF    0A,3
....................     outnic(RBCR1, 0); 
0A2D:  MOVLW  0B
0A2E:  BSF    03,6
0A2F:  MOVWF  40
0A30:  CLRF   41
0A31:  BCF    03,6
0A32:  BCF    0A,3
0A33:  CALL   6B5
0A34:  BSF    0A,3
....................     outnic(CMDR, 0x0a);                 /* Start, DMA remote read */ 
0A35:  BSF    03,6
0A36:  CLRF   40
0A37:  MOVLW  0A
0A38:  MOVWF  41
0A39:  BCF    03,6
0A3A:  BCF    0A,3
0A3B:  CALL   6B5
0A3C:  BSF    0A,3
....................     b = innic(DATAPORT); 
0A3D:  MOVLW  10

⌨️ 快捷键说明

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