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

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

?? jry9524_63723_asm.htm

?? Cy7c63723的完整固件 cy7c63723和CY7C63001相比
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
;********************************************************************
    ORG  1Ah

errorHandler: 
    reti                                ; do nothing

ps2Error:
    halt
    jmp    ps2Error

;********************************************************************
;
;    Interrupt handler: dualMain
;    Purpose: The program jumps to this routine when the microcontroller
;    has a power on reset.
;
;********************************************************************
dualMain:
    ;
    ; General Setup
    ;

    di                                  ; disable interrupts

    mov    A, DUAL_DSP_DATA             ; set DSP stack pointer
    swap   A, DSP                       ;

    mov    A, 00h                       ; set up program stack pointer            
    mov    psp, A                       ;

    ;
    ; clear dual interface variables
    ;
    mov    [delayCounter], A
    mov    [dualInterface1ms], A

    ;
    ; Initialize button/optics variables
    ;
    mov    [debounceCount], A
    mov    [xCount], A
    mov    [yCount], A
    mov    [zCount], A
    mov    [buttonValue], A
    mov    [buttonMachine], A
    mov    [lastHorzState], A
    mov    [lastVertState], A
    mov    [lastZstate], A
    mov    [eventMachine], A

    mov    A, (LEFT_BUTTON_MASK | RIGHT_BUTTON_MASK | MIDDLE_BUTTON_MASK)
    mov    [currentButtonState], A
    mov    [lastButtonState], A

    mov    A, PS2_MOUSE                 ; default is PS2 interface
    mov    [dualInterfaceMouse], A      ;

    mov    A, FORCE_HIZ                 ; set D+, D- to HI-Z
    iowr   USB_STATUS_CONTROL_REG       ;

    ;
    ; Set buttons in resistive/CMOS, LED in medium sink/CMOS 
    ; and optics in HI-Z/CMOS
    ;

    mov    A, PORT0_NORMAL
    iowr   PORT0
    mov    A, PORT0_MODE1_NORMAL
    iowr   PORT0_MODE1
    mov    A, PORT0_MODE0_NORMAL
    iowr   PORT0_MODE0

    mov    A, PORT1_NORMAL
    iowr   PORT1
    mov    A, PORT1_MODE1_NORMAL
    iowr   PORT1_MODE1       
    mov    A, PORT1_MODE0_NORMAL
    iowr   PORT1_MODE0       
     
    ;
    ; set up interrupts
    ;
    mov    A, 00h                       ; clear all endpoint interrupts
    iowr   ENDPOINT_INT                 ;

    mov    A, 1MS_INT                   ; enable 1 ms interrupt
    iowr   GLOBAL_INTERRUPT_REG         ; 

    ei                                  ; enable interrupts

    call   getMouseType                 ; get mouse type in (A)
    mov    [dualInterfaceMouse], A      ; and save it for later use

    cmp    A, USB_MOUSE
    jz     usbMain                      ; go if USB interface
    jmp    ps2Main                      ; go if PS/2 interface

;********************************************************************
;
;         Main Entry for PS/2 Interface
;
;********************************************************************
ps2Main:
    di                                     ; disable interrupts

    ;
    ; Initialize PS2 Variables
    ;
    mov    A, 00h
    mov    [ps2Temp0], A
    mov    [ps2LastValidCmd], A
    mov    [ps2XmitBufferLen], A
    mov    [ps2XmitLen], A
    mov    A, 10                        ; set for 10 reports/sec
    mov    [ps2IntervalCount], A        ;
    call   ps2SetDefault                ; set default parameters

    ei                                  ; enable interrupts
    call   ps2BAT                       ; load BAT code onto transmit
                                        ; buffer (AAh followed by 00h)

;********************************************************************
;
;         Main PS/2 Task Loop
;
;********************************************************************
ps2TaskLoop:
    iowr   WATCHDOG_REG                 ; clear watchdog timer
    call   processButtons               ; determine button value
    call   readProcessOptics            ; compute (x,y,z) of optics
    call   ps2GetHostByte               ; get data from host, if any,
                                        ; but does not save it in buffer
    jnc    doCommand                    ; go & process data received from host
    
    ;
    ; At here, we either have an error in receiving data or 
    ; host does not send any data
    ;
    mov    A, [ps2XmitLen]              ; get remaining bytes to be sent to host
    cmp    A, 00h
    jz     mouseTask                    ; go if no byte to send
    call   ps2SendNextByte              ; send next remaining byte to host
                                        ; from xmit buffer
    jmp    ps2TaskLoop                  ; go back for next transaction

mouseTask:
    dec    [ps2IntervalCount]
    mov    A, [ps2IntervalCount]
    cmp    A, 00h
    jnz    ps2TaskLoop                  ; go if report interval not expired

    call   ps2ResetMouseReportInterval
    mov    A, [ps2StreamMode]
    cmp    A, 01h
    jnz    ps2TaskLoop                  ; go if not in stream mode

    mov    A, [ps2MouseEnabled]
    cmp    A, 01h
    jnz    ps2TaskLoop                  ; go if mouse not enabled

    ;
    ; At here, stream mode is on, mouse is enabled and report interval
    ; has expired
    ;

    call   loadMousePacket              ; load mouse packet into xmit buffer
    jmp    ps2TaskLoop                  ; ready to send packet out

doCommand:
    call   ps2DoCommand                 ; process host commands
    jmp    ps2TaskLoop                  ; next transaction


;********************************************************************
;
;         Processing of Host PS2 Commands 
;
;********************************************************************
    ORG    100h

;========================================================================
; FUNCTION: ps2DoCommand
;
;    Decodes commands and process them thru appropriate functions defined
; in the dispatch table below.
;
;    On Entry: (A) = command byte received from host
;
;========================================================================

    XPAGEOFF

ps2CmdTable:                            ; dispatch table for ps2 host commands
    jmp    ps2ResetScaling              ; (command byte = 0E6h)
    jmp    ps2SetScaling2_1             ; (0E7h)
    jmp    ps2SetResolution             ; (0E8h)
    jmp    ps2StatusRequest             ; (0E9h)
    jmp    ps2SetStreamMode             ; (0EAh)
    jmp    ps2ReadData                  ; (0EBh)
    jmp    ps2ResetWrapMode             ; (0ECh)
    jmp    ps2DoCmdError                ; Not defined
    jmp    ps2SetWrapMode               ; (0EEh)
    jmp    ps2DoCmdError                ; Not defined
    jmp    ps2SetRemoteMode             ; (0F0h)
    jmp    ps2DoCmdError                ; Not defined
    jmp    ps2ReadDeviceType            ; (0F2h)
    jmp    ps2SetSampleRate             ; (0F3h)
    jmp    ps2EnableMouse               ; (0F4h)
    jmp    ps2DisableMouse              ; (0F5h)
    jmp    ps2SetDefault                ; (0F6h)
    jmp    ps2DoCmdError                ; Not defined (0F7h)
    jmp    ps2DoCmdError                ; Not defined (0F8h)
    jmp    ps2DoCmdError                ; Not defined (0F9h)
    jmp    ps2DoCmdError                ; Not defined (0FAh)
    jmp    ps2DoCmdError                ; Not defined (0FBh)
    jmp    ps2DoCmdError                ; Not defined (0FCh)
    jmp    ps2DoCmdError                ; Not defined (0FDh)
    jmp    ps2Resend                    ; (0FEh)
    jmp    ps2Reset                     ; (0FFh)

    XPAGEON

ps2DoCommand:
    mov    [saveCmd], A                 ; save command byte for later use
    mov    A, [ps2WrapMode]
    cmp    A, 01h
    jnz    checkLastValidCmd            ; go if not in echo mode

    mov    A, 00h                       ; clear last valid command
    mov    [ps2LastValidCmd], A         ; 
    mov    A, [saveCmd]                 ; get host command/data byte back
    cmp    A, PS2_RESET_CMD    
    jz     checkLastValidCmd            ; "reset" gets us out of echo mode
    cmp    A, PS2_RESET_WRAP_MODE_CMD
    jz     checkLastValidCmd            ; "reset wrap" gets us out of echo mode
    call   ps2SendResponseByte          ; echo byte in (A) back to host
    jmp    doCmdExit                    ; exit

    ;
    ; Check for commands that have 2 bytes, namely, ps2SetSampleRate
    ; and ps2SetResolution
    ;

checkLastValidCmd:
    mov    A, [ps2LastValidCmd]
    cmp    A, PS2_SET_SAMPLE_RATE_CMD   ; is last command set sample rate?
    jnz    doCmd1                       ; no, go and continue

    mov    A, [saveCmd]                 ; get back sample rate
    call   ps2SetSampleRate             ; and set it

    ;
    ; on exit from ps2SetSampleRate:
    ;    (A) = PS2_ACK if the rate is valid
    ;     Else, (A) = PS2_RESEND 
    ;

    cmp    A, PS2_ACK
    jnz    ps2DoCmdError                ; go if sample rate setting has error

    mov    A, PS2_ACK                   ; send back ACK byte as required
    call   ps2SendResponseByte          ; by PS/2 protocol

    mov    A, 00h                       ; clear the error count
    mov    [ps2InvalidCmdCount], A      ;
    mov    [ps2LastValidCmd], A         ; reset last valid command

    mov    A, [saveCmd]                 ; get back command byte (in this 
                                        ; case, command byte = sample rate)
    call    checkWheel                  ; check whether wheel has been enabled
    jmp    doCmdExit                    ; exit

doCmd1:
    mov    A, [ps2LastValidCmd]         ; get last valid command
    cmp    A, PS2_SET_RESOLUTION_CMD
    jnz    decodeCmd                    ; go if not SetResolution command
    mov    A, [saveCmd]                 ; else (A) = resolution factor
    call   ps2SetResolution             ; set it

    ;
    ; on exit from ps2SetResolution:
    ;    (A) = PS2_ACK if the resolution is valid
    ;     Else, (A) = PS2_RESEND 
    ;

    cmp    A, PS2_ACK
    jnz    ps2DoCmdError                ; go if set resolution failed

    mov    A, PS2_ACK                   ; send back ACK byte as required    
    call   ps2SendResponseByte          ; by PS/2 protocol

    mov    A, 00h                       ; reset variables for next transaction
    mov    [ps2InvalidCmdCount], A      ;
    mov    [ps2LastValidCmd], A         ;
    jmp    doCmdExit                    ; exit

decodeCmd:          
    mov    A, 00h                       ; abort transmission when receiving
    mov    [ps2XmitLen], A              ; a new command

    mov    A, [saveCmd]
    cmp    A, PS2_SET_SAMPLE_RATE_CMD
    jz    doCmd2

    mov    A, 00h                       ; reset count of consecutive sample
    mov    [sequence], A                ; rate settings - this is to keep
                                        ; track of wheel enabling 
doCmd2:
    mov    A, [saveCmd]
    sub    A, 0E6h                      ; adjust for base of command table
    jc     ps2DoCmdError                ; go if invalid command

validCommand:
    push   A
    mov    A, PS2_ACK                   ; send back ACK byte on receiving
    call   ps2SendResponseByte          ; host command (PS/2 protocol)

    mov    A, [saveCmd]                 ; update last valid command
    mov    [ps2LastValidCmd], A         ;
    mov    A, 00h                       ; reset counter for invalid command
    mov    [ps2InvalidCmdCount], A      ;
    pop    A

    asl    A                            ; get offset into table
    jacc    ps2CmdTable                 ; do the function
    halt                                ; should never get here    !!

ps2DoCmdError:
    inc    [ps2InvalidCmdCount]         ; keep track of invalid commands 
    mov    A, [ps2InvalidCmdCount]      ;
    cmp    A, 02h
    jnz    ps2DoCmdError1        
                    
    mov    A, PS2_ERROR                 ; return an "error" response to host
    call   ps2SendResponseByte          ; in case of 2 errors

    mov    A, 00h                       ; reinitialize variables
    mov    [ps2InvalidCmdCount], A      ;
    mov    [ps2LastValidCmd], A         ;
    ret

ps2DoCmdError1:
    mov    A, PS2_RESEND                ; go if one error - return a "resend"
    call   ps2SendResponseByte          ; response to host

doCmdExit:
    ret

;========================================================================
; FUNCTION: ps2ResetScaling
;    Sets scaling to 1-1
;
;========================================================================
ps2ResetScaling:
    mov    A, SCALE1_1
    mov    [ps2Scale], A
    ret

;========================================================================
; FUNCTION: ps2SetScaling2_1
;    Sets scaling to 2-1
;
;========================================================================
ps2SetScaling2_1:
    mov    A, SCALE2_1
    mov    [ps2Scale], A
    ret

;========================================================================
; FUNCTION: ps2SetResolution

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产经典色站一区二区三区| 日韩一区二区三区av| 日本高清视频一区二区| 精品久久久久久久人人人人传媒| 黄色成人免费在线| 91精品视频网| 久久久久国产精品免费免费搜索| 一区二区三区不卡在线观看| 国产成人免费高清| 欧美情侣在线播放| 亚洲精品成人a在线观看| 成人动漫一区二区三区| 精品成人一区二区三区| 九九视频精品免费| 91精品久久久久久蜜臀| 午夜不卡在线视频| 欧美福利视频导航| 蜜臀久久99精品久久久久宅男 | 日日夜夜精品视频免费| 日本欧美大码aⅴ在线播放| 亚洲国产日韩一区二区| 欧美日韩在线三区| 日本伊人午夜精品| 国产亚洲欧洲一区高清在线观看| 成人丝袜18视频在线观看| 亚洲免费av高清| 欧美精品日韩精品| 久久综合久久综合久久综合| 日韩欧美精品在线| 午夜视频在线观看一区二区三区| 日韩精品一区二区三区中文不卡| 国产激情视频一区二区三区欧美| 亚洲欧洲精品一区二区三区| 欧美日韩黄色一区二区| 国产精品综合在线视频| 亚洲国产欧美日韩另类综合 | 亚洲日本青草视频在线怡红院| 欧洲生活片亚洲生活在线观看| 美女被吸乳得到大胸91| 亚洲视频一二区| wwwwxxxxx欧美| 欧美日韩免费观看一区三区| 粉嫩aⅴ一区二区三区四区| 亚洲h在线观看| 中文字幕一区二区三区色视频| 69堂成人精品免费视频| 99国产一区二区三精品乱码| 美日韩黄色大片| 亚洲图片欧美色图| 国产精品麻豆视频| 久久尤物电影视频在线观看| 欧美日本乱大交xxxxx| av电影一区二区| 国产乱码精品一区二区三区av | 亚洲男人的天堂在线aⅴ视频| 精品国一区二区三区| 欧美色偷偷大香| 91丨porny丨在线| 成人一级视频在线观看| 狠狠色丁香婷婷综合久久片| 偷窥少妇高潮呻吟av久久免费| ●精品国产综合乱码久久久久 | 中文字幕免费观看一区| 日韩精品一区二区三区在线播放| 欧美精品v国产精品v日韩精品| 97精品久久久午夜一区二区三区 | 不卡一区二区在线| 国产精品综合一区二区| 日韩精品一级中文字幕精品视频免费观看| 韩国v欧美v亚洲v日本v| 日本aⅴ亚洲精品中文乱码| 亚洲国产精品久久一线不卡| 亚洲精品欧美在线| 依依成人精品视频| 亚洲综合免费观看高清在线观看| 最新久久zyz资源站| 中文字幕永久在线不卡| 亚洲欧美日韩小说| 亚洲日本丝袜连裤袜办公室| 亚洲欧美另类在线| 亚洲精品日韩专区silk| 亚洲激情一二三区| 香蕉av福利精品导航| 亚欧色一区w666天堂| 日韩电影在线一区| 久久99精品国产.久久久久| 激情综合五月婷婷| 国产精品1024| 99re在线精品| 欧美性大战久久| 91麻豆精品国产自产在线| 日韩一区二区在线看片| 久久日一线二线三线suv| 国产日韩欧美不卡在线| 亚洲视频一区二区在线观看| 一区二区三区鲁丝不卡| 午夜精品久久一牛影视| 美女脱光内衣内裤视频久久网站| 韩国在线一区二区| fc2成人免费人成在线观看播放| 不卡一区中文字幕| 欧美日韩亚州综合| 精品国产一区二区三区不卡| 国产欧美精品一区二区色综合| 中文字幕亚洲电影| 婷婷综合另类小说色区| 国产另类ts人妖一区二区| aaa亚洲精品| 欧美日韩久久久一区| 欧美videossexotv100| 国产精品不卡一区| 午夜精品国产更新| 国产成人在线观看免费网站| 色婷婷综合久久久久中文一区二区 | 国产欧美日韩麻豆91| 一区二区三区精品视频| 蜜桃传媒麻豆第一区在线观看| 粉嫩绯色av一区二区在线观看| 欧美日韩亚洲综合一区| 国产网红主播福利一区二区| 91亚洲男人天堂| 日本韩国欧美国产| 欧美精品一区二区三区四区| 欧美影院一区二区三区| 欧美放荡的少妇| 午夜不卡在线视频| 精品久久五月天| 亚洲美女视频在线观看| 久久超碰97中文字幕| 91久久免费观看| 欧美一级精品大片| 亚洲国产一区二区三区青草影视| 男人的j进女人的j一区| 在线影视一区二区三区| 日韩电影网1区2区| 亚洲欧洲综合另类在线| 中文文精品字幕一区二区| 国产三级精品视频| 视频在线观看国产精品| 成人av在线播放网址| 日韩精品专区在线影院观看| 一区二区三区在线观看国产| 国产精品一区二区三区乱码| 欧美日韩日日摸| 亚洲女人小视频在线观看| 国产丶欧美丶日本不卡视频| 91精品国产免费久久综合| 一区二区三区**美女毛片| 成人一区二区在线观看| 久久精品日韩一区二区三区| 丝袜a∨在线一区二区三区不卡| 91免费观看视频| 国产精品美女久久久久久久久| 紧缚奴在线一区二区三区| 精彩视频一区二区| av资源网一区| 一本大道av伊人久久综合| 国产欧美日韩一区二区三区在线观看| 免费人成黄页网站在线一区二区| 欧美在线观看18| 亚洲欧洲成人自拍| jlzzjlzz亚洲女人18| 国产片一区二区| 国产成a人亚洲精品| 国产午夜亚洲精品不卡| 国产九色精品成人porny| 久久综合九色综合97_久久久| 蜜臀av一区二区在线免费观看| 欧美日韩极品在线观看一区| 亚洲一区二区三区四区的| 欧美视频第二页| 亚洲成人免费在线| 欧美一三区三区四区免费在线看 | 亚洲第四色夜色| 欧美在线观看视频在线| 亚洲成国产人片在线观看| 欧美日韩国产精品成人| 日韩黄色一级片| 日韩免费在线观看| 韩国女主播成人在线观看| 精品成人一区二区三区四区| 国产成人精品一区二| 中文字幕免费在线观看视频一区| 99久久伊人精品| 亚洲一区精品在线| 这里只有精品视频在线观看| 久久99日本精品| 国产免费观看久久| 一道本成人在线| 天堂一区二区在线免费观看| 欧美一级一区二区| 国产成人午夜精品5599| 天堂午夜影视日韩欧美一区二区| 色94色欧美sute亚洲线路一久 | 国产色产综合产在线视频| 春色校园综合激情亚洲| 又紧又大又爽精品一区二区| 3751色影院一区二区三区| 国产在线播放一区三区四| 亚洲欧洲无码一区二区三区|