suspend.asm

来自「该程序为USB HUB程序」· 汇编 代码 · 共 60 行

ASM
60
字号
IFDEF   AnyKB
;-------------------------------------------------------------------------
;   To make it work, GPIO enable must be followed.
;-------------------------------------------------------------------------
SuspendProcess:

    push   A
    
    clr_flag FLAG_GPIO              ;clear the GPIO flag
    
    mov     A, 0                    ; pull down the column lines
    iowr    REG_PORT_0
    iowr    REG_PORT_1

IFDEF   PS2KB    
    mov     A,[dual_ifc_keyboard]   ; check keyboard type
    cmp     A, PS2_KEYBOARD
    mov     A,[ksc_p3out] 
    jz      .PS2KB
ENDIF
    
.USBKB:    
    or      A, P3_LED_MASK          ; Turn off the LEDs

.PS2KB:
    iowr    REG_PORT_3               ;write it back

.KB_RemoteWakeup:
	mov     A, FFh
	iowr    Port2_Interrupt		    ; enable port 2 GPIO interrupt for keyboard

    pop     A
    RET
    
ENDIF

IFDEF   AnyKB
;-------------------------------------------------------------------------
;   To make it work, GPIO enable must be disabled.
;-------------------------------------------------------------------------
WakeupProcess:

    push   A
    
	mov     A, 00h
	iowr    Port2_Interrupt		    ; enable port 2 GPIO interrupt for keyboard

    pop     A
    RET
    
ENDIF
;-------------------------------------------------------------------------
;   GPIO ISR
;-------------------------------------------------------------------------
GPIOint:
    PUSH    A
    set_flag FLAG_GPIO              ; Set this flag to let micro know
    POP     A                       ; that GPIO interrupt was occurred.
    RETI

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?