亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? picnic.asm.icd

?? PIC單片機實現的一種網絡單片機
?? ICD
?? 第 1 頁 / 共 5 頁
字號:
        MOVLW   0x05
        CALL    assert_wr
        MOVLW   0xB4
        CALL    assert_wr

        CALL    calc_tcp_sum			;計算TCP的SUM

        MOVLW   0x04
        MOVWF   PORTC
        MOVLW   PAGE_BEGIN
        CALL    assert_wr0

        MOVLW   0x05
        MOVWF   PORTC
        MOVLW   0x3C
        CALL    assert_wr0

        MOVLW   0x06
        MOVWF   PORTC
        CLRW
        CALL    assert_wr0
        CALL    transmit
        CALL    next_seq_no			;seq_no ++
        RETURN

;-----------------------------------------------------------------------------------
;		計算Checksum
calc_tcp_sum:
        CLRF    bytes				;調整2byte對齊

        MOVLW   this_ip				;計算自己的IP地址
        MOVWF   FSR
        MOVF    INDF,W
        CALL    calc_sum
        INCF    FSR,F
        MOVF    INDF,W
        CALL    calc_sum
        INCF    FSR,F
        MOVF    INDF,W
        CALL    calc_sum
        INCF    FSR,F
        MOVF    INDF,W
        CALL    calc_sum

        MOVF    ip_src,W			;計算對方的IP地址
        CALL    calc_sum
        MOVF    ip_src+1,W
        CALL    calc_sum
        MOVF    ip_src+2,W
        CALL    calc_sum
        MOVF    ip_src+3,W
        CALL    calc_sum

        CLRW					;計算協議號
        CALL    calc_sum
        MOVLW   TCP_PROTO
        CALL    calc_sum

        MOVF    remote_len+1,W			;計算byte數量
        CALL    calc_sum
        MOVF    remote_len,W
        CALL    calc_sum

        MOVLW   0x32				;PACKET_SIZE + IP_SIZE + 16
        MOVWF   remote_adr
        MOVLW   PAGE_BEGIN
        MOVWF   remote_adr+1
        CALL    set_checksum			;設置到RTL8019的Buffer
        RETURN

;===================================================================================
;		初始化NIC
;===================================================================================
initialize:
        CALL    init_nic			;Reset NIC
        CALL    getmac				;取得MAC地址
        CALL    setmac				;設置MAC地址
;	初始化RingBuffer
        BSF     STATUS,RP0
        MOVLW   fifo_top
        MOVWF   fifo_buff & 0x7F
        MOVWF   fifo_poi & 0x7F
        MOVWF   fifo_bottom & 0x7F

        CLRF    fifo_cn & 0x7F
        CLRF    fifo_line_cn & 0x7F
        BCF     STATUS,RP0

        RETURN

;-----------------------------------------------------------------------------------
;		RTL8019的Reset
;-----------------------------------------------------------------------------------
reset_nic:
        CLRF    PORTC
        MOVLW   0x21
        CALL    assert_wr0			;STOP OPERATION

        MOVLW   0x1F
        MOVWF   PORTC
        CALL    assert_rd			;讀入1Fh

        MOVLW   0x1F
        MOVWF   PORTC
        MOVF    mdata,W
        CALL    assert_wr0			;回寫1Fh
reset_nic0:
        MOVLW   0x07
        MOVWF   PORTC
        CALL    assert_rd			;讀入Status
        BTFSS   mdata,7
        GOTO    reset_nic0			;檢查Reset是否已經結束
        RETURN

;-----------------------------------------------------------------------------------
;		初始化RTL8019
;-----------------------------------------------------------------------------------
init_nic:
        CALL    reset_nic

        MOVLW   0x0E
        MOVWF   PORTC				;DCR(Data Configuration Register)
        MOVLW   0x68
        CALL    assert_wr0

        MOVLW   0x0A
        MOVWF   PORTC
        CLRW
        CALL    assert_wr0			;for over flow

        MOVLW   0x0B
        MOVWF   PORTC
        CLRW
        CALL    assert_wr0			;for over flow

        MOVLW   0x01
        MOVWF   PORTC
        MOVLW   PAGE_START			;PAGE START
        CALL    assert_wr0

        MOVLW   0x02
        MOVWF   PORTC
        MOVLW   PAGE_STOP			;PAGE STOP
        CALL    assert_wr0

        MOVLW   0x03
        MOVWF   PORTC
        MOVLW   PAGE_START			;BDRY
        CALL    assert_wr0

        MOVLW   0x0C
        MOVWF   PORTC				;RCR
        MOVLW   0x00
        CALL    assert_wr0

        MOVLW   0x0D
        MOVWF   PORTC				;TCR
        MOVLW   0x02				;Loop Back
        CALL    assert_wr0

        MOVLW   0x0F				;IMR
        MOVWF   PORTC
        MOVLW   0x1F
        CALL    assert_wr0

        MOVLW   0x07				;ISR
        MOVWF   PORTC
        MOVLW   0xFF
        CALL    assert_wr0

        CLRF    PORTC				;CR(Command Register)
        MOVLW   0x22				;START OPERATION with L/B
        CALL    assert_wr0
        RETURN

;-----------------------------------------------------------------------------------
;		取得MAC地址
;-----------------------------------------------------------------------------------
getmac:
        CLRF    PORTC
        MOVLW   0x22
        CALL    assert_wr0

        CLRF    remote_adr
        CLRF    remote_adr+1
        MOVLW   .12				;讀12個bytes
        MOVWF   remote_len
        CLRF    remote_len+1
        CALL    remote_read

        MOVLW   0x06
        MOVWF   gcn1				;MAC地址是6 bytes
        MOVLW   mymac				;設置mymac的地址
        MOVWF   FSR
get_mac0:
        MOVLW   0x10
        MOVWF   PORTC
        CALL    assert_rd			;開始讀
        CALL    assert_rd

        MOVF    mdata,W				;將MAC地址讀入PIC
        MOVWF   INDF
        INCF    FSR,F
        DECFSZ  gcn1,F
        GOTO    get_mac0
        RETURN

;-----------------------------------------------------------------------------------
;		設置MAC地址
;-----------------------------------------------------------------------------------
setmac:
; PAGE 1
        CLRF    PORTC
        MOVLW   b'01100010'
        CALL    assert_wr0

        MOVLW   0x01
        MOVWF   PORTC
        MOVLW   mymac
        MOVWF   FSR
        MOVLW   0x06
        MOVWF   gcn1				;MAC地址的長度是6
set_mac0:
        MOVF    INDF,W
        CALL    assert_wr0			;設置MAC地址
        INCF    FSR,F
        INCF    PORTC,F
        DECFSZ  gcn1,F
        GOTO    set_mac0

        MOVLW   0x07
        MOVWF   PORTC
        MOVLW   PAGE_START+1
        CALL    assert_wr0

        MOVLW   0x08
        MOVWF   PORTC
        CLRW
        CALL    assert_wr0
        INCF    PORTC,F
        CLRW
        CALL    assert_wr0
        INCF    PORTC,F
        CLRW
        CALL    assert_wr0
        INCF    PORTC,F
        CLRW
        CALL    assert_wr0
        INCF    PORTC,F
        CLRW
        CALL    assert_wr0
        INCF    PORTC,F
        CLRW
        CALL    assert_wr0
        INCF    PORTC,F
        CLRW
        CALL    assert_wr0
        INCF    PORTC,F
        CLRW
        CALL    assert_wr0

        CLRF    PORTC
        MOVLW   0x22
        CALL    assert_wr0
        RETURN

;-----------------------------------------------------------------------------------
;		準備Remote DMA寫入
;-----------------------------------------------------------------------------------
remote_write:
        MOVLW   0x08
        MOVWF   PORTC
        MOVF    remote_adr,W
        CALL    assert_wr0

        MOVLW   0x09
        MOVWF   PORTC
        MOVF    remote_adr+1,W
        CALL    assert_wr0

        MOVLW   0x0A
        MOVWF   PORTC
        MOVF    remote_len,W
        CALL    assert_wr0

        MOVLW   0x0B
        MOVWF   PORTC
        MOVF    remote_len+1,W
        CALL    assert_wr0

        CLRF    PORTC
        MOVLW   b'00010010'
        CALL    assert_wr0			;可以開始寫入了

        MOVLW   0x10
        MOVWF   PORTC
        RETURN

;-----------------------------------------------------------------------------------
;		準備Remote DMA讀取
;-----------------------------------------------------------------------------------
remote_read:
        MOVLW   0x08
        MOVWF   PORTC
        MOVF    remote_adr,W
        CALL    assert_wr0

        MOVLW   0x09
        MOVWF   PORTC
        MOVF    remote_adr+1,W
        CALL    assert_wr0

        MOVLW   0x0A
        MOVWF   PORTC
        MOVF    remote_len,W
        CALL    assert_wr0

        MOVLW   0x0B
        MOVWF   PORTC
        MOVF    remote_len+1,W
        CALL    assert_wr0

        CLRF    PORTC
        MOVLW   0x0A
        CALL    assert_wr0			;可以開始讀取了

        MOVLW   0x10
        MOVWF   PORTC
        RETURN

;-----------------------------------------------------------------------------------
;		計算Checksum
;-----------------------------------------------------------------------------------
calc_sum:
        BTFSS   bytes,0				;檢查對齊方式
        GOTO    calc_sum_high
; Low Byte
        ADDWF   sum,F
        MOVLW   0x01
        BTFSC   STATUS,C
        ADDWF   sum+1,F
        BTFSC   STATUS,C
        ADDWF   sum,F
        BTFSC   STATUS,C
        ADDWF   sum+1,F
        INCF    bytes,F
        RETURN
; High Byte
calc_sum_high:
        ADDWF   sum+1,F
        MOVLW   0x01
        BTFSC   STATUS,C
        ADDWF   sum,F
        BTFSC   STATUS,C
        ADDWF   sum+1,F
        INCF    bytes,F
        RETURN

assert_wr2times:
        CLRW
        CALL    assert_wr
        CLRW
        GOTO    assert_wr

;-----------------------------------------------------------------------------------
;	送信數據=mdata
assert_wr2x:
        MOVLW   0x01
        ADDWF   remote_len,F
        BTFSC   STATUS,C
        INCF    remote_len+1,F
        MOVF    mdata,W
        GOTO    assert_wr
;	送信數據=W
assert_wr2
        MOVWF   mdata
        MOVLW   0x01
        ADDWF   remote_len,F
        BTFSC   STATUS,C
        INCF    remote_len+1,F
        MOVF    mdata,W

;-----------------------------------------------------------------------------------
;		向RTL8019寫入(考慮Checksum)
;-----------------------------------------------------------------------------------
assert_wr:
        MOVWF   PORTD
assert_wr_2
        BTFSS   bytes,0
        GOTO    assert_wr_high

        ADDWF   sum,F
        MOVLW   0x01
        BTFSC   STATUS,C
        ADDWF   sum+1,F
        BTFSC   STATUS,C
        ADDWF   sum,F
        BTFSC   STATUS,C
        ADDWF   sum+1,F
        INCF    bytes,F
        GOTO    assert_wr0_2
assert_wr_high:
        ADDWF   sum+1,F
        MOVLW   0x01
        BTFSC   STATUS,C
        ADDWF   sum,F
        BTFSC   STATUS,C
        ADDWF   sum+1,F
        INCF    bytes,F
        GOTO    assert_wr0_2

;-----------------------------------------------------------------------------------
;		單純的向RTL8019寫入
;-----------------------------------------------------------------------------------
assert_wr0:
        MOVWF   PORTD
assert_wr0_2:
        BSF     STATUS,RP0
        CLRF    TRISD & 0x7F
        BCF     STATUS,RP0

        BCF     WRITE

        BTFSS   RDY
        GOTO    $-1

        BSF     WRITE

        BSF     STATUS,RP0
        MOVLW   0xFF
        MOVWF   TRISD & 0x7F
        BCF     STATUS,RP0
        RETURN

assert_rd:
        BCF     READ

        BTFSS   RDY				;~Wait
        GOTO    $-1

        MOVF    PORTD,W
        MOVWF   mdata

        BSF     READ
        RETURN

;-----------------------------------------------------------------------------------
;		Packet送信的相關處理
;-----------------------------------------------------------------------------------
transmit_this_ip:
        MOVLW   this_ip
        MOVWF   FSR
        MOVLW   0x04
transmit_nbytes:
        MOVWF   gcn1
        MOVLW   0x10
        MOVWF   PORTC
transmit0:
        MOVF    INDF,W
        CALL    assert_wr
        INCF    FSR,F
        DECFSZ  gcn1,F
        GOTO    transmit0
        RETURN

transmit_nbytes2:
        MOVWF   gcn1
        MOVLW   0x10
        MOVWF   PORTC
transmit2_0
        MOVF    INDF,W
        CALL    assert_wr2
        INCF    FSR,F
        DECFSZ  gcn1,F
        GOTO    transmit2_0
        RETURN

;-----------------------------------------------------------------------------------
;		Packet送信
;-----------------------------------------------------------------------------------
transmit:
retry:
        CLRF    PORTC
        CALL    assert_rd

        BTFSC   mdata,2				;檢查送信bit
        GOTO    transmit			;等待送信

        CLRF    PORTC
        MOVLW   b'00100110'			;設立送信bit
        CALL    assert_wr0			;送信!
trans100:
        MOVLW   0x04
        MOVWF   PORTC
        CALL    assert_rd

        BTFSC   mdata,0
        GOTO    transmit9			;送信完了?
        BTFSC   mdata,3
        GOTO    retry

        GOTO    trans100
transmit9:
        RETURN

;-----------------------------------------------------------------------------------
;		準備Ethernet Header
;-----------------------------------------------------------------------------------
prepare_ether2:
        MOVLW   PACKET_SIZE + ARP_SIZE
        MOVWF   remote_len
        GOTO    prepare_ether1
prepare_ether:
        MOVLW   PACKET_SIZE + IP_SIZE
        MOVWF   remote_len
prepare_ether1:
        CLRF    remote_len+1
        CLRF    remote_adr
        MOVLW   PAGE_BEGIN
        MOVWF   remote_adr+1
        CALL    remote_write

        MOVLW   0x10				;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美不卡在线| 久久国产剧场电影| 男男视频亚洲欧美| 91麻豆精东视频| 精品国产一区二区三区不卡| 中文字幕一区二区三区不卡| 日本欧美久久久久免费播放网| 国产91在线看| 精品国产三级电影在线观看| 一区二区三区在线播| 成人短视频下载| 26uuu国产日韩综合| 天天影视网天天综合色在线播放| 99久久综合精品| 久久久av毛片精品| 日本不卡1234视频| 4hu四虎永久在线影院成人| 亚洲视频一区二区免费在线观看| 岛国一区二区三区| 精品国产91九色蝌蚪| 午夜精品一区在线观看| 色乱码一区二区三区88| 国产精品久久久久久久久久免费看| 久久国内精品视频| 日韩一区二区三区av| 天天综合色天天综合色h| 日本丰满少妇一区二区三区| 国产精品美女久久久久久久久久久| 精品不卡在线视频| 在线观看中文字幕不卡| 777午夜精品视频在线播放| 亚洲欧美激情小说另类| www.亚洲精品| 久久久国产精品午夜一区ai换脸| 国产一区美女在线| 欧美国产精品一区| thepron国产精品| 亚洲黄色小说网站| 一本久久精品一区二区| 一区二区三区毛片| 欧美日韩大陆一区二区| 视频一区二区欧美| 欧美mv日韩mv国产网站app| 国产一区二区在线观看视频| 久久在线观看免费| 成人av电影在线播放| 亚洲欧美另类小说视频| 欧美天堂亚洲电影院在线播放| 五月天激情综合| 欧美成人精品福利| 国产精品一二二区| 亚洲精品视频在线观看网站| 欧美日韩精品一二三区| 国内精品久久久久影院色| 国产欧美精品一区二区三区四区| 成人在线综合网站| 亚洲一区二区综合| 精品精品欲导航| 成人av网站在线| 亚洲无人区一区| 久久午夜电影网| 91视频在线观看免费| 日韩高清国产一区在线| 欧美国产精品久久| 欧美日韩不卡一区| 国产宾馆实践打屁股91| 亚洲高清视频中文字幕| 久久免费精品国产久精品久久久久| 成人激情校园春色| 日韩激情一二三区| 国产精品久久久久久户外露出 | 国产欧美精品一区二区三区四区| 成人黄色777网| 免费在线观看一区二区三区| 国产精品女同一区二区三区| 欧美日韩成人一区二区| 盗摄精品av一区二区三区| 香蕉乱码成人久久天堂爱免费| 国产精品午夜免费| 7799精品视频| 欧美午夜精品一区二区三区| 国产伦精品一区二区三区视频青涩| 亚洲精品网站在线观看| 国产日韩欧美不卡| 日韩免费观看高清完整版在线观看| 不卡的av电影| 国产一区二区毛片| 男人的天堂亚洲一区| 亚洲色图19p| 欧美国产一区二区| 久久综合九色综合97_久久久| 精品视频一区二区不卡| av成人老司机| 国产成人在线视频网址| 理论片日本一区| 日精品一区二区三区| 亚洲综合丁香婷婷六月香| 国产精品乱人伦| 欧美国产精品一区| 日本一二三四高清不卡| 久久天堂av综合合色蜜桃网| 日韩欧美国产一区在线观看| 欧美猛男男办公室激情| 欧美在线免费观看亚洲| 一本大道久久a久久精二百| 成人精品国产免费网站| 国产成人av自拍| 国产成人av电影在线观看| 国产一区二区在线观看视频| 久久国产尿小便嘘嘘尿| 麻豆91在线播放免费| 亚洲午夜国产一区99re久久| 亚洲一区二区在线观看视频 | av日韩在线网站| 成人精品鲁一区一区二区| 国产.欧美.日韩| 波多野结衣精品在线| 99久久精品99国产精品| 91欧美一区二区| 色婷婷综合久久久| 欧美日韩一区二区在线观看视频 | 久久久精品综合| 国产日韩亚洲欧美综合| 中文字幕免费不卡在线| 国产精品久久久久永久免费观看 | 久久er精品视频| 狠狠色丁香久久婷婷综合_中 | 天天亚洲美女在线视频| 免费成人在线播放| 国产一区二区三区观看| 成人免费福利片| 欧洲精品一区二区三区在线观看| 欧美色图一区二区三区| 日韩一区二区在线播放| 久久噜噜亚洲综合| 中文字幕亚洲在| 午夜精品免费在线| 黑人精品欧美一区二区蜜桃| 国产黄色精品网站| 色狠狠色狠狠综合| 日韩一区二区在线看| 久久精品欧美一区二区三区麻豆 | 91在线观看一区二区| 91成人在线观看喷潮| 日韩欧美国产wwwww| 国产精品美女一区二区三区| 亚洲一区二区五区| 国产伦理精品不卡| 欧美丝袜自拍制服另类| 26uuu亚洲综合色| 亚洲精品欧美在线| 免费不卡在线观看| 色综合天天做天天爱| 日韩精品中文字幕在线不卡尤物| 国产日韩在线不卡| 丝袜诱惑亚洲看片| 成人性视频免费网站| 欧美日韩大陆在线| 中文字幕欧美一| 免费久久精品视频| 色婷婷av一区二区三区软件| 欧美本精品男人aⅴ天堂| 亚洲免费视频成人| 国产一区欧美一区| 日韩欧美亚洲一区二区| 成人免费视频在线观看| 激情五月激情综合网| 欧美日韩dvd在线观看| 亚洲视频中文字幕| 国产麻豆午夜三级精品| 91精品国产一区二区三区蜜臀| 中文字幕亚洲一区二区av在线| 日韩av成人高清| 欧美色倩网站大全免费| 中日韩免费视频中文字幕| 麻豆精品新av中文字幕| 欧美日韩mp4| 亚洲综合久久久久| 99久久精品免费| **网站欧美大片在线观看| 国产精品一区二区不卡| 日韩一级片在线观看| 午夜精品福利视频网站| 91国偷自产一区二区三区成为亚洲经典 | 欧美在线一区二区三区| 亚洲欧美一区二区在线观看| 国产大陆a不卡| 国产无遮挡一区二区三区毛片日本| 视频一区免费在线观看| 欧美日韩一区二区电影| 亚洲香蕉伊在人在线观| 日本电影欧美片| 一区二区免费在线播放| 97久久超碰国产精品| 中文字幕va一区二区三区| 国产精品自拍一区| 国产三级三级三级精品8ⅰ区| 久久国产福利国产秒拍| 日韩精品一区二区三区中文不卡| 秋霞影院一区二区|