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

📄 p16web.lst

📁 一个由PIC单片机组成的Web服务器源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
07CB:  BCF    03,6
07CC:  CALL   6B5
....................         ok = 1; 
07CD:  MOVLW  01
07CE:  BSF    03,6
07CF:  MOVWF  2D
07D0:  BCF    03,6
....................     } 
....................     return(ok); 
07D1:  BSF    03,6
07D2:  MOVF   2D,W
07D3:  BCF    03,6
07D4:  MOVWF  78
07D5:  RETLW  00
.................... } 
....................  
.................... /* Get packet into buffer, return length (excl CRC), or 0 if none available */ 
.................... WORD get_ether() 
.................... { 
....................     WORD len=0, curr; 
....................     BYTE bound;        
....................     WORD oset; 
*
08A5:  BSF    03,6
08A6:  CLRF   25
08A7:  CLRF   26
....................     int i; 
....................  
....................     if (innic(ISR) & 0x10)              /* If Rx overrun.. */ 
08A8:  MOVLW  07
08A9:  MOVWF  3F
08AA:  BCF    03,6
08AB:  BCF    0A,3
08AC:  CALL   6A2
08AD:  BSF    0A,3
08AE:  MOVF   78,W
08AF:  ANDLW  10
08B0:  IORLW  00
08B1:  BTFSC  03,2
08B2:  GOTO   0CD
....................     { 
....................         printf(" NIC Rx overrun "); 
*
0017:  BCF    0A,0
0018:  BCF    0A,1
0019:  BCF    0A,2
001A:  ADDWF  02,F
001B:  RETLW  20
001C:  RETLW  4E
001D:  RETLW  49
001E:  RETLW  43
001F:  RETLW  20
0020:  RETLW  52
0021:  RETLW  78
0022:  RETLW  20
0023:  RETLW  6F
0024:  RETLW  76
0025:  RETLW  65
0026:  RETLW  72
0027:  RETLW  72
0028:  RETLW  75
0029:  RETLW  6E
002A:  RETLW  20
002B:  RETLW  00
*
08B3:  BSF    03,6
08B4:  CLRF   2D
08B5:  BCF    03,6
08B6:  BSF    03,6
08B7:  MOVF   2D,W
08B8:  BCF    03,6
08B9:  BCF    0A,3
08BA:  CALL   017
08BB:  BSF    0A,3
08BC:  BSF    03,6
08BD:  INCF   2D,F
08BE:  BCF    03,6
08BF:  BTFSS  0C,4
08C0:  GOTO   0BF
08C1:  MOVWF  19
08C2:  MOVLW  10
08C3:  BSF    03,6
08C4:  SUBWF  2D,W
08C5:  BTFSC  03,2
08C6:  GOTO   0C9
08C7:  BCF    03,6
08C8:  GOTO   0B6
....................         init_ether();                   /* ..reset controller (drastic!) */ 
08C9:  BCF    03,6
08CA:  BCF    0A,3
08CB:  CALL   6C9
08CC:  BSF    0A,3
....................     } 
....................     outnic(CMDR, 0x60);                 /* DMA abort, page 1 */ 
08CD:  BSF    03,6
08CE:  CLRF   40
08CF:  MOVLW  60
08D0:  MOVWF  41
08D1:  BCF    03,6
08D2:  BCF    0A,3
08D3:  CALL   6B5
08D4:  BSF    0A,3
....................     curr = innic(CURRP);                /* Get current page */ 
08D5:  MOVLW  07
08D6:  BSF    03,6
08D7:  MOVWF  3F
08D8:  BCF    03,6
08D9:  BCF    0A,3
08DA:  CALL   6A2
08DB:  BSF    0A,3
08DC:  BSF    03,6
08DD:  CLRF   28
08DE:  BCF    03,6
08DF:  MOVF   78,W
08E0:  BSF    03,6
08E1:  MOVWF  27
....................     outnic(CMDR, 0x20);                 /* DMA abort, page 0 */ 
08E2:  CLRF   40
08E3:  MOVLW  20
08E4:  MOVWF  41
08E5:  BCF    03,6
08E6:  BCF    0A,3
08E7:  CALL   6B5
08E8:  BSF    0A,3
....................     if (curr != next_page)              /* If Rx packet.. */ 
08E9:  BSF    03,6
08EA:  MOVF   28,F
08EB:  BTFSC  03,2
08EC:  GOTO   0EF
08ED:  BCF    03,6
08EE:  GOTO   0F8
08EF:  BCF    03,6
08F0:  MOVF   30,W
08F1:  BSF    03,6
08F2:  SUBWF  27,W
08F3:  BTFSS  03,2
08F4:  GOTO   0F7
08F5:  BCF    03,6
08F6:  GOTO   219
08F7:  BCF    03,6
....................     { 
....................         curr_rx_page = next_page; 
08F8:  MOVF   30,W
08F9:  MOVWF  31
....................         setnic_addr((WORD)next_page<<8); 
08FA:  BSF    03,6
08FB:  CLRF   2E
08FC:  BCF    03,6
08FD:  MOVF   30,W
08FE:  BSF    03,6
08FF:  MOVWF  2D
0900:  MOVF   2D,W
0901:  MOVWF  2E
0902:  CLRF   2D
0903:  MOVF   2E,W
0904:  MOVWF  3D
0905:  MOVF   2D,W
0906:  MOVWF  3C
0907:  BCF    03,6
0908:  CALL   063
....................         getnic_data((BYTE *)&nicin, sizeof(nicin)); 
0909:  MOVLW  00
090A:  BSF    03,6
090B:  MOVWF  2E
090C:  MOVLW  32
090D:  MOVWF  2D
090E:  MOVLW  12
090F:  MOVWF  2F
....................         len = nicin.nic.len;            /* Take length from stored header */ 
*
0956:  MOVF   35,W
0957:  BSF    03,6
0958:  MOVWF  26
0959:  BCF    03,6
095A:  MOVF   34,W
095B:  BSF    03,6
095C:  MOVWF  25
....................         if ((nicin.nic.stat&1) && len>=MINFRAMEC && len<=MAXFRAMEC) 
095D:  BCF    03,6
095E:  MOVF   32,W
095F:  ANDLW  01
0960:  IORLW  00
0961:  BTFSC  03,2
0962:  GOTO   1BC
0963:  MOVLW  01
0964:  BSF    03,6
0965:  SUBWF  26,W
0966:  BTFSS  03,0
0967:  GOTO   16A
0968:  BCF    03,6
0969:  GOTO   17A
096A:  BCF    03,6
096B:  BSF    03,6
096C:  MOVF   26,F
096D:  BTFSC  03,2
096E:  GOTO   171
096F:  BCF    03,6
0970:  GOTO   1BC
0971:  BCF    03,6
0972:  MOVLW  40
0973:  BSF    03,6
0974:  SUBWF  25,W
0975:  BTFSC  03,0
0976:  GOTO   179
0977:  BCF    03,6
0978:  GOTO   1BC
0979:  BCF    03,6
097A:  MOVLW  05
097B:  BSF    03,6
097C:  SUBWF  26,W
097D:  BTFSC  03,0
097E:  GOTO   181
097F:  BCF    03,6
0980:  GOTO   192
0981:  BCF    03,6
0982:  MOVLW  05
0983:  BSF    03,6
0984:  SUBWF  26,W
0985:  BTFSC  03,2
0986:  GOTO   189
0987:  BCF    03,6
0988:  GOTO   1BC
0989:  BCF    03,6
098A:  MOVLW  EF
098B:  BSF    03,6
098C:  SUBWF  25,W
098D:  BTFSS  03,0
098E:  GOTO   191
098F:  BCF    03,6
0990:  GOTO   1BC
0991:  BCF    03,6
....................         {                               /* If hdr is OK, get packet */ 
....................             len -= MACLEN+MACLEN+2+CRCLEN; 
0992:  MOVLW  12
0993:  BSF    03,6
0994:  SUBWF  25,F
0995:  MOVLW  00
0996:  BTFSS  03,0
0997:  DECF   26,F
0998:  SUBWF  26,F
....................             rxin = len; 
0999:  MOVF   26,W
099A:  BCF    03,6
099B:  MOVWF  45
099C:  BSF    03,6
099D:  MOVF   25,W
099E:  BCF    03,6
099F:  MOVWF  44
....................             swapw(nicin.eth.pcol); 
.................... #if DEBUG 
....................             printf(" Rx%lu>", len); 
.................... #endif             
....................         } 
....................         else                            /* If not, no packet data */ 
*
09BB:  GOTO   1D5
....................         {              
....................             len = 0; 
09BC:  BSF    03,6
09BD:  CLRF   26
09BE:  CLRF   25
....................             printf(" NIC pkt err "); 
*
002C:  BCF    0A,0
002D:  BCF    0A,1
002E:  BCF    0A,2
002F:  ADDWF  02,F
0030:  RETLW  20
0031:  RETLW  4E
0032:  RETLW  49
0033:  RETLW  43
0034:  RETLW  20
0035:  RETLW  70
0036:  RETLW  6B
0037:  RETLW  74
0038:  RETLW  20
0039:  RETLW  65
003A:  RETLW  72
003B:  RETLW  72
003C:  RETLW  20
003D:  RETLW  00
*
09BF:  CLRF   2D
09C0:  BCF    03,6
09C1:  BSF    03,6
09C2:  MOVF   2D,W
09C3:  BCF    03,6
09C4:  BCF    0A,3
09C5:  CALL   02C
09C6:  BSF    0A,3
09C7:  BSF    03,6
09C8:  INCF   2D,F
09C9:  BCF    03,6
09CA:  BTFSS  0C,4
09CB:  GOTO   1CA
09CC:  MOVWF  19
09CD:  MOVLW  0D
09CE:  BSF    03,6
09CF:  SUBWF  2D,W
09D0:  BTFSC  03,2
09D1:  GOTO   1D4
09D2:  BCF    03,6
09D3:  GOTO   1C1
09D4:  BCF    03,6
....................         }                               /* Update next packet ptr */ 
....................         if (nicin.nic.next>=RXSTART && nicin.nic.next<RXSTOP) 
09D5:  MOVLW  46
09D6:  SUBWF  33,W
09D7:  BTFSS  03,0
09D8:  GOTO   1E0
09D9:  MOVLW  5F
09DA:  SUBWF  33,W
09DB:  BTFSC  03,0
09DC:  GOTO   1E0
....................             next_page = nicin.nic.next; 
09DD:  MOVF   33,W
09DE:  MOVWF  30
....................         else                            /* If invalid, use prev+1 */ 
09DF:  GOTO   205
....................         { 
....................             printf(" NIC ptr err "); 
*
003E:  BCF    0A,0
003F:  BCF    0A,1
0040:  BCF    0A,2
0041:  ADDWF  02,F
0042:  RETLW  20
0043:  RETLW  4E
0044:  RETLW  49
0045:  RETLW  43
0046:  RETLW  20
0047:  RETLW  70
0048:  RETLW  74
0049:  RETLW  72
004A:  RETLW  20
004B:  RETLW  65
004C:  RETLW  72
004D:  RETLW  72
004E:  RETLW  20
004F:  RETLW  00
*
09E0:  BSF    03,6
09E1:  CLRF   2D
09E2:  BCF    03,6
09E3:  BSF    03,6
09E4:  MOVF   2D,W
09E5:  BCF    03,6
09E6:  BCF    0A,3
09E7:  CALL   03E
09E8:  BSF    0A,3
09E9:  BSF    03,6
09EA:  INCF   2D,F
09EB:  BCF    03,6
09EC:  BTFSS  0C,4
09ED:  GOTO   1EC
09EE:  MOVWF  19
09EF:  MOVLW  0D
09F0:  BSF    03,6
09F1:  SUBWF  2D,W
09F2:  BTFSC  03,2
09F3:  GOTO   1F6
09F4:  BCF    03,6
09F5:  GOTO   1E3
....................             next_page = nicwrap(next_page + 1); 
09F6:  MOVLW  01
09F7:  BCF    03,6
09F8:  ADDWF  30,W
09F9:  BSF    03,6
09FA:  MOVWF  2D
09FB:  MOVF   2D,W
09FC:  MOVWF  2E
09FD:  BCF    03,6
09FE:  CALL   087
09FF:  MOVF   78,W
0A00:  MOVWF  30
....................             len = 0; 
0A01:  BSF    03,6
0A02:  CLRF   26
0A03:  CLRF   25
0A04:  BCF    03,6
....................         }                               /* Update boundary register */ 
....................         bound = nicwrap(next_page - 1); 
0A05:  MOVF   30,W
0A06:  BSF    03,6
0A07:  MOVWF  2D
0A08:  MOVLW  01
0A09:  SUBWF  2D,F
0A0A:  MOVF   2D,W
0A0B:  MOVWF  2E
0A0C:  BCF    03,6
0A0D:  CALL   087
0A0E:  MOVF   78,W
0A0F:  BSF    03,6
0A10:  MOVWF  29
....................         outnic(BNRY, bound); 
0A11:  MOVLW  03
0A12:  MOVWF  40
0A13:  MOVF   29,W
0A14:  MOVWF  41
0A15:  BCF    03,6
0A16:  BCF    0A,3
0A17:  CALL   6B5
0A18:  BSF    0A,3
....................     } 
....................     return(len);                        /* Return length excl. CRC */ 
0A19:  BSF    03,6
0A1A:  MOVF   25,W
0A1B:  BCF    03,6
0A1C:  MOVWF  78
0A1D:  BSF    03,6
0A1E:  MOVF   26,W
0A1F:  BCF    03,6
0A20:  MOVWF  79
0A21:  BCF    0A,3
0A22:  BSF    0A,4
0A23:  GOTO   5C2
.................... } 
....................  
.................... /* Send Ethernet packet given payload len */ 
.................... void put_ether(void *data, WORD dlen) 
.................... { 
....................     outnic(ISR, 0x0a);              /* Clear interrupt flags */ 
*
0B5E:  MOVLW  07
0B5F:  BSF    03,6
0B60:  MOVWF  40
0B61:  MOVLW  0A
0B62:  MOVWF  41
0B63:  BCF    03,6
0B64:  BCF    0A,3
0B65:  CALL   6B5
0B66:  BSF    0A,3
....................     setnic_addr(TXSTART<<8); 
0B67:  MOVLW  40
0B68:  BSF    03,6
0B69:  MOVWF  3D
0B6A:  CLRF   3C
0B6B:  BCF    03,6
0B6C:  CALL   063
....................     putnic_data(nicin.eth.srce, MACLEN); 
0B6D:  MOVLW  00
0B6E:  BSF    03,6
0B6F:  MOVWF  3D
0B70:  MOVLW  3C
0B71:  MOVWF  3C
0B72:  MOVLW  06
0B73:  MOVWF  3E

⌨️ 快捷键说明

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