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

📄 p16web.lst

📁 一种基于16位单片机的tcp/ip协议源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
....................  
....................     atend = rxout>=rxin; 
0A6B:  BCF    03,6
0A6C:  MOVF   47,W
0A6D:  SUBWF  45,W
0A6E:  BTFSS  03,0
0A6F:  GOTO   27C
0A70:  MOVF   47,W
0A71:  SUBWF  45,W
0A72:  BTFSS  03,2
0A73:  GOTO   27A
0A74:  MOVF   46,W
0A75:  SUBWF  44,W
0A76:  BTFSC  03,2
0A77:  GOTO   27C
0A78:  BTFSS  03,0
0A79:  GOTO   27C
0A7A:  BCF    26,1
0A7B:  GOTO   27D
0A7C:  BSF    26,1
....................     if (!atend) 
0A7D:  BTFSC  26,1
0A7E:  GOTO   28C
....................     { 
....................         b = getnic_byte(); 
0A7F:  CALL   224
0A80:  MOVF   78,W
0A81:  BSF    03,6
0A82:  MOVWF  37
....................         rxout++; 
0A83:  BCF    03,6
0A84:  INCF   46,F
0A85:  BTFSC  03,2
0A86:  INCF   47,F
....................         check_byte(b); 
0A87:  BSF    03,6
0A88:  MOVF   37,W
0A89:  MOVWF  3E
0A8A:  BCF    03,6
0A8B:  CALL   249
....................     } 
....................     return(b); 
0A8C:  BSF    03,6
0A8D:  MOVF   37,W
0A8E:  BCF    03,6
0A8F:  MOVWF  78
0A90:  RETLW  00
.................... } 
....................  
.................... /* Put a byte into the network buffer */ 
.................... void putch_net(BYTE b) 
.................... { 
....................     if (txin < TXBUFFLEN) 
*
0AB1:  MOVLW  40
0AB2:  SUBWF  48,W
0AB3:  BTFSC  03,0
0AB4:  GOTO   2C0
....................         txbuff[txin++] = b; 
0AB5:  MOVF   48,W
0AB6:  INCF   48,F
0AB7:  MOVWF  77
0AB8:  MOVLW  A0
0AB9:  ADDWF  77,W
0ABA:  MOVWF  04
0ABB:  BCF    03,7
0ABC:  BSF    03,6
0ABD:  MOVF   3C,W
0ABE:  MOVWF  00
0ABF:  BCF    03,6
....................     check_byte(b); 
0AC0:  BSF    03,6
0AC1:  MOVF   3C,W
0AC2:  MOVWF  3E
0AC3:  BCF    03,6
0AC4:  CALL   249
0AC5:  RETLW  00
.................... } 
....................      
.................... /* Set up the I/O ports, reset the NIC */ 
.................... void reset_ether(void) 
.................... { 
....................     DATA_FROM_NIC; 
*
00DA:  MOVLW  FF
00DB:  BSF    03,5
00DC:  MOVWF  08
....................     NIC_ADDR = 0; 
00DD:  BCF    03,5
00DE:  CLRF   06
....................     port_b_pullups(TRUE); 
00DF:  MOVLW  81
00E0:  MOVWF  04
00E1:  BCF    03,7
00E2:  BCF    00,7
....................     set_tris_b(0xe0); 
00E3:  MOVLW  E0
00E4:  TRIS   6
....................     NIC_IOW_ = NIC_IOR_ = 1; 
00E5:  BSF    09,0
00E6:  BSF    09,1
....................     NIC_RESET = 1; 
00E7:  BSF    09,2
....................     set_tris_e(ALL_OUT); 
00E8:  MOVLW  00
00E9:  BSF    03,5
00EA:  MOVWF  09
00EB:  BCF    03,5
00EC:  RETLW  00
.................... } 
....................  
.................... /* Initialise card given driver type and base addr. 
.................... ** Return driver type, 0 if error */ 
.................... int init_ether(void) 
.................... { 
....................     int ok=0, i; 
*
06C9:  BSF    03,6
06CA:  CLRF   2D
....................     BYTE b; 
....................  
....................     reset_ether(); 
06CB:  BCF    03,6
06CC:  CALL   0DA
....................     delay_ms(2); 
06CD:  MOVLW  02
06CE:  BSF    03,6
06CF:  MOVWF  33
06D0:  BCF    03,6
06D1:  CALL   0ED
....................     NIC_RESET = 0; 
06D2:  BCF    09,2
....................     delay_ms(2); 
06D3:  MOVLW  02
06D4:  BSF    03,6
06D5:  MOVWF  33
06D6:  BCF    03,6
06D7:  CALL   0ED
....................     outnic(NE_RESET, innic(NE_RESET));  /* Do reset */ 
06D8:  MOVLW  1F
06D9:  BSF    03,6
06DA:  MOVWF  3F
06DB:  BCF    03,6
06DC:  CALL   6A2
06DD:  MOVF   78,W
06DE:  BSF    03,6
06DF:  MOVWF  30
06E0:  MOVLW  1F
06E1:  MOVWF  40
06E2:  MOVF   30,W
06E3:  MOVWF  41
06E4:  BCF    03,6
06E5:  CALL   6B5
....................     delay_ms(2); 
06E6:  MOVLW  02
06E7:  BSF    03,6
06E8:  MOVWF  33
06E9:  BCF    03,6
06EA:  CALL   0ED
....................     if ((innic(ISR) & 0x80) == 0)       /* Report if failed */ 
06EB:  MOVLW  07
06EC:  BSF    03,6
06ED:  MOVWF  3F
06EE:  BCF    03,6
06EF:  CALL   6A2
06F0:  MOVF   78,W
06F1:  ANDLW  80
06F2:  IORLW  00
06F3:  BTFSS  03,2
06F4:  GOTO   70A
....................     { 
....................         printf(displays, "\nNIC init err "); 
*
0004:  BCF    0A,0
0005:  BCF    0A,1
0006:  BCF    0A,2
0007:  ADDWF  02,F
0008:  RETLW  0A
0009:  RETLW  4E
000A:  RETLW  49
000B:  RETLW  43
000C:  RETLW  20
000D:  RETLW  69
000E:  RETLW  6E
000F:  RETLW  69
0010:  RETLW  74
0011:  RETLW  20
0012:  RETLW  65
0013:  RETLW  72
0014:  RETLW  72
0015:  RETLW  20
0016:  RETLW  00
*
06F5:  BSF    03,6
06F6:  CLRF   30
06F7:  BCF    03,6
06F8:  BSF    03,6
06F9:  MOVF   30,W
06FA:  BCF    03,6
06FB:  CALL   004
06FC:  BSF    03,6
06FD:  INCF   30,F
06FE:  MOVWF  31
06FF:  BCF    03,6
0700:  CALL   185
0701:  MOVLW  0E
0702:  BSF    03,6
0703:  SUBWF  30,W
0704:  BTFSC  03,2
0705:  GOTO   708
0706:  BCF    03,6
0707:  GOTO   6F8
....................     } 
....................     else 
0708:  BCF    03,6
0709:  GOTO   7D1
....................     { 
....................         outnic(CMDR, 0x21);                 /* Stop, DMA abort, page 0 */ 
070A:  BSF    03,6
070B:  CLRF   40
070C:  MOVLW  21
070D:  MOVWF  41
070E:  BCF    03,6
070F:  CALL   6B5
....................         delay_ms(2);                        /* ..wait to take effect */ 
0710:  MOVLW  02
0711:  BSF    03,6
0712:  MOVWF  33
0713:  BCF    03,6
0714:  CALL   0ED
....................         outnic(DCR, DCRVAL); 
0715:  MOVLW  0E
0716:  BSF    03,6
0717:  MOVWF  40
0718:  MOVLW  48
0719:  MOVWF  41
071A:  BCF    03,6
071B:  CALL   6B5
....................         outnic(RBCR0, 0);                   /* Clear remote byte count */ 
071C:  MOVLW  0A
071D:  BSF    03,6
071E:  MOVWF  40
071F:  CLRF   41
0720:  BCF    03,6
0721:  CALL   6B5
....................         outnic(RBCR1, 0); 
0722:  MOVLW  0B
0723:  BSF    03,6
0724:  MOVWF  40
0725:  CLRF   41
0726:  BCF    03,6
0727:  CALL   6B5
....................         outnic(RCR, 0x20);                  /* Rx monitor mode */ 
0728:  MOVLW  0C
0729:  BSF    03,6
072A:  MOVWF  40
072B:  MOVLW  20
072C:  MOVWF  41
072D:  BCF    03,6
072E:  CALL   6B5
....................         outnic(TCR, 0x02);                  /* Tx internal loopback */ 
072F:  MOVLW  0D
0730:  BSF    03,6
0731:  MOVWF  40
0732:  MOVLW  02
0733:  MOVWF  41
0734:  BCF    03,6
0735:  CALL   6B5
....................         outnic(TPSR, TXSTART);              /* Set Tx start page */ 
0736:  MOVLW  04
0737:  BSF    03,6
0738:  MOVWF  40
0739:  MOVLW  40
073A:  MOVWF  41
073B:  BCF    03,6
073C:  CALL   6B5
....................         outnic(PSTART, RXSTART);            /* Set Rx start, stop, boundary */ 
073D:  MOVLW  01
073E:  BSF    03,6
073F:  MOVWF  40
0740:  MOVLW  46
0741:  MOVWF  41
0742:  BCF    03,6
0743:  CALL   6B5
....................         outnic(PSTOP, RXSTOP); 
0744:  MOVLW  02
0745:  BSF    03,6
0746:  MOVWF  40
0747:  MOVLW  5F
0748:  MOVWF  41
0749:  BCF    03,6
074A:  CALL   6B5
....................         outnic(BNRY, (BYTE)(RXSTOP-1)); 
074B:  MOVLW  03
074C:  BSF    03,6
074D:  MOVWF  40
074E:  MOVLW  5E
074F:  MOVWF  41
0750:  BCF    03,6
0751:  CALL   6B5
....................         outnic(ISR, 0xff);                  /* Clear interrupt flags */ 
0752:  MOVLW  07
0753:  BSF    03,6
0754:  MOVWF  40
0755:  MOVLW  FF
0756:  MOVWF  41
0757:  BCF    03,6
0758:  CALL   6B5
....................         outnic(IMR, 0);                     /* Mask all interrupts */ 
0759:  MOVLW  0F
075A:  BSF    03,6
075B:  MOVWF  40
075C:  CLRF   41
075D:  BCF    03,6
075E:  CALL   6B5
....................         outnic(CMDR, 0x61);                 /* Stop, DMA abort, page 1 */ 
075F:  BSF    03,6
0760:  CLRF   40
0761:  MOVLW  61
0762:  MOVWF  41
0763:  BCF    03,6
0764:  CALL   6B5
....................         delay_ms(2); 
0765:  MOVLW  02
0766:  BSF    03,6
0767:  MOVWF  33
0768:  BCF    03,6
0769:  CALL   0ED
....................         for (i=0; i<6; i++)                 /* Set Phys addr */ 
076A:  BSF    03,6
076B:  CLRF   2E
076C:  BCF    03,6
076D:  MOVLW  06
076E:  BSF    03,6
076F:  SUBWF  2E,W
0770:  BTFSS  03,0
0771:  GOTO   774
0772:  BCF    03,6
0773:  GOTO   78B
0774:  BCF    03,6
....................             outnic(PAR0+i, myeth[i]); 
0775:  MOVLW  01
0776:  BSF    03,6
0777:  ADDWF  2E,W
0778:  MOVWF  30
0779:  MOVLW  2A
077A:  ADDWF  2E,W
077B:  BCF    03,6
077C:  MOVWF  04
077D:  BCF    03,7
077E:  MOVF   00,W
077F:  BSF    03,6
0780:  MOVWF  31
0781:  MOVF   30,W
0782:  MOVWF  40
0783:  MOVF   31,W
0784:  MOVWF  41
0785:  BCF    03,6
0786:  CALL   6B5
0787:  BSF    03,6
0788:  INCF   2E,F
0789:  BCF    03,6
078A:  GOTO   76D
....................         for (i=0; i<8; i++)                 /* Multicast accept-all */ 
078B:  BSF    03,6
078C:  CLRF   2E
078D:  BCF    03,6
078E:  MOVLW  08
078F:  BSF    03,6
0790:  SUBWF  2E,W
0791:  BTFSS  03,0
0792:  GOTO   795
0793:  BCF    03,6
0794:  GOTO   7A4
0795:  BCF    03,6
....................             outnic(MAR0+i, 0xff); 
0796:  MOVLW  08
0797:  BSF    03,6
0798:  ADDWF  2E,W
0799:  MOVWF  30
079A:  MOVF   30,W
079B:  MOVWF  40
079C:  MOVLW  FF
079D:  MOVWF  41
079E:  BCF    03,6
079F:  CALL   6B5
07A0:  BSF    03,6
07A1:  INCF   2E,F
07A2:  BCF    03,6
07A3:  GOTO   78E
....................         outnic(CURRP, RXSTART+1);           /* Set current Rx page */ 
07A4:  MOVLW  07
07A5:  BSF    03,6
07A6:  MOVWF  40
07A7:  MOVLW  47
07A8:  MOVWF  41
07A9:  BCF    03,6
07AA:  CALL   6B5
....................         next_page = RXSTART + 1; 
07AB:  MOVLW  47
07AC:  MOVWF  30
.................... // Set LED 0 to be a 'link' LED, not 'collision' LED 
.................... // It would be nice if the following code worked, but the upper bits of the 
.................... // RTL config3 register are obstinately read-only, so it doesn't! 
.................... //        outnic(CMDR, 0xe0);                 /* DMA abort, page 3 */ 
.................... //        outnic(RTL9346CR, 0xc0);            /* Write-enable config regs */ 
.................... //        outnic(RTL3, 0x10);                 /* Enable 'link' LED */ 
.................... //        outnic(RTL9346CR, 0x00);            /* Write-protect config regs */ 
....................         outnic(CMDR, 0x20);                 /* DMA abort, page 0 */ 
07AD:  BSF    03,6
07AE:  CLRF   40
07AF:  MOVLW  20
07B0:  MOVWF  41
07B1:  BCF    03,6
07B2:  CALL   6B5
.................... #if PROMISC 
....................         outnic(RCR, 0x14);                  /* Accept broadcasts and all packets!*/ 
.................... #else 
....................         outnic(RCR, 0x04);                  /* Accept broadcasts */ 
07B3:  MOVLW  0C
07B4:  BSF    03,6
07B5:  MOVWF  40
07B6:  MOVLW  04
07B7:  MOVWF  41
07B8:  BCF    03,6
07B9:  CALL   6B5
.................... #endif 
....................         outnic(TCR, 0);                     /* Normal Tx operation */ 
07BA:  MOVLW  0D
07BB:  BSF    03,6
07BC:  MOVWF  40
07BD:  CLRF   41
07BE:  BCF    03,6
07BF:  CALL   6B5
....................         outnic(ISR, 0xff);                  /* Clear interrupt flags */ 
07C0:  MOVLW  07
07C1:  BSF    03,6
07C2:  MOVWF  40
07C3:  MOVLW  FF
07C4:  MOVWF  41
07C5:  BCF    03,6
07C6:  CALL   6B5
....................         outnic(CMDR, 0x22);                 /* Start NIC */ 
07C7:  BSF    03,6
07C8:  CLRF   40
07C9:  MOVLW  22
07CA:  MOVWF  41

⌨️ 快捷键说明

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