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

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

?? slx11s.asm

?? SL811HS的參考源代碼
?? ASM
字號:
;--------------------------------------------------------------------------
;  slx11s.asm :  SL11/SL811S basic IO subroutines
;  Copyright:  (c)1997 ScanLogic Corporation
;  Revision:   May/22/96        SNguyen       Revised
;              May/28/98        Clean-up
;              Oct/23/00        revised
;
;--------------------------------------------------------------------------
;--------------------------------------------------------------------------
; SL11/SL811S signal PIN map
;--------------------------------------------------------------------------
A0         REG     P2.0
IRQ        REG     P2.1
NRST       REG     P2.2
NCS        REG     P2.3
NWRITE     REG     P2.4
NREAD      REG     P2.5

;==========================================================================
; SL11/SL811S WR
;==========================================================================
WrClock: .macro
    CLR     NWRITE
    SETB    NWRITE
   .endm    

;==========================================================================
; SL11/SL811S RD
;==========================================================================
RdClock: .macro
    CLR     NREAD
    MOV     A,P1
    SETB    NREAD
   .endm    

;==========================================================================
; SetInput
;==========================================================================
SetInput: .macro
    mov     p1,#ffh       ;config P1 port for input
    .endm

;==========================================================================
;MACRO sWrite
;==========================================================================
sWrite: .macro address,data
    mov   b,#address
    mov   a,#data
    acall SL11Write
    .endm

;==========================================================================
;MACRO sRead
;==========================================================================
sRead:  .macro address
    mov   b,#address
    acall SL11Read
   .endm

;==========================================================================
;MACRO mEXIT 
;==========================================================================
mEXIT .macro
    ret                     ;if use ISR then change to rti
    .endm

Poll_IRQ .macro
    jnb    IRQ,$	    ;wait for SL11/SL811S Interrupt bit
    .endm

;--------------------------------------------------------------------------
; SL11Addr: P1 = address of SL11/SL811S register or memory
;--------------------------------------------------------------------------
SL11Addr:
    CLR    A0             ;set A0 low for address
    CLR	   NCS            ;assert CS
    WrClock               ;togle the WR signal
    SETB   NCS            ;negate CS
    SETB   A0             ;Set A0 high for Data
    SetInput
    ret

;--------------------------------------------------------------------------
; Input:  B = address of SL11/SL811S register or memory
; Output: A = return data 
; A = SL11Read(B)
;--------------------------------------------------------------------------
SL11Read:
    mov    P1,B
    call   SL11Addr       ;Setup Address Write
SL11DataRd:
    CLR	   NCS            ;assert CS for read
    RdClock
    SETB   NCS            ;negate CS
    ret                  

;--------------------------------------------------------------------------
; Input:  B = address of SL11/SL811S register or memory
; Output: A = data to be written
; SL11Write(A,B)
;--------------------------------------------------------------------------
SL11Write:
    mov    P1,B
    call   SL11Addr       ;Setup SL11/SL811S Address
SL11DataWr:
    MOV    P1,A           ;Setup Data
    CLR    NCS
    WrClock               ;Toggle WR signal
    SETB   NCS            ;negate CS
    SetInput
    ret                     
                             
;--------------------------------------------------------------------------
; Check Image LineSize for DMA or PIO
;--------------------------------------------------------------------------
GetCmd:
    mov     a,#EP0Buf           ;read from wValue
    mov     R0,#bmRequest	;get 8 bytes command
    mov     R1,#8h              ;setup to transfer 8 bytes
;--------------------------------------------------------------------------
; Input: R0 = internal ram buffer
;        R1 = count 
;        A  = address of SL11/SL811S memory
; Ex: SL11ReadM(R0=buffer, R1=count, A=0x60)
;--------------------------------------------------------------------------
SL11ReadM:
    mov    P1,A
    call   SL11Addr
rloop:
    CLR    NCS
    CLR    NREAD
    mov    @R0,P1           ;write to internal ram
    SETB   NREAD
    SETB   NCS
    inc    R0               ;inc ram pointer
    djnz   R1,rloop
    ret

;--------------------------------------------------------------------------
;SL11/SL811S Memory test
;   return r7 = error, r7=0=success
;--------------------------------------------------------------------------
SL11MemTest:
    mov    r7,#0
    mov    b,#EP0Buf
    mov    r0,#sMemSize
lwrite:
    mov    a,b              ;no auto increment mode
    acall  SL11Write
    inc    b
    djnz   r0,lwrite

    mov    r0,#sMemSize     ;r0 the total length of SL memory
    mov    b,#EP0Buf        ;b the beginning memory space of SL11/SL811S
lVerify:
    acall  SL11Read         ;read verify
    xrl    a,b              ;check for error
    jz     noerR0
    inc    r7               ;error
noerR0:
    mov    a,b              ;write complement
    cpl    a
    acall  SL11Write        ;write and read back verify
    acall  SL11Read
    cpl    a		    ;complement the result
    xrl    a,b
    jz     noerR1
    inc    r7               ;error
noerR1:
    inc    b
    djnz   r0,lVerify

    mov    r0,#sMemSize
    mov    a,#EP0Buf
    mov    P1,A
    call   SL11Addr         ;setup address
uloop0:
    call   SL11DataWr       ;write data
    inc    a
    djnz   r0,uloop0

    mov    r0,#sMemSize
    mov    b,#EP0Buf
    mov    a,b
    mov    P1,b
    call   SL11Addr         ;setup address
uloop1:
    call   SL11DataRd       ;read data
    xrl    a,b
    jz     noerR2
    inc    r7               ;error
noerR2:
    inc    b
    djnz   r0,uloop1
    ret

;--------------------------------------------------------------------------
; Setup to receive EP0Len from host
;--------------------------------------------------------------------------
EP0Receive:
    sWrite  EP0XferLen,EP0Len
    mov     b,#EP0Control         ; set Receive data from host
    mov     a,#03h  
    ajmp    SL11Write

;--------------------------------------------------------------------------
;SL11Init:
;--------------------------------------------------------------------------
SL11Init:
    mov     DmaFlags,#0
    sWrite  USBAdd,0           ;set address = 0

    sWrite  EP0Counter,0       ;clear all endpoint counters
                               ;setup EndPoint0
    sWrite  EP0Address,EP0Buf  ;Setup EP0 Buffer
    acall   EP0Receive

;Use PIO on Endpoint 1 to send
    sWrite  EP1AAddress,uBufA  ;Share SL11/SL811S buffer for Data0 packet
    sWrite  EP1BAddress,uBufB  ;Share SL11/SL811S buffer for Data1 packet

;Use PIO on Endpoint 2 to receive
    sWrite  EP2AAddress,uBufA  ;setup for PIO
    sWrite  EP2BAddress,uBufB
    sWrite  EP2AControl,0ah    ;setup EP2 DATA0 for receiving
    sWrite  EP2BControl,042h   ;setup EP2 DATA1 for receiving
    sWrite  EP2BXferLen,uXferLen
    sWrite  EP2AXferLen,uXferLen

;Use DMA on Endpoint 3 to send
    sWrite  EP3AAddress,uBufA  ;Setup for DMA
    sWrite  EP3BAddress,uBufB
    sWrite  CtrlReg,3h         ;write(5,3) enable SL11/SL811S DMA
    sWrite  IntEna,IntMask     ;set interupt mask
    sWrite  IntStatus,ffh      ;Clear the interrupt all flags
    ret

;----------------------------------------------------------------------------
;EP0SendPkg from EPROM space point by DPTR
;input dptr = pointer to EPROM
;        r0 = length
;----------------------------------------------------------------------------
EP0SendPkg:
    mov     b,#EP0XferLen   ;Update the current length of EndPoint0
    mov     a,r0
    acall   SL11Write       ;acall SL11Write 

    mov     P1,#EP0Buf      ;pointer to EP0Buf
    call    SL11Addr        ;setup SL11/SL811S Addr
LoadSL11:
    clr     a
    movc    a,@a+dptr       ;fetch const data from EPROM point by DPTR
    call    SL11DataWr
    inc     dptr
    djnz    R0,LoadSL11     ;repeat until R0=0

;----------------------------------------------------------------------------
;EP0Send    Set ready to Send
;----------------------------------------------------------------------------
EP0Send:
    mov     b,#EP0Control   ;Setup to send data to host
    mov     a,#47h          
    ajmp    SL11Write       ;acall SL11Write and return

;--------------------------------------------------------------------------
;SetupEP2:
;--------------------------------------------------------------------------
SetupEP2:
    cpl     EP2DataFlag
    jb      EP2DataFlag,EP2Toggle
    sWrite  EP2BControl,43h     ;Setup to receive data from host on DATA1 EP2
    ret
EP2Toggle:
    sWrite  EP2AControl,0bh     ;Setup to receive data from host on DATA0 EP2
    ret

;--------------------------------------------------------------------------
;SetupEP1:
;  R0 = length 
;--------------------------------------------------------------------------
SetupEP1:
    cpl     EP1DataFlag
    jb      EP1DataFlag,EP1Toggle
    mov     a,r0
    mov     b,#EP1BXferLen
    acall   SL11Write
    sWrite  EP1BControl,47h
    ret
EP1Toggle:
    mov     a,r0
    mov     b,#EP1AXferLen
    acall   SL11Write
    sWrite  EP1AControl,0fh
    ret

;---------------------------------------------------------------------------
; NOTE: if not used DMA these subroutine below can be removed
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;LineSize0: The low byte number to be transfed.
;LineSize1: The high byte number to be transfered.
;---------------------------------------------------------------------------
SL11EnableDma:
    sWrite  EP3AXferLen,uXferLen
    sWrite  EP3BXferLen,uXferLen
    jnb     EP3DataFlag,NoToggle
    sWrite  EP3AControl,4eh ;setup SL11/SL811S EndPoint3A and EndPoint3B
    sWrite  EP3BControl,06h ;Set EP 3B control reg.
    sjmp    DmaCommon
NoToggle:
    sWrite  EP3AControl,0eh ;setup SL11/SL811S EndPoint3A and EndPoint3B
    sWrite  EP3BControl,46h ;Set EP 3B control reg.
DmaCommon:
    mov     b,#DMACntLow    ;Load the low byte of DMA total count.
    mov     a,LineSize0
    acall   SL11Write
    mov     b,#DMACntHigh   ;Load the high byte of DMA total count.
    mov     a,LineSize1
    ajmp    SL11Write       ;acall SL11Write and return

;--------------------------------------------------------------------------
; Special case for end point 0 in DMA cycle
;--------------------------------------------------------------------------
EP0Toggle:
    Poll_IRQ                    ;wait for SL11/SL811S interrupt bit
    sWrite  IntStatus,01h       ;Clear EP0 interrupts
    acall   EP0Receive          ;Ready to receive command from EP0
    ret
;--------------------------------------------------------------------------
; input: bmRequest
;--------------------------------------------------------------------------
EP0_Finish:
    acall   EP0Send                 ;toggle DATA bit by just send ACK
    acall   EP0Toggle
    jnb     bmRequest.7,HostWrSkip  ;check bmRequest read/write direction
    acall   EP0Toggle
HostWrSkip:
    ret

;--------------------------------------------------------------------------
; Read Image Line using DMA, until new command from EP0 
;--------------------------------------------------------------------------
ReadDMALine:
    acall   EP0_Finish          ;Host finish all the command
StartDMA:
    MOV     P1,wValue0          ;Write to EPP Address
    call    EPPAddrWr
    acall   SL11EnableDma       ;kick off the DMA.
;----------------------------------------------------------------------
; SL11/SL811S DMA hardware will automatic set ARM bit to EP3A and EP3B
; software need to wait for DMA Interrupt Done.
; NOTE: CPU should not access SL11/SL811S IO, because the 8031 does not
; have the IO and DMA arbitration.  However, the CPU can poll the
; SL11/SL811S IRQ bit or wait for the DMA Interrupt from SL11/SL811S chip.
;----------------------------------------------------------------------
    Poll_IRQ                    ;wait DMA Done interrupt bit
    sWrite  IntStatus,10h       ;Clr DMADone int flag.
wLoop:
    sRead   IntStatus           ;Read the interrupt bit to see what happen
    mov     b,a
    anl     a,#HostMask
    jnz     ChkRem              ;if host request abort dma
    jb      b.7,wLoop           ;progress done check remainder

;----------------------------------------------------------------------
;SL11/SL811S DMA hardware doesnot support transfer the remainder. Software need 
;to check to re-send the remainder last packet.
;Software need to know on the last packet, which DATA0/DATA1 is used
;for the re-send the last packet
;----------------------------------------------------------------------
ChkRem:
    sRead   DATASet
    mov     b,a
    mov     r1,#EP3BControl
    mov     r2,#EP3BXferLen
    mov     a,LineSize0
    anl     a,#3fh
    jz      SkipReArm
    jb      b.3,Set3B          
    mov     r2,#EP3AXferLen
    mov     r1,#EP3AControl
Set3B:
    mov     b,r2
    acall   SL11Write           ;write remainder to xfer length
    mov     b,r1
    acall   SL11Read            ;Read Current EP3x control register
    orl     a,#1h               ;Re-ARM current EP3x endpoint
    acall   SL11Write           ;last remainder packet will be sent

SkipReArm:
    sRead   IntStatus
    anl     a,#HostMask
    jnz     HostAbort
    mov     b,r1
    acall   SL11Read
    jb      acc.0,SkipReArm    ;check EP3 xferdone
    sRead   DATASet
    jnb     acc.3,sToggle
    cpl     EP3DataFlag
sToggle:
    acall   MovStepper
    sjmp    StartDMA
HostAbort:
    acall   MovStepper
    ret

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品一区二区| 色拍拍在线精品视频8848| 精品免费视频一区二区| 免费看日韩精品| 26uuu国产电影一区二区| 国产精品综合久久| 中文字幕精品在线不卡| 一本一道综合狠狠老| 五月天丁香久久| 日韩精品一区二区三区三区免费| 国产一区视频导航| 亚洲男人的天堂在线观看| 欧美日精品一区视频| 久久国产剧场电影| 国产精品丝袜久久久久久app| 色综合久久天天综合网| 日本aⅴ免费视频一区二区三区 | 99久久综合国产精品| 亚洲欧洲精品天堂一级| 欧美性xxxxx极品少妇| 精品一区免费av| 综合电影一区二区三区| 日韩视频免费观看高清完整版| 成人一级视频在线观看| 日韩黄色免费网站| 国产精品女同一区二区三区| 欧美三级视频在线观看 | 国内成人免费视频| 亚洲免费观看在线视频| 精品少妇一区二区三区在线播放| av电影在线观看完整版一区二区| 视频精品一区二区| 国产精品大尺度| 日韩精品专区在线| 一本久道中文字幕精品亚洲嫩| 美女被吸乳得到大胸91| 亚洲精品五月天| 久久久久久黄色| 欧美一区二区三区四区久久| 成人综合在线网站| 免费看日韩精品| 亚洲自拍偷拍网站| 国产精品久久福利| 26uuu另类欧美| 欧美一区二区在线视频| 欧美在线小视频| 国产精品99久久久久久久女警| 日本中文字幕一区二区有限公司| 亚洲男同性恋视频| 国产精品你懂的| 久久久久久久性| 日韩视频在线一区二区| 欧美人与禽zozo性伦| 色哟哟一区二区三区| caoporm超碰国产精品| 国产精品99久| 国产精品一区二区黑丝| 狠狠网亚洲精品| 激情成人午夜视频| 久久99久久久欧美国产| 日韩黄色在线观看| 亚洲国产综合视频在线观看| 18成人在线观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美国产精品v| 国产视频在线观看一区二区三区| 欧美成人三级电影在线| 欧美老女人在线| 欧美精品九九99久久| 欧美日韩国产一区二区三区地区| 色噜噜狠狠色综合中国| 色综合久久久久综合99| 91麻豆精品秘密| 一本到不卡免费一区二区| 99久久国产综合精品色伊| 不卡视频在线看| 成人黄色小视频| 成人激情图片网| 不卡高清视频专区| 波多野结衣一区二区三区| 成人av在线资源| 91麻豆swag| 欧美日韩美女一区二区| 91精品国产综合久久精品| 欧美精选在线播放| 欧美一卡二卡在线| 精品sm在线观看| 久久久亚洲精品石原莉奈| 国产精品人妖ts系列视频| 亚洲三级电影网站| 亚洲成av人片一区二区梦乃| 天堂蜜桃一区二区三区 | 国产精品99久久久久久久vr| 国产美女娇喘av呻吟久久| 成人黄色小视频在线观看| 色老头久久综合| 欧美一区永久视频免费观看| 精品美女一区二区| 国产精品美女久久久久久| 亚洲在线成人精品| 久久精品久久99精品久久| 懂色中文一区二区在线播放| 欧日韩精品视频| 欧美mv和日韩mv的网站| 自拍偷拍欧美激情| 日韩在线播放一区二区| 国产精品一区二区男女羞羞无遮挡 | 欧美中文字幕一二三区视频| 91精选在线观看| 欧美国产一区二区在线观看| 亚洲一区二三区| 精品一区二区三区蜜桃| 91网址在线看| 欧美电影免费观看高清完整版在| 中文文精品字幕一区二区| 夜夜嗨av一区二区三区中文字幕| 久久99蜜桃精品| 欧美性感一区二区三区| 久久网站最新地址| 一卡二卡三卡日韩欧美| 国产精品1区2区| 欧美区视频在线观看| 国产精品久久久久影院老司 | 欧美羞羞免费网站| 国产日韩欧美不卡在线| 日韩精品电影在线观看| 97久久超碰国产精品| 精品国产伦一区二区三区观看体验 | 7777精品久久久大香线蕉 | 亚洲成人动漫av| 从欧美一区二区三区| 欧美一激情一区二区三区| 亚洲一区成人在线| av成人老司机| 欧美极品aⅴ影院| 免费的国产精品| 欧美日韩免费一区二区三区视频| 国产日产精品一区| 久久99精品久久久久婷婷| 在线日韩一区二区| 国产精品视频一区二区三区不卡| 美脚の诱脚舐め脚责91| 欧美精品18+| 亚洲综合精品自拍| 99国产精品视频免费观看| 久久精品一区二区三区av| 久久97超碰色| 日韩一级片在线观看| 午夜精品一区在线观看| 日本精品视频一区二区三区| 中文在线资源观看网站视频免费不卡| 麻豆一区二区三区| 911精品产国品一二三产区| 亚洲妇女屁股眼交7| 色就色 综合激情| 一区二区成人在线视频| 91在线观看一区二区| 自拍偷拍亚洲激情| 色婷婷综合中文久久一本| 成人免费视频在线观看| 99在线精品免费| 亚洲欧美偷拍三级| 91蜜桃网址入口| 亚洲欧美电影一区二区| 日本电影亚洲天堂一区| 亚洲综合久久av| 欧美男同性恋视频网站| 日韩中文字幕91| 精品三级av在线| 国产乱子轮精品视频| 久久色.com| 福利电影一区二区三区| 国产精品超碰97尤物18| 色88888久久久久久影院按摩| 一区二区三区在线看| 欧美日韩成人综合| 美国三级日本三级久久99 | 91精品国产高清一区二区三区蜜臀 | 日韩精品一二三| 欧美一区二区三区影视| 蜜桃视频在线一区| 国产日韩精品一区二区浪潮av| 成人性生交大片免费看中文| 一区二区中文视频| 欧美少妇xxx| 精品在线一区二区三区| 久久久国产一区二区三区四区小说 | 91丨九色丨蝌蚪富婆spa| 亚洲一区二区三区自拍| 欧美一区二区三区免费在线看 | 亚洲手机成人高清视频| 欧美主播一区二区三区| 日本人妖一区二区| xnxx国产精品| 91蝌蚪porny九色| 蓝色福利精品导航| 国产精品美女久久久久久| 精品视频资源站| 国产一区二三区| 一区二区欧美视频|