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

📄 bit1611b5_v023.asm

📁 Analog and digital LCD PANEL dirver code
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        NOT
        JB      REPEAT_KEY, 7

REPEAT_KEY_MODE:
        ; if REPEAT KEY MODE (first Up or Down key)
        MOV     A, R[ RAM_VS_CNT ]
        JB      REPEAT_INTERVAL, 6          ; Jump if reach REPEAT INTERVAL (64 VS)

        INC
        MOV     R[ RAM_VS_CNT ], A
        HALT

REPEAT_INTERVAL:
        MOV     R[ RAM_VS_CNT ], 0          ; Disable REPEAT KEY MODE

REPEAT_KEY:
        MOV     A, R[ VP_0C2_KEY_STATUS ]
        JB      UP_030010,   KEY_BIT_UP
        JB      DOWN_040010, KEY_BIT_DOWN

; =====================================
; OSD Auto Vanish !
OSD_AUTO:
        MOV     A, R[ RAM_OSD_VANISH_CNT ]
        MOV     B, OSD_AUTO_VANISH
        COMP
        JZ      EXIT_010040                 ; OSD Auto Vanish if Time Out !

        INC
        MOV     R[ RAM_OSD_VANISH_CNT ], A
        HALT
; ..............................................................................


; ------------------------------------------------------------------------------
;       Interrupt Service Routine
;       ISR 4: Timer 1
;       ISR 5: Timer 2
; ------------------------------------------------------------------------------
ISR_4_TIMER0:
ISR_5_TIMER1:
        HALT
; ..............................................................................


; ------------------------------------------------------------------------------
;       Interrupt Service Routine
;       ISR 6: IR
; ------------------------------------------------------------------------------
ISR_6_IR:
        ; Speed Up
        CALL    SPEEDUP

        CLR

        MOV     R[ RAM_VS_CNT ], A                  ; Disable REPEAT KEY MODE
        MOV     R[ RAM_REMAINDER ], A
        MOV     R[ RAM_OSD_VANISH_CNT ], A

        MOV     A, R[ VP_0F7_IR_DATA ]

        ; MENU
        MOV     B, IR_MENU
        COMP
        JZ      MENU_010010

        ; UP
        MOV     B, IR_UP
        COMP
        JZ      UP_030000

        ; DOWN
        MOV     B, IR_DOWN
        COMP
        JZ      DOWN_040000

        ; SELECT
        MOV     B, IR_SELECT
        COMP
        JZ      SOURCE_050000

        ; POWER
        MOV     B, IR_POWER
        COMP
        JZ      TCON_070000

        JMP     HALT_090010
; ..............................................................................


; ------------------------------------------------------------------------------
;       Interrupt Service Routine
;       ISR 7: Key In
; ------------------------------------------------------------------------------
ISR_7_KEYIN:
        ; Speed Up
        CALL    SPEEDUP

        CLR

        MOV     R[ RAM_VS_CNT ], A                  ; Disable REPEAT KEY MODE
        MOV     R[ RAM_REMAINDER ], A
        MOV     R[ RAM_OSD_VANISH_CNT ], A

        MOV     A, R[ VP_0C1_KEY_ACK ]

        JB      MENU_010000,    KEY_BIT_MENU
        JB      UP_030000,      KEY_BIT_UP         ; Enable VS Int.
        JB      DOWN_040000,    KEY_BIT_DOWN       ; Enable VS Int.
        JB      SOURCE_050000,  KEY_BIT_SELECT
        JB      TCON_070000,    KEY_BIT_POWER

        JMP     HALT_090010

; Setup DEFAULT values if invalid KEY
DEFAULT_000050:
        ; Display Title

        ; Normalize RESET item
        FILL    R[ VP_ATTR_OSD2_ROW5 ], OSD2_NM_ATTR, OSD2_WIDTH_1

        ; To set EEPROM to Read/Write mode
        MOV     R[ VP_009_GPO_TYPE ], BL_ON_WP_OFF

        ; Default BRIGTNESS
        MOV     A, E[ DEFAULT_BRIGHTNESS ]
        MOV     R[ RAM_BRIGHTNESS ], A
        MOV     E[ USER_BRIGHTNESS ], A
        MOV     B, 080h
        XOR
        MOV     R[ VP_106_DVP_BRIGHTNESS ], A


        ; Default CONTRAST
        MOV     A, E[ DEFAULT_CONTRAST ]
        MOV     R[ RAM_CONTRAST ], A
        MOV     E[ USER_CONTRAST ], A
        MOV     R[ VP_107_DVP_CONTRAST ], A


        ; Default HUE
        MOV     A, E[ DEFAULT_HUE ]
        MOV     R[ RAM_HUE ], A
        MOV     E[ USER_HUE ], A
        MOV     B, HUE_OFFSET
        SUB
        MOV     R[ VP_10A_DVP_HUE ], A


        ; Default SATURATION
        MOV     A, E[ DEFAULT_SATURATION ]
        MOV     R[ RAM_SATURATION ], A
        MOV     E[ USER_SATURATION ], A
        MOV     R[ VP_109_DVP_SATURATION ], A


        ; Default Video Source
        MOV     A, E[ DEFAULT_SOURCE ]
        MOV     R[ RAM_SOURCE ], A
        MOV     E[ USER_SOURCE ], A
        CALL    SVS_SetupVideoSource


        ; To set EEPROM to Read Only mode
        MOV     R[ VP_009_GPO_TYPE ], BL_ON_WP_ON

        ; Default Menu Cursor
        MOV     R[ RAM_MENU_CURSOR ], MENU_ID_STANDBY
        MOV     R[ VP_15F_OSD3_ATTR4 ], OSD_OFF        ; Disable OSD Window3

        FILL    R[ VP_SHOW_OSD3 ], FONT_20_BLANK, OSD3_AREA_1

        ; Speed down
        CALL    SPEEDDOWN

        MOV     R[ VP_151_OSD2_ATTR4 ], OSD_OFF

        MOV     R[ VP_004_INT_ACK ], INT_ACK_VS_OFF     ; Disable VS interrupt

        JMP     HALT_090010                 ; HALT
; ..............................................................................


; ------------------------------------------------------------------------------
;       MENU -
; ------------------------------------------------------------------------------
MENU_010000:
        JB      PWM_060000, KEY_BIT_PWM             ; Jump if PWM (MENU + UP) for Keypad ONLY

MENU_010010:
        MOV     R[ VP_00B_SRST_ATTR1 ], OSD_CLK_ON
        MOV     A, R[ RAM_SYSTEM_STATE ]
        JB      HALT_090010, STATE_BIT_PWM          ; Exit if the PWM fuction is running

        MOV     R[ VP_0FC_IR_ATTR2 ], IR_REPEAT_OFF

        MOV     A, R[ RAM_MENU_CURSOR ]
        SHL                                         ; Move to next Menu Item
        MOV     R[ RAM_MENU_CURSOR ], A             ; Check Menu Cursor

        JB      BRIGHTNESS_011000,  MENU_BIT_BRIGHTNESS
        JB      CONTRAST_012000,    MENU_BIT_CONTRAST
        JB      SATURATION_013000,  MENU_BIT_SATURATION
        JB      HUE_014000,         MENU_BIT_HUE
        JB      MODE_015000,        MENU_BIT_MODE
        JB      RESET_016000,       MENU_BIT_RESET
        JB      EXIT_017000,        MENU_BIT_EXIT

ITEM_RETURN:
        MOV     R[ RAM_MENU_CURSOR ], MENU_ID_BRIGHTNESS
        JMP     BRIGHTNESS_011000



; Exit OSD and Backup BCHS values if it's invalid keys
EXIT_010040:
        MOV     R[ VP_0FC_IR_ATTR2 ], IR_REPEAT_OFF

        MOV     R[ VP_143_OSD1_ATTR4 ], OSD_OFF        ; Disable OSD 1
        MOV     R[ VP_151_OSD2_ATTR4 ], OSD_OFF        ; Disable OSD 2
        MOV     R[ VP_15F_OSD3_ATTR4 ], OSD_OFF        ; Disable OSD 3

        MOV     R[ RAM_SYSTEM_STATE ], STATE_NORMAL

        FILL    R[ VP_ATTR_OSD2 ], OSD2_NM_ATTR, OSD2_AREA_1
        FILL    R[ VP_SHOW_OSD3 ], FONT_20_BLANK, OSD3_AREA_1

        ; To set EEPROM to Read/Write mode
        MOV     R[ VP_009_GPO_TYPE ], BL_ON_WP_OFF

        ; Backup BCHS values in RAM into EEPROM !
        MOV     A, R[ RAM_BRIGHTNESS ]              ; Backup Brightness
        MOV     E[ USER_BRIGHTNESS ], A

        MOV     A, R[ RAM_CONTRAST ]                ; Backup Contrast
        MOV     E[ USER_CONTRAST ], A

        MOV     A, R[ RAM_SATURATION ]              ; Backup Saturation
        MOV     E[ USER_SATURATION ], A

        MOV     A, R[ RAM_HUE ]                     ; Backup HUE
        MOV     E[ USER_HUE ], A


        ; To set EEPROM to Read Only mode
        MOV     R[ VP_009_GPO_TYPE ], BL_ON_WP_ON

        MOV     R[ RAM_MENU_CURSOR ], MENU_ID_STANDBY
        MOV     R[ VP_004_INT_ACK ], INT_ACK_VS_OFF     ; Disable VS interrupt


        ; Speed Down
        CALL    SPEEDDOWN

        ; OSD Clock OFF for Power saving !
        MOV     R[ VP_00B_SRST_ATTR1 ], OSD_CLK_OFF

        JMP     HALT_090010                         ; HALT

; =====================================
; BRIGHTNESS
BRIGHTNESS_011000:
        MOV     R[ RAM_OSD_OFFSET ], BRIGHTNESS_MIN ; For porgress bar offset

        ; Normalize previous item
        FILL    R[ VP_ATTR_OSD2_ROW6 ], OSD2_NM_ATTR, OSD2_WIDTH_1
        ; Highlight current item
        FILL    R[ VP_ATTR_OSD2_ROW0 ], OSD2_HL_ATTR, OSD2_WIDTH_1

        MOV     A, R[ RAM_BRIGHTNESS ]

        JMP     MENU_DISPLAY_BAR

; =====================================
; CONTRAST
CONTRAST_012000:
        MOV     R[ RAM_OSD_OFFSET ], CONTRAST_MIN

        ; Normalize previous item
        FILL    R[ VP_ATTR_OSD2_ROW0 ], OSD2_NM_ATTR, OSD2_WIDTH_1
        ; Highlight current item
        FILL    R[ VP_ATTR_OSD2_ROW1 ], OSD2_HL_ATTR, OSD2_WIDTH_1

        MOV     A, R[ RAM_CONTRAST ]

        JMP     MENU_DISPLAY_BAR


; =====================================
; SATURATION
SATURATION_013000:
        MOV     R[ RAM_OSD_OFFSET ], SATURATION_MIN

        ; Normalize previous item
        FILL    R[ VP_ATTR_OSD2_ROW1 ], OSD2_NM_ATTR, OSD2_WIDTH_1
        ; Highlight current item
        FILL    R[ VP_ATTR_OSD2_ROW2 ], OSD2_HL_ATTR, OSD2_WIDTH_1

        MOV     A, R[ RAM_SATURATION ]

        JMP     MENU_DISPLAY_BAR

; =====================================
; HUE
HUE_014000:
        MOV     R[ RAM_OSD_OFFSET ], HUE_MIN

        ; Normalize previous item
        FILL    R[ VP_ATTR_OSD2_ROW2 ], OSD2_NM_ATTR, OSD2_WIDTH_1
        ; Highlight current item
        FILL    R[ VP_ATTR_OSD2_ROW3 ], OSD2_HL_ATTR, OSD2_WIDTH_1

        MOV     A, R[ RAM_HUE ]

MENU_DISPLAY_BAR:
        CALL    DPB_DspProgressBar
        CALL    SNLZ_ShowNumber0_63

        JMP     HALT_090000                 ; Enable OSD and HALT

; =====================================
; MODE
MODE_015000:
        ; Normalize previous item
        FILL    R[ VP_ATTR_OSD2_ROW3 ], OSD2_NM_ATTR, OSD2_WIDTH_1
        ; Highlight current item
        FILL    R[ VP_ATTR_OSD2_ROW4 ], OSD2_HL_ATTR, OSD2_WIDTH_1


        CALL    SMC_ShowModeCue
        JMP     HALT_090000                 ; Enable OSD and HALT

; =====================================
; RESET
RESET_016000:
        ; Normalize previous item
        FILL    R[ VP_ATTR_OSD2_ROW4 ], OSD2_NM_ATTR, OSD2_WIDTH_1
        ; Highlight current item
        FILL    R[ VP_ATTR_OSD2_ROW5 ], OSD2_HL_ATTR, OSD2_WIDTH_1

        MOV     R[ VP_15F_OSD3_ATTR4 ], OSD_OFF         ; Disable OSD
        JMP     HALT_090010

; =====================================
; EXIT
EXIT_017000:
        ; Normalize previous item
        FILL    R[ VP_ATTR_OSD2_ROW5 ], OSD2_NM_ATTR, OSD2_WIDTH_1
        ; Highlight current item
        FILL    R[ VP_ATTR_OSD2_ROW6 ], OSD2_HL_ATTR, OSD2_WIDTH_1

        MOV     R[ VP_15F_OSD3_ATTR4 ], OSD_OFF         ; Disable OSD
        JMP     HALT_090010
; ..............................................................................


; ------------------------------------------------------------------------------
;       UP -
; ------------------------------------------------------------------------------
UP_030000:
        MOV     R[ VP_004_INT_ACK ], INT_ACK_VS_ON      ; Enable VS interrupt
        MOV     R[ RAM_VS_CNT ], 080h                   ; Enable REPEAT KEY MODE

UP_030010:
        MOV     A, R[ RAM_SYSTEM_STATE ]
        JB      UP_039010_PWM, STATE_BIT_PWM            ; Jump if PWM mode

        MOV     A, R[ RAM_MENU_CURSOR ]                 ; Menu Cursor

        JB      UP_031010_BRIGHTNESS,   MENU_BIT_BRIGHTNESS
        JB      UP_032010_CONTRAST,     MENU_BIT_CONTRAST
        JB      UP_033010_SATURATION,   MENU_BIT_SATURATION
        JB      UP_034010_HUE,          MENU_BIT_HUE
        JB      UP_035010_MODE,         MENU_BIT_MODE

⌨️ 快捷键说明

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