📄 picnic.lst
字号:
00B4 07D4 00237 ADDWF tcp_seq_no+3,F
00B5 1803 00238 BTFSC STATUS,C
00B6 07D3 00239 ADDWF tcp_seq_no+2,F
00B7 1803 00240 BTFSC STATUS,C
00B8 07D2 00241 ADDWF tcp_seq_no+1,F
00B9 1803 00242 BTFSC STATUS,C
00BA 07D1 00243 ADDWF tcp_seq_no,F
00BB 28D1 00244 GOTO copy_ack_no
00245
00246 ;-----------------------------------------------------------------------------------
00247 ; 计算TCP的ack_no加上ip_length的值
00248 ;
00BC 00249 add_ack_no
00BC 3028 00250 MOVLW 0x28 ; 20+20
00BD 02BC 00251 SUBWF ip_length+1,F
00BE 3001 00252 MOVLW 0x01
00BF 1C03 00253 BTFSS STATUS,C
00C0 02BB 00254 SUBWF ip_length,F
00255
00C1 083C 00256 MOVF ip_length+1,W
00C2 07D4 00257 ADDWF tcp_seq_no+3,F
00C3 3001 00258 MOVLW 0x01
00C4 1803 00259 BTFSC STATUS,C
00C5 07D3 00260 ADDWF tcp_seq_no+2,F
00C6 1803 00261 BTFSC STATUS,C
00C7 07D2 00262 ADDWF tcp_seq_no+1,F
00C8 1803 00263 BTFSC STATUS,C
00C9 07D1 00264 ADDWF tcp_seq_no,F
00265
MPASM 03.20 Released PICNIC.ASM 2-9-2003 15:33:59 PAGE 14
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00CA 083B 00266 MOVF ip_length,W
00CB 07D3 00267 ADDWF tcp_seq_no+2,F
00CC 3001 00268 MOVLW 0x01
00CD 1803 00269 BTFSC STATUS,C
00CE 07D2 00270 ADDWF tcp_seq_no+1,F
00CF 1803 00271 BTFSC STATUS,C
00D0 07D1 00272 ADDWF tcp_seq_no,F
00D1 00273 copy_ack_no:
00D1 0878 00274 MOVF com_fsr,W
00D2 0084 00275 MOVWF FSR
00D3 300C 00276 MOVLW .12
00D4 0784 00277 ADDWF FSR,F
00D5 1783 00278 BSF STATUS,IRP
00D6 0851 00279 MOVF tcp_seq_no,W
00D7 0080 00280 MOVWF INDF
00D8 0A84 00281 INCF FSR,F
00D9 0852 00282 MOVF tcp_seq_no+1,W
00DA 0080 00283 MOVWF INDF
00DB 0A84 00284 INCF FSR,F
00DC 0853 00285 MOVF tcp_seq_no+2,W
00DD 0080 00286 MOVWF INDF
00DE 0A84 00287 INCF FSR,F
00DF 0854 00288 MOVF tcp_seq_no+3,W
00E0 0080 00289 MOVWF INDF
00E1 1383 00290 BCF STATUS,IRP
00E2 0008 00291 RETURN
00292
00293 ;-----------------------------------------------------------------------------------
00294 ; 清除checksum值
00295 ;
00E3 00296 clear_sum:
00E3 01A7 00297 CLRF sum
00E4 01A8 00298 CLRF sum+1
00E5 01A9 00299 CLRF bytes
00E6 0008 00300 RETURN
00301
00302
00303 ;-----------------------------------------------------------------------------------
00304 ; Error Recovery Routing
00305 ;-----------------------------------------------------------------------------------
00E7 00306 overflow2
00E7 00307 overflow:
00E7 0183 00308 CLRF STATUS
00E8 0187 00309 CLRF PORTC
00E9 3021 00310 MOVLW 0x21 ; RTL8019AS STOP
00EA 2760 00311 CALL assert_wr0
00EB 300C 00312 MOVLW HIGH wait_ms
00EC 008A 00313 MOVWF PCLATH
00ED 3002 00314 MOVLW 0x02
00EE 00A0 00315 MOVWF wait_cn
00EF 24F0 00316 CALL wait_ms & 0x7ff ; 10ms wait
00F0 018A 00317 CLRF PCLATH
00318
MPASM 03.20 Released PICNIC.ASM 2-9-2003 15:33:59 PAGE 15
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00F1 300A 00319 MOVLW 0x0A
00F2 0087 00320 MOVWF PORTC
00F3 0100 00321 dw 0x100
00F4 2760 00322 CALL assert_wr0
00323
00F5 300B 00324 MOVLW 0x0B
00F6 0087 00325 MOVWF PORTC
00F7 0100 00326 dw 0x100
00F8 2760 00327 CALL assert_wr0
00328
00F9 266B 00329 CALL initialize ; 初始化RTL8019
00330
00FA 300C 00331 MOVLW 0x0C
00FB 0087 00332 MOVWF PORTC ; RCR
00FC 3004 00333 MOVLW b'00000100'
00FD 2760 00334 CALL assert_wr0 ; MONITOR解除
00335
00FE 300D 00336 MOVLW 0x0D
00FF 0087 00337 MOVWF PORTC ; TCR
0100 0100 00338 dw 0x100 ; L/B解除
0101 2760 00339 CALL assert_wr0
00340
0102 2925 00341 GOTO main0 ; 返回通常的处理
00342
00343 ;-----------------------------------------------------------------------------------
00344 ; Main Routing
00345 ;-----------------------------------------------------------------------------------
0103 00346 main:
0103 0187 00347 CLRF PORTC
0104 3022 00348 MOVLW 0x22
0105 2760 00349 CALL assert_wr0 ;返回PAGE0
00350
0106 300C 00351 MOVLW 0x0C
0107 0087 00352 MOVWF PORTC
0108 3004 00353 MOVLW b'00000100'
0109 2760 00354 CALL assert_wr0
010A 300D 00355 MOVLW 0x0D
010B 0087 00356 MOVWF PORTC ;TCR
010C 0100 00357 dw 0x100 ;L/B解除
010D 2760 00358 CALL assert_wr0
00359
010E 300C 00360 MOVLW HIGH wait_ms
010F 008A 00361 MOVWF PCLATH
0110 3064 00362 MOVLW .100
0111 00A0 00363 MOVWF wait_cn
0112 24F0 00364 CALL wait_ms & 0x7ff ; 100ms Wait
0113 018A 00365 CLRF PCLATH
00366
0114 30A0 00367 MOVLW this_ip
0115 0084 00368 MOVWF FSR
0116 0800 00369 MOVF INDF,W
0117 0A84 00370 INCF FSR,F
0118 0400 00371 IORWF INDF,W
MPASM 03.20 Released PICNIC.ASM 2-9-2003 15:33:59 PAGE 16
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0119 0A84 00372 INCF FSR,F
011A 0400 00373 IORWF INDF,W
011B 0A84 00374 INCF FSR,F
011C 0400 00375 IORWF INDF,W
011D 1D03 00376 BTFSS STATUS,Z
011E 2925 00377 GOTO main0 ;自己的IP地址是0.0.0.0 ?
011F 00378 do_dhcp:
011F 0183 00379 CLRF STATUS
0120 3010 00380 MOVLW HIGH dhcp
0121 008A 00381 MOVWF PCLATH
0122 2076 00382 CALL dhcp & 0x7ff
0123 3001 00383 MOVLW HIGH $
0124 008A 00384 MOVWF PCLATH
00385 ;-----------------------------------------------------------------------------------
00386 ; Main Loop
00387 ;-----------------------------------------------------------------------------------
0125 00388 main0:
0125 1683 00389 BSF STATUS,RP0
0126 3000 00390 MOVLW 0x00
0127 023D 00391 SUBWF fifo_cn & 0x7F,W
0128 1D03 00392 BTFSS STATUS,Z ;RS232C受信?
0129 293B 00393 GOTO receive232c
012A 3080 00394 MOVLW 0x80
012B 0232 00395 SUBWF dhcp_done & 0x7F,W
012C 1903 00396 BTFSC STATUS,Z ;DHCP Timeout?
012D 291F 00397 GOTO do_dhcp
012E 1283 00398 BCF STATUS,RP0
00399
012F 018A 00400 CLRF PCLATH
0130 3007 00401 MOVLW 0x07
0131 0087 00402 MOVWF PORTC
0132 276D 00403 CALL assert_rd ;RCR Lead
00404
0133 1A7C 00405 BTFSC mdata,4
0134 28E7 00406 GOTO overflow
0135 19FC 00407 BTFSC mdata,3
0136 28E7 00408 GOTO overflow
0137 197C 00409 BTFSC mdata,2
0138 28E7 00410 GOTO overflow
0139 293F 00411 GOTO get_packet ;有收到Packet
013A 00412 main99:
013A 2925 00413 GOTO main0
00414
013B 00415 receive232c:
013B 1283 00416 BCF STATUS,RP0
013C 3011 00417 MOVLW HIGH serial_tx
013D 008A 00418 MOVWF PCLATH
013E 294E 00419 GOTO serial_tx & 0x7ff ;转到RS232收信处理
00420
00421 ;-----------------------------------------------------------------------------------
00422 ; Packet收信处理
00423 ;-----------------------------------------------------------------------------------
013F 00424 get_packet:
MPASM 03.20 Released PICNIC.ASM 2-9-2003 15:33:59 PAGE 17
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00425 ; PAGE 1
013F 0187 00426 CLRF PORTC
0140 3062 00427 MOVLW b'01100010'
0141 2760 00428 CALL assert_wr0 ;设置为Page1
00429
0142 3007 00430 MOVLW 0x07
0143 0087 00431 MOVWF PORTC
0144 276D 00432 CALL assert_rd
0145 087C 00433 MOVF mdata,W
0146 00B1 00434 MOVWF curr ;取得当前的Page
00435 ; PAGE 0
0147 0187 00436 CLRF PORTC
0148 3022 00437 MOVLW b'00100010'
0149 2760 00438 CALL assert_wr0 ;返回Page0
00439
014A 3003 00440 MOVLW 0x03
014B 0087 00441 MOVWF PORTC
014C 276D 00442 CALL assert_rd ;读入BNDY
00443
014D 0AFC 00444 INCF mdata,F ;BNDY++
014E 3080 00445 MOVLW PAGE_STOP
014F 027C 00446 SUBWF mdata,W
0150 1C03 00447 BTFSS STATUS,C
0151 2954 00448 GOTO packet1 ;计算overlap
0152 3046 00449 MOVLW PAGE_START
0153 00FC 00450 MOVWF mdata
0154 00451 packet1:
0154 0831 00452 MOVF curr,W
0155 027C 00453 SUBWF mdata,W
0156 1903 00454 BTFSC STATUS,Z ;如果(BNDY+1)==CURR的话,则没有新数据
0157 2925 00455 GOTO main0 ;中断
00456
00457
00458 ;-----------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -