⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbc.asm

📁 VCP201_CODE is a FPGA source code.
💻 ASM
字号:
;****************************************************************************
; DBC.asm	2109 ASIC
;FUNCTION: THIS ROUTINE IS TO CHECK DEBOUNCE COUNTER AND SET F_KEYSTB FLAG.
;          NORMALLY ONLY THE FUNCTION BUTTONS ARE CHECKED UNLESS THE FLAG
;          F_DBCPB IS SET, THE FIRE BUTTON WILL THEN BE DEBOUNCED ALSO.
;OUTPUT: F_KEYSTB WILL BE SET IF DEBOUNCE TIME IS UP, OTHERWISE THE TIMER
;        WILL BE UPDATED.
;****************************************************************************
;       
p_dbc:
        swapf   fn_button,W     ;STORE THE FN_BUTTON TO BUFFER TO CHECK
        subwf   fn_button,W     ;IF THE UPPER AND THE LOWER DIGIT EQUAL
	btfss	STATUS,Z	;IF EQUAL CHECK FIRE BUTTON NEED UPDATE
        goto    pdbcreld        ;IF NOT EQUAL, RELOAD TIMER
        btfss   f_dbcpb         ;
        goto    pdbctime        ;IF NOT INCLUDE FIRE BUTTON, UPDATE TIMER

        swapf   pb_l3_r3,W     ;STORE THE FN_BUTTON TO BUFFER TO CHECK
        subwf   pb_l3_r3,W     ;IF THE UPPER AND THE LOWER DIGIT EQUAL
	btfss	STATUS,Z       ;IF EQUAL CHECK FIRE BUTTON NEED UPDATE
        goto    pdbcreld        ;IF NOT EQUAL, RELOAD TIMER

        movf   pb_raw0,W         ;COMPARE LOWER FIRE BUTTON RAW WITH OLD
        subwf   pb_old0,W
	btfss	STATUS,Z	;        skpz
        goto    pdbcreld        ;IF NOT EQUAL, RELOAD TIMER
        movf   pb_raw1,W         ;COMPARE HIGHER FIRE BUTTON RAW WITH OLD
        subwf   pb_old1,W
	btfss	STATUS,Z	;        skpz
        goto    pdbcreld        ;IF NOT EQUAL, RELOAD TIMER
pdbctime:
        decfsz  tmr_dbc,F       ;DECREMENT TIMER AND UPDATE F_KEYSTB IF NEED
        goto    pdb_2
        bsf     f_keystb
        goto    pdb_1

pdbcreld:
        bcf     f_keystb
        movlw   0x0f            ;LOAD THE UPPER DIGIT TO LOWER DIGIT
        iorwf   fn_button,F     ;WHICH MEANS LOAD RAW TO OLD
	iorwf	pb_l3_r3,F
        swapf   fn_button,W
        andwf   fn_button,F     ;NOW FN_BUTTON OLD DIGIT = RAW DIGIT
        swapf   pb_l3_r3,W
        andwf   pb_l3_r3,F     ;NOW FN_BUTTON OLD DIGIT = RAW DIGIT

        btfss   f_dbcpb         ;ALSO UPDATE FIRE BUTTON OLD TO RAW
        goto    pdb_1           ;IF F_DBCPB IS SET
        movf   pb_raw0,W
        movwf   pb_old0
        movf   pb_raw1,W
        movwf 	pb_old1
pdb_1:
        movf   dur_dbc,W         ;RELOAD TIMER WITH DEBOUNCE CONSTANT
        movwf    tmr_dbc
pdb_2:
        return

⌨️ 快捷键说明

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