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

📄 p16web.lst

📁 一种基于16位单片机的tcp/ip协议源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
0A3E:  BSF    03,6
0A3F:  MOVWF  3F
0A40:  BCF    03,6
0A41:  BCF    0A,3
0A42:  CALL   6A2
0A43:  BSF    0A,3
0A44:  MOVF   78,W
0A45:  BSF    03,6
0A46:  MOVWF  38
0A47:  BCF    03,6
0A48:  RETLW  00
.................... } 
....................  
.................... /* Get data from NIC's RAM into the given buffer */ 
.................... void getnic_data(BYTE *data, int len) 
.................... { 
....................     BYTE b; 
....................      
....................     outnic(ISR, 0x40);                  /* Clear remote DMA interrupt flag */ 
*
0910:  MOVLW  07
0911:  MOVWF  40
0912:  MOVLW  40
0913:  MOVWF  41
0914:  BCF    03,6
0915:  BCF    0A,3
0916:  CALL   6B5
0917:  BSF    0A,3
....................     outnic(RBCR0, len);                 /* Byte count */ 
0918:  MOVLW  0A
0919:  BSF    03,6
091A:  MOVWF  40
091B:  MOVF   2F,W
091C:  MOVWF  41
091D:  BCF    03,6
091E:  BCF    0A,3
091F:  CALL   6B5
0920:  BSF    0A,3
....................     outnic(RBCR1, 0); 
0921:  MOVLW  0B
0922:  BSF    03,6
0923:  MOVWF  40
0924:  CLRF   41
0925:  BCF    03,6
0926:  BCF    0A,3
0927:  CALL   6B5
0928:  BSF    0A,3
....................     outnic(CMDR, 0x0a);                 /* Start, DMA remote read */ 
0929:  BSF    03,6
092A:  CLRF   40
092B:  MOVLW  0A
092C:  MOVWF  41
092D:  BCF    03,6
092E:  BCF    0A,3
092F:  CALL   6B5
0930:  BSF    0A,3
....................     while (len--)                       /* Get bytes */ 
0931:  BSF    03,6
0932:  MOVF   2F,W
0933:  DECF   2F,F
0934:  IORLW  00
0935:  BTFSS  03,2
0936:  GOTO   139
0937:  BCF    03,6
0938:  GOTO   156
0939:  BCF    03,6
....................     { 
....................         b = innic(DATAPORT); 
093A:  MOVLW  10
093B:  BSF    03,6
093C:  MOVWF  3F
093D:  BCF    03,6
093E:  BCF    0A,3
093F:  CALL   6A2
0940:  BSF    0A,3
0941:  MOVF   78,W
0942:  BSF    03,6
0943:  MOVWF  30
....................         *data++ = b; 
0944:  MOVF   2E,W
0945:  BCF    03,6
0946:  MOVWF  7A
0947:  BSF    03,6
0948:  MOVF   2D,W
0949:  INCF   2D,F
094A:  BTFSC  03,2
094B:  INCF   2E,F
094C:  MOVWF  04
094D:  BCF    03,7
094E:  BCF    03,6
094F:  BTFSC  7A,0
0950:  BSF    03,7
0951:  BSF    03,6
0952:  MOVF   30,W
0953:  MOVWF  00
....................     } 
0954:  BCF    03,6
0955:  GOTO   131
.................... } 
....................  
.................... /* Put the given byte into the NIC's RAM */ 
.................... void putnic_byte(BYTE b) 
.................... { 
....................     outnic(RBCR0, 1);                   /* Byte count */ 
*
0DB7:  MOVLW  0A
0DB8:  BSF    03,6
0DB9:  MOVWF  40
0DBA:  MOVLW  01
0DBB:  MOVWF  41
0DBC:  BCF    03,6
0DBD:  BCF    0A,3
0DBE:  CALL   6B5
0DBF:  BSF    0A,3
....................     outnic(RBCR1, 0); 
0DC0:  MOVLW  0B
0DC1:  BSF    03,6
0DC2:  MOVWF  40
0DC3:  CLRF   41
0DC4:  BCF    03,6
0DC5:  BCF    0A,3
0DC6:  CALL   6B5
0DC7:  BSF    0A,3
....................     outnic(CMDR, 0x12);                 /* Start, DMA remote write */ 
0DC8:  BSF    03,6
0DC9:  CLRF   40
0DCA:  MOVLW  12
0DCB:  MOVWF  41
0DCC:  BCF    03,6
0DCD:  BCF    0A,3
0DCE:  CALL   6B5
0DCF:  BSF    0A,3
....................     outnic(DATAPORT, b); 
0DD0:  MOVLW  10
0DD1:  BSF    03,6
0DD2:  MOVWF  40
0DD3:  MOVF   3E,W
0DD4:  MOVWF  41
0DD5:  BCF    03,6
0DD6:  BCF    0A,3
0DD7:  CALL   6B5
0DD8:  BSF    0A,3
0DD9:  RETLW  00
.................... } 
....................  
.................... /* Put the given byte into the NIC's RAM */ 
.................... void putnic_checkbyte(BYTE b) 
.................... { 
....................     check_byte(b); 
*
0F35:  BSF    03,6
0F36:  MOVF   3D,W
0F37:  MOVWF  3E
0F38:  BCF    03,6
0F39:  CALL   249
....................     putnic_byte(b); 
0F3A:  BSF    03,6
0F3B:  MOVF   3D,W
0F3C:  MOVWF  3E
0F3D:  BCF    03,6
0F3E:  CALL   5B7
....................     tpxdlen++; 
0F3F:  INCF   28,F
0F40:  BTFSC  03,2
0F41:  INCF   29,F
0F42:  RETLW  00
.................... } 
....................  
.................... /* Put the given data into the NIC's RAM */ 
.................... void putnic_data(BYTE *data, int len) 
.................... { 
....................     len += len & 1;                     /* Round length up to an even value */ 
*
0AFA:  BSF    03,6
0AFB:  MOVF   3E,W
0AFC:  ANDLW  01
0AFD:  ADDWF  3E,F
....................     outnic(ISR, 0x40);                  /* Clear remote DMA interrupt flag */ 
0AFE:  MOVLW  07
0AFF:  MOVWF  40
0B00:  MOVLW  40
0B01:  MOVWF  41
0B02:  BCF    03,6
0B03:  BCF    0A,3
0B04:  CALL   6B5
0B05:  BSF    0A,3
....................     outnic(RBCR0, len);                 /* Byte count */ 
0B06:  MOVLW  0A
0B07:  BSF    03,6
0B08:  MOVWF  40
0B09:  MOVF   3E,W
0B0A:  MOVWF  41
0B0B:  BCF    03,6
0B0C:  BCF    0A,3
0B0D:  CALL   6B5
0B0E:  BSF    0A,3
....................     outnic(RBCR1, 0); 
0B0F:  MOVLW  0B
0B10:  BSF    03,6
0B11:  MOVWF  40
0B12:  CLRF   41
0B13:  BCF    03,6
0B14:  BCF    0A,3
0B15:  CALL   6B5
0B16:  BSF    0A,3
....................     outnic(CMDR, 0x12);                 /* Start, DMA remote write */ 
0B17:  BSF    03,6
0B18:  CLRF   40
0B19:  MOVLW  12
0B1A:  MOVWF  41
0B1B:  BCF    03,6
0B1C:  BCF    0A,3
0B1D:  CALL   6B5
0B1E:  BSF    0A,3
....................     while (len--)                        /* O/P bytes */ 
0B1F:  BSF    03,6
0B20:  MOVF   3E,W
0B21:  DECF   3E,F
0B22:  IORLW  00
0B23:  BTFSS  03,2
0B24:  GOTO   327
0B25:  BCF    03,6
0B26:  GOTO   342
0B27:  BCF    03,6
....................         outnic(DATAPORT, *data++); 
0B28:  BSF    03,6
0B29:  MOVF   3D,W
0B2A:  BCF    03,6
0B2B:  MOVWF  7A
0B2C:  BSF    03,6
0B2D:  MOVF   3C,W
0B2E:  INCF   3C,F
0B2F:  BTFSC  03,2
0B30:  INCF   3D,F
0B31:  MOVWF  04
0B32:  BCF    03,7
0B33:  BCF    03,6
0B34:  BTFSC  7A,0
0B35:  BSF    03,7
0B36:  MOVF   00,W
0B37:  BSF    03,6
0B38:  MOVWF  3F
0B39:  MOVLW  10
0B3A:  MOVWF  40
0B3B:  MOVF   3F,W
0B3C:  MOVWF  41
0B3D:  BCF    03,6
0B3E:  BCF    0A,3
0B3F:  CALL   6B5
0B40:  BSF    0A,3
0B41:  GOTO   31F
....................     len = 255;                          /* Done: must ensure DMA complete */ 
0B42:  MOVLW  FF
0B43:  BSF    03,6
0B44:  MOVWF  3E
0B45:  BCF    03,6
....................     while (len && (innic(ISR)&0x40)==0) 
0B46:  BSF    03,6
0B47:  MOVF   3E,F
0B48:  BTFSS  03,2
0B49:  GOTO   34C
0B4A:  BCF    03,6
0B4B:  GOTO   35D
0B4C:  BCF    03,6
0B4D:  MOVLW  07
0B4E:  BSF    03,6
0B4F:  MOVWF  3F
0B50:  BCF    03,6
0B51:  BCF    0A,3
0B52:  CALL   6A2
0B53:  BSF    0A,3
0B54:  MOVF   78,W
0B55:  ANDLW  40
0B56:  IORLW  00
0B57:  BTFSS  03,2
0B58:  GOTO   35D
....................         len--; 
0B59:  BSF    03,6
0B5A:  DECF   3E,F
0B5B:  BCF    03,6
0B5C:  GOTO   346
0B5D:  RETLW  00
.................... } 
....................  
.................... /* Wrap an NIC Rx page number */ 
.................... BYTE nicwrap(int page) 
.................... { 
....................    if (page >= RXSTOP) 
*
0887:  MOVLW  5F
0888:  BSF    03,6
0889:  SUBWF  2E,W
088A:  BTFSC  03,0
088B:  GOTO   08E
088C:  BCF    03,6
088D:  GOTO   094
088E:  BCF    03,6
....................        page += RXSTART - RXSTOP; 
088F:  MOVLW  E7
0890:  BSF    03,6
0891:  ADDWF  2E,F
....................    else if (page < RXSTART) 
0892:  BCF    03,6
0893:  GOTO   0A0
0894:  MOVLW  46
0895:  BSF    03,6
0896:  SUBWF  2E,W
0897:  BTFSS  03,0
0898:  GOTO   09B
0899:  BCF    03,6
089A:  GOTO   0A0
089B:  BCF    03,6
....................        page += RXSTOP - RXSTART; 
089C:  MOVLW  19
089D:  BSF    03,6
089E:  ADDWF  2E,F
089F:  BCF    03,6
....................    return(page); 
08A0:  BSF    03,6
08A1:  MOVF   2E,W
08A2:  BCF    03,6
08A3:  MOVWF  78
08A4:  RETLW  00
.................... } 
....................  
.................... /* Input a byte from a NIC register */ 
.................... BYTE innic(int reg) 
.................... { 
....................     BYTE b; 
....................  
....................     DATA_FROM_NIC; 
*
06A2:  MOVLW  FF
06A3:  BSF    03,5
06A4:  MOVWF  08
....................     NIC_ADDR = reg; 
06A5:  BCF    03,5
06A6:  BSF    03,6
06A7:  MOVF   3F,W
06A8:  BCF    03,6
06A9:  MOVWF  06
....................     NIC_IOR_ = 0; 
06AA:  BCF    09,0
....................     b = NIC_DATA; 
06AB:  MOVF   08,W
06AC:  BSF    03,6
06AD:  MOVWF  40
....................     NIC_IOR_ = 1; 
06AE:  BCF    03,6
06AF:  BSF    09,0
....................     return(b); 
06B0:  BSF    03,6
06B1:  MOVF   40,W
06B2:  BCF    03,6
06B3:  MOVWF  78
06B4:  RETLW  00
.................... } 
....................  
.................... /* Output a byte to a NIC register */ 
.................... void outnic(int reg, int b) 
.................... { 
....................     NIC_ADDR = reg; 
06B5:  BSF    03,6
06B6:  MOVF   40,W
06B7:  BCF    03,6
06B8:  MOVWF  06
....................     NIC_DATA = b; 
06B9:  BSF    03,6
06BA:  MOVF   41,W
06BB:  BCF    03,6
06BC:  MOVWF  08
....................     DATA_TO_NIC; 
06BD:  MOVLW  00
06BE:  BSF    03,5
06BF:  MOVWF  08
....................     NIC_IOW_ = 0; 
06C0:  BCF    03,5
06C1:  BCF    09,1
....................     delay_cycles(1); 
06C2:  NOP
....................     NIC_IOW_ = 1; 
06C3:  BSF    09,1
....................     DATA_FROM_NIC; 
06C4:  MOVLW  FF
06C5:  BSF    03,5
06C6:  MOVWF  08
06C7:  BCF    03,5
06C8:  RETLW  00
.................... } 
....................  
.................... /* EOF */ 
.................... 
.................... #include "\chipweb\pcm\p16_drv.h" 
....................  /* Low-level driver functions for PIC Web server  
.................... ** Copyright (c) Iosoft Ltd 2001 
.................... ** This software is only licensed for distribution in the Iosoft ChipWeb package 
.................... ** and may only be used for personal experimentation by the purchaser  
.................... ** of that package, on condition that this copyright notice is retained.  
.................... ** For commercial licensing, contact license@iosoft.co.uk 
.................... ** 
.................... ** This is experimental software; use it entirely at your own risk */ 
....................  
.................... /* Revisions: 
.................... ** v0.01 JPB 17/12/00 Functions extracted from PIC_SLIP v0.01 
.................... */ 
....................  
.................... /* Globals */ 
.................... BOOL checkflag;             // Checksum flag & byte values 
.................... BYTE checkhi, checklo; 
....................  
.................... BYTE ungot_byte; 
.................... BOOL ungot; 
....................  
.................... /* Prototypes for this file */ 
.................... int get_data(BYTE *ptr, int maxlen); 
.................... BOOL get_byte(BYTE &b); 
.................... void unget_byte(BYTE &b); 
.................... BOOL get_word(WORD &w); 
.................... BOOL get_lword(LWORD &lw); 
.................... void discard_data(void); 
.................... BOOL match_byte(BYTE b); 
.................... BOOL match_word(WORD w); 
.................... void skip_space(void); 
.................... BOOL skip_byte(); 
.................... BOOL skip_word(); 
.................... BOOL skip_lword(); 
.................... int check_str(char *s); 
.................... void check_byte(BYTE b); 
.................... void check_word(WORD w); 
.................... void check_lword(LWORD &lw); 
.................... void check_bytes(BYTE *dat, int len); 
.................... void put_byte(BYTE b); 
.................... void put_str(char *s); 
.................... void put_word(WORD w); 
.................... void put_data(BYTE *data, int len); 
.................... void put_lword(LWORD &lw); 
.................... void swapw(WORD &val); 
....................  
.................... /* Get incoming data in buffer; discard any buffer overflow */ 
.................... int get_data(BYTE *ptr, int maxlen) 
.................... { 
....................     BYTE b; 
....................     int n=0; 
....................  
....................     while (maxlen-- > 0 && get_byte(b)) 
....................     { 
........

⌨️ 快捷键说明

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