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

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

?? jry9524_63723_asm.htm

?? Cy7c63723的完整固件 cy7c63723和CY7C63001相比
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
; FUNCTION: ps2BAT
;
;========================================================================
ps2BAT:
    ;
    ; Delay about 500 ms
    ;
    mov    X, 10

BATouterWait:
    mov    A, 00h                       ; reset 1 ms counter
    mov    [dualInterface1ms], A        ; 
    and    A, 50                        ; set up for 50ms

BATinnerWait:
    iowr   WATCHDOG_REG                 ; clear watchdog reset
    cmp    A, [dualInterface1ms]
    jnz    BATinnerWait
    dec    X
    jnz    BATouterWait
    mov    A, 0AAh                      ; send AA to host
    mov    [ps2XmitBuffer0], A          ;
    mov    A, 00h                       ; send 00h to host
    mov    [ps2XmitBuffer1], A          ;
    mov    A, 02h                       ; buffer has 2 bytes
    mov    [ps2XmitBufferLen], A        ;
    mov    [ps2XmitLen], A              ; to send 2 bytes
    ret

;========================================================================
; FUNCTION: ps2GetHostByte
;
;    Gets a byte from host in (A), if any
;    On exit:
;        (cf) = 1 if receive error or host does not send data
;        (cf) = 0 if receive data
;
;========================================================================
ps2GetHostByte:
    call   ps2HostRequestToSend
    jc     ghbExit                      ; go if host does not request to 
                                        ; send data
    call   disable1msInterrupt          ; to avoid clock jitter
                                        ; during ps2 clock-in
    call   ps2Receive                   ; get byte in (A) 
                                        ; (cf) = 0 if ok
                                        ; (cf) = 1 if error in receiving data
    push   A                            ; save byte for later use
    call   enable1msInterrupt           ;
    pop    A                            ; restore received byte

ghbExit:
    ret

;========================================================================
; FUNCTION: ps2HostRequestToSend
;     (cf) = 1 if host does not request to send data; Else (cf) = 0.
;
;========================================================================
ps2HostRequestToSend:
    iord   PORT2
    and    A, (SCLK + SDATA)
    cmp    A, SCLK 
    jz     hrtsExit                     ; go if host requests to send data
                                        ; (clock high, data low)
    SETC                                ; indicate no host RTS
    ret

hrtsExit:
    CLEARC
    ret

;========================================================================
; FUNCTION: ps2HostInhibit
;     (cf) = 1 if host inhibits, else (CF) = 0
;
;========================================================================
ps2HostInhibit:
    iord   PORT2
    and    A, (SCLK)
    cmp    A, 0h
    jz     hInhibit                     ; go if host inhibits data
                                        ; (clock low)
    CLEARC                              ; indicate no host inhibit
    ret

hInhibit:
    SETC
    ret

;========================================================================
; FUNCTION: disable1msInterrupt
;
;========================================================================
disable1msInterrupt:
    iord   GLOBAL_INTERRUPT_REG    
    and    A, ~1MS_INT        
    iowr   GLOBAL_INTERRUPT_REG    
    ret

;========================================================================
; FUNCTION: enable1msInterrupt
;
;========================================================================
enable1msInterrupt:
    rlc                                 ; save carry flag
    push   A                            ;
    iord   GLOBAL_INTERRUPT_REG    
    or     A, 1MS_INT        
    iowr   GLOBAL_INTERRUPT_REG    
    pop    A                            ; restore (CF)
    rrc                                 ;
    ret

;========================================================================
; FUNCTION: ps2SendNextByte          
;    Sends a byte from transmit buffer
;
;========================================================================
ps2SendNextByte:
    call   ps2HostRequestToSend
    jnc    snbExit                      ; go if host request to send
    call   ps2HostInhibit
    jc     snbExit                      ; go if host inhibits transmission
    mov    A, [ps2XmitBufferLen]        ; compute offset into next byte
    sub    A, [ps2XmitLen]              ; of xmit buffer
    mov    X, A                         ;
    mov    A, [X + ps2XmitBuffer]       ; get byte to send
    push   A                            ; save it for later use
    call   disable1msInterrupt          ; to prevent clock jitter
    pop    A                            ; get it back 
    call   ps2Send                      ; send it to host
    jc     snbNext                      ; go if sending error
    dec    [ps2XmitLen]                 ; point to next byte in buffer

snbNext:
    call    enable1msInterrupt    

snbExit:
    ret

;========================================================================
; FUNCTION: ps2SendResponseByte
;
;     Attempts to send a response byte (ACK, ERROR, RESEND) to the host. 
;
; On entry: (A) = response byte to be sent
;
;========================================================================
ps2SendResponseByte:
    push   A                            ; save sending byte for later use

srbLoop:
    call   ps2HostRequestToSend
    jnc    srbExit                      ; quit if host requests to send data
    call   ps2HostInhibit
    jc     srbNext                      ; go if host inhibits
    call   disable1msInterrupt
    pop    A                            ; get back sending byte    
    call   ps2Send                      ; and send it
    call   enable1msInterrupt
    ret

srbNext:
    iowr   WATCHDOG_REG                 ; clear watchdog timer
    jmp    srbLoop                      ; continue

srbExit:
    pop    A
    ret

;========================================================================
; FUNCTION: checkWheel
;
;    Checks whether proper sequence of commands have been issued
; by host to enable the wheel of the mouse. The sequence is 3 consecutive
; setting rate commands of 200, 100 and 80 reports/sec.
;
;    On Entry: (A) = rate (reports/sec)
;    On Exit: [ps2Wheel] = 1 if z-wheel enabled, else [ps2Wheel] = 0
;
;========================================================================

    XPAGEOFF
rateArray:               db    200, 100, 80
RATE_ARRAY_SIZE:        equ    03h
    XPAGEON


checkWheel:
    mov    [temp], A                    ; save rate for later use
    mov    A, 00h                       ; get 1st element in array
    index  rateArray                    ; 
    cmp    A, [temp]
    jnz    cw1                          ; go if rates mismatch
    
    mov    A, 00h
    mov    [sequence], A                ; start sequence from beginning

cw1:
    mov    A, [sequence]                ; get element in rateArray
    index  rateArray                    ;
    cmp    A, [temp]
    jnz    cwExit                       ; go if rates do not match
    inc    [sequence]                   ; next element
    mov    A, [sequence]        
    cmp    A, RATE_ARRAY_SIZE
    jc     cwExit2
    mov    A, 01h                       ; enable Z-WHEEL
    mov    [ps2Wheel], A                ; 

cwExit:
    mov    A, 00h
    mov    [sequence], A                ; reset index

cwExit2:
    ret

    
;********************************************************************
;
;             PS2 I/O Routines
;
;   Contains the code that sends/receives data via the 
;   D- and D+ output pins, in ps2 format
;
;********************************************************************
;
;
; Defines for the 4 combinations of clock and data
; (SCLK = D+, SDATA = D-)

CLKH_DATAH:              equ     07h    ; force D+ HiZ, D- HiZ
CLKL_DATAH:              equ     06h    ; force D+ Low, D- HiZ
CLKH_DATAL:              equ     05h    ; force D+ HiZ, D- Low
CLKL_DATAL:              equ     04h    ; force D+ Low, D- Low


;========================================================================
; FUNCTION: ps2Send
;
; Sends a byte in (A) 
;
;
; Returns: 
;   C= 0 if transmission was successful
;   C= 1 if not
;
;========================================================================
ps2Send:
    push    A                           ; save our data byte                    
    push    X                           ; save X register
    mov     X, A                        ; save data byte momentarily in X               
    DELAY   50                          ; delay a bit time between bytes
 
.l1:                                    ; some PC's.
    call    send_0                      ; clock out start bit
    jnc    .sendStartBitSuccess

    ; if we are being inhibited and the host is not requesting to send,
    ; then continue to try to send the start bit

.sendInhibitWait:
    iowr   WATCHDOG_REG                 ; reset the watchdog
    iord   PORT2
    and    A, (SCLK + SDATA)            ; if CLK=low (inhibit) and DATA=high
    cmp    A, SDATA                     ; then wait until host releases clock
    jz     .sendInhibitWait
    cmp    A, SCLK                      ; if host is requesting to send, then 
    jz     .error                       ; quit with error

    jmp    .l1                          ; else try to send start bit again

.sendStartBitSuccess:
    mov    A, 1
    mov    [ps2Temp0], A                ; keep track of parity
    mov    A, X                         ; get back our data byte
    mov    X, 8                         ; count 8 bits

.l2:
    asr    A                            ; shift bit to send into carry
    jc     .one                         ; if carry is zero
    call   send_0                       ; send a zero
    jc     .error                       ; problem, quit now
    jmp    .next                        ; 

.one:                                   ; else
    call   send_1                       ; send a 1
    jc     .error                       ; problem, quit now
    inc    [ps2Temp0]                   ; keep track of parity

.next:                                  ;
    dec    X                            ; decrement counter
    jz     .parity                      ; if at zero do parity
    jnc    .l2                          ; if -1, exit

.stopbit:
    call   send_1                       ; clock out stop bit  
    CLEARC
    jmp    .exit

.parity:
    mov    A, [ps2Temp0]                ; now send parity too
    jmp    .l2

.error:
    mov    A, CLKH_DATAH                ; make sure PS2 bus is left idle
    or     A, (PS2_PULLUP | USB_PS2_MODE)
    iowr   USB_STATUS_CONTROL_REG
    SETC
    jmp    .exit2

.exit:
    mov    A, CLKH_DATAH                ; make sure PS2 bus is left idle
    or     A, (PS2_PULLUP | USB_PS2_MODE)
    iowr   USB_STATUS_CONTROL_REG

.exit2:
    pop    X
    pop    A
    ret                         

;========================================================================
; FUNCTION: send_0,send_1
;
; Sends bit out the ps2 port
;
;
; Returns: 
;   C= 0 if transmission was successful
;   C= 1 if not
;
;========================================================================
;
; The following state table defines the next state for the clock-data pair
; to clock out a given bit.
;

XPAGEOFF
drive_table:
       db       0, 0, 0, CLKH_DATAL, 0, CLKL_DATAL, CLKH_DATAH, CLKL_DATAH
XPAGEON

send_1:
    push   A
    mov    A, CLKH_DATAH                ; start with clock high, data high
    jmp    clock

send_0:
    push   A
    mov    A,CLKH_DATAL                 ; start with clock high, data low

clock:
    push   A
    iord   PORT2                        ; read clock
    and    A, SCLK            
    pop    A    
    jnz    .l2
    SETC
    pop    A                            ; should be high
    ret

.l2:
    or     A, (PS2_PULLUP | USB_PS2_MODE)
    iowr   USB_STATUS_CONTROL_REG  ; set up register
    and    A, 07h
    DELAY  5 
    index  drive_table                  ; wait 5 us
    or     A, (PS2_PULLUP | USB_PS2_MODE)
    iowr   USB_STATUS_CONTROL_REG       ; write it out

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清视频一区二区| 精品一区二区三区视频在线观看 | 欧美日韩国产美| 2021国产精品久久精品| 日韩码欧中文字| 美国精品在线观看| 在线观看亚洲一区| 国产欧美日韩在线视频| 日韩国产精品久久| 色综合天天综合网天天狠天天| 欧美精品一区二区在线观看| 亚洲妇熟xx妇色黄| 不卡一区二区三区四区| 日韩欧美国产一区在线观看| 亚洲综合av网| 成人一区二区三区中文字幕| 日韩欧美自拍偷拍| 一区二区久久久久| av毛片久久久久**hd| 精品国产亚洲一区二区三区在线观看 | 激情五月婷婷综合网| 欧美日韩色综合| 尤物av一区二区| av成人动漫在线观看| 国产无人区一区二区三区| 免费成人深夜小野草| 精品视频全国免费看| 亚洲精品免费播放| 99精品国产热久久91蜜凸| 欧美国产精品专区| 国产麻豆91精品| 精品国产亚洲在线| 久国产精品韩国三级视频| 91精品国产色综合久久久蜜香臀| 亚洲一级二级在线| 色噜噜夜夜夜综合网| 亚洲色图欧美在线| 成人动漫一区二区在线| 国产欧美日韩卡一| 国产精品一二三在| 久久毛片高清国产| 久久99国产精品成人| 精品成人a区在线观看| 美女www一区二区| 91精品国产91久久久久久最新毛片 | 欧美中文字幕久久| 亚洲啪啪综合av一区二区三区| av综合在线播放| 国产精品高潮久久久久无| av综合在线播放| 亚洲精品午夜久久久| 91国偷自产一区二区开放时间| 亚洲精品菠萝久久久久久久| 91精品福利视频| 亚洲香肠在线观看| 欧美日韩情趣电影| 蜜臀av性久久久久蜜臀av麻豆| 日韩精品自拍偷拍| 国产一区二区美女| 欧美极品xxx| 99精品国产99久久久久久白柏| 亚洲欧美激情一区二区| 欧美午夜片在线看| 日本aⅴ亚洲精品中文乱码| 日韩女同互慰一区二区| 国产九色sp调教91| 国产精品不卡一区二区三区| 色狠狠一区二区三区香蕉| 亚洲成人精品一区| 日韩欧美国产三级| 国产成人精品亚洲777人妖| 中文字幕一区二区三区在线播放| 色婷婷亚洲一区二区三区| 亚洲成人精品一区二区| 欧美成人精品福利| 成人深夜在线观看| 亚洲一线二线三线久久久| 91精品国产麻豆国产自产在线 | 亚洲欧洲中文日韩久久av乱码| 欧美日韩在线播放三区| 九九精品一区二区| 国产精品天美传媒沈樵| 在线观看91视频| 久久国产精品免费| 国产精品美女久久久久久2018 | 精品在线观看免费| 国产精品伦理一区二区| 欧美三级资源在线| 国产精品一线二线三线| 亚洲欧美综合另类在线卡通| 欧美三级韩国三级日本一级| 国模冰冰炮一区二区| 亚洲欧美日韩精品久久久久| 91精品国产综合久久小美女| 国产成a人亚洲精| 亚欧色一区w666天堂| 久久精品日产第一区二区三区高清版 | 视频精品一区二区| 国产亚洲欧美一区在线观看| 色狠狠色狠狠综合| 精品一区二区三区视频在线观看 | 欧美tickling网站挠脚心| 成人黄色大片在线观看| 亚洲va韩国va欧美va精品| 久久久欧美精品sm网站| 欧美日韩亚洲高清一区二区| 国产成人午夜片在线观看高清观看| 亚洲综合一二三区| 久久久久久久久久久99999| 欧美影院一区二区三区| 国产一区二区女| 天堂影院一区二区| 国产精品电影院| 精品国产乱码久久久久久图片| 日本道在线观看一区二区| 国产精品正在播放| 香蕉成人伊视频在线观看| 中文字幕va一区二区三区| 欧美一区二区视频在线观看2022 | 日产精品久久久久久久性色| 亚洲欧洲成人自拍| 久久女同性恋中文字幕| 欧美日韩中文精品| 91在线视频18| 国产精品一区久久久久| 日韩中文字幕av电影| 日韩理论片网站| 久久久一区二区| 8x8x8国产精品| 日本电影欧美片| 成人激情动漫在线观看| 精品中文字幕一区二区小辣椒| 亚洲一区二区三区在线看 | 亚洲色图在线看| 欧亚一区二区三区| 欧美一级夜夜爽| 色丁香久综合在线久综合在线观看 | 欧美亚洲国产bt| 成人看片黄a免费看在线| 麻豆免费看一区二区三区| 成a人片亚洲日本久久| 自拍av一区二区三区| 亚洲天堂免费在线观看视频| 国产精品久久久久久久浪潮网站 | 久久久久国产精品人| 久久毛片高清国产| 国产欧美视频一区二区| 国产精品久久午夜| 亚洲日本在线天堂| 亚洲精品国产一区二区三区四区在线| 国产精一品亚洲二区在线视频| 极品少妇一区二区| 国产一区二区电影| 丁香激情综合国产| 成人美女视频在线观看| 97se亚洲国产综合自在线| 一本色道久久综合精品竹菊| 色吊一区二区三区| 欧美日本在线播放| 日韩午夜三级在线| 精品国产一区二区三区久久影院 | 精品少妇一区二区三区日产乱码| 日韩欧美一级在线播放| 亚洲精品一区二区在线观看| 亚洲精品一区在线观看| 国产精品久久久久久久午夜片| 亚洲蜜臀av乱码久久精品| 亚洲一二三四在线| 免费视频一区二区| 精品无码三级在线观看视频| 国产91丝袜在线播放| 91香蕉国产在线观看软件| 欧美在线一二三四区| 欧美一区二区视频在线观看2020| 久久夜色精品国产噜噜av| 国产精品区一区二区三区| 一区二区三区日韩在线观看| 三级一区在线视频先锋| 精东粉嫩av免费一区二区三区| av一区二区三区四区| 欧美日韩国产一级| 久久免费美女视频| 一区二区三区欧美激情| 久久国产精品色| 99在线精品视频| 欧美绝品在线观看成人午夜影视| 久久亚洲精华国产精华液| 亚洲男人都懂的| 免费成人av在线| av在线免费不卡| 日韩午夜中文字幕| 亚洲三级在线观看| 美女看a上一区| 91免费看片在线观看| 日韩欧美一级在线播放| 亚洲图片激情小说| 久久99精品一区二区三区三区| 不卡大黄网站免费看| 91麻豆精品国产91| 国产精品动漫网站|