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

📄 main.asm

📁 asm.rar 拉斯维加丝盘源代码 ASM51
💻 ASM
字号:
;;==============================================================================
;; Progarm For K2
;; Version: 0.1a
;; Author :Wu Wen Hui
;; Date   :2002/11/23
;;==============================================================================
program_start:
;;==============================================================================
;;------PortCDType--------
        lda     #%00000000
        sta     p_portCD_config         ;;all set to be IO porrt
;-----------------------------------------------------------------------
        lda     #%00000000              ;;0: input  1:output
        sta     p_portA_dir_ctrl
        lda     #%00000000              ;;
        sta     p_portA_config          ;;$06
        lda     #%11111111
        sta     p_portA
;;------------------------
        lda     #%11111111              ;;1: output
        sta     p_portC_dir_ctrl
        lda     #%00000000              ;;0: buffer when it is output
        sta     p_portC_config
;;------------------------
        lda     #%00111111
        sta     p_portD_dir_ctrl
        lda     #%00000000
        sta     p_portD_config
;;------------------------
        lda     #%00000000
        sta     p_portC
        lda     #%00000000
        sta     p_portD
;;-------------------------


        ldx     #1
        jsr     F_set_bank_int
;;=============================================================================
main:

MainLoop:
        jsr     F_ScanKeyPad
MainLoopB:
        jsr     F_HalfSecondProgram
        lda     R_Mode
        cmp     #M_SLEEP_MODE
        beq     F_EnterPowerOff

;;      jmp     main
;;==============================================================================
;;Sleep Produsce
;;Programming to turn into 'Halt Mode' (Lcd display, but CPU stop)
;;==============================================================================
F_EnterToSleep:
;;-----------------------------------------------------------------------------
;;Reset portA
                lda     R_KeyState
                and     #D_KstMask
                bne     MainLoop

                lda     R_MelodyStatus
                and     #D_MelodyEnable
                bne     MainLoop

                lda     #%00000000              ;;0: input  1:output
                sta     p_portA_dir_ctrl
                lda     #%00000000              ;;0: pull low  1:pull high
                sta     p_portA_config          ;;$06
                lda     #%11111111
                sta     p_portA

                ldx     #0
                stx     P_PortA_Strobe_Pullhigh         ;;$05
                lda     #D_3ANormal
                sta     p_keyscan_ctrl                  ;;$3a

;;-----------------------------------------------------------------------------
                lda      #0                     ;;clear wakeup status
                sta      P_18H_WakeUpCtrl
                lda      #%00000011             ;;enable wakeup source
                sta      P_18H_WakeUpCtrl       ;;suppose TBLEN and KEYEN is enabled

                lda      p_portA                ;;latch PortA data


                lda      #$07
                sta      P_04H_CPU_CLK_Ctrl     ;;Stop CPU clock

                nop
                nop
                nop
                jmp     reset

;;==============================================================================
F_EnterPowerOff:
                lda     R_KeyState
                and     #D_KstDebounce
                bne     MainLoop
                jsr     F_TurnOffLcdDisp

                lda     R_MelodyStatus
                and     #D_MelodyEnable
                bne     MainLoop

                lda     #FFH
                sta     R_OffTime
                ;------------------------------------
                lda     #D_3ANormal
                sta     p_keyscan_ctrl
                lda     #0
                sta     P_PortA_Strobe_Pullhigh                 ;;PortA normal input

                lda     #%11111110
                sta     p_portA_dir_ctrl
                lda     #%00000000              ;;0: pull low  1:pull high
                sta     p_portA_config

                lda     #%00000001
                sta     p_portA
                nop
                nop
                nop
                nop
                lda     p_portA

                lda     #0
                sta     P_18H_WakeUpCtrl

           ;;   lda     #%00000011
                lda     #%00000001              ;;just key wakeup
                sta     P_18H_WakeUpCtrl
;;--------------------------wwhp------------------------------
;;            lda     #(LCD_DUTY16+LCD_BIAS5+LCD_ALL_OFF)
;;            sta     P_24H_LCD_option
;;            lda     #0
;;            sta     P_25H_pump_control
;;            lda     #C32K_CTRL_EN
;;            sta     P_0EH_Xcal32KCtrl
;;------------------------------------------------------------
           ;;   lda     #$55
           ;;   sta     $3031
                lda     #%00000111
                sta     P_04H_CPU_CLK_Ctrl
                nop
                nop
                nop
                jmp     reset

;;==============================================================================
;; x: which bank will go
;; y: which program will run
;;==============================================================================
;;F_run_bank_program:
;;        lda     R_BankSwitch00_Save
;;        pha
;;        jsr     F_set_bank
;;same_as_run_bank_program:
;;        lda     #>(R_Mode_exit_to_main_loop-1)
;;        pha
;;        lda     #<(R_Mode_exit_to_main_loop-1)
;;        pha
;;        lda     $BFFF
;;        sta     R_TableAddHigh
;;        lda     $BFFE
;;        sta     R_TableAddLow
;;        tya
;;        clc
;;        rol     a
;;        tay
;;        iny
;;        lda     (R_TableAddLow),y
;;        pha
;;        dey
;;        lda     (R_TableAddLow),y
;;        pha
;;        rts
;;R_Mode_exit_to_main_loop:
;;        pla
;;        tax
;;        sei
;;        jsr     F_set_bank_int
;;        cli
;;        rts
;;=============================================================================
;;Initial_System_B:
;;                lda     #0
;;                sta     P_BankSwitch00
;;                sta     R_BankSwitch00_Save
;;                jsr     F_set_cpu_speed_and_io
;;                cli
;;           ;;   ldx     #MAIN_BANK_NUM
;;           ;;   jsr     F_set_bank_int
;;                jmp     program_start_b
;;==============================================================================
;;==============================================================================
F_set_bank:
F_SetBank:
F_set_bank_int:
               sei
               stx     R_BankSwitch00_Save
               stx     P_BankSwitch00
               cli
               rts
;;==============================================================================
F_div_10:
F_Div10:
div_10:
               ldx     #$ff
               sec
?_div_10:
               inx
               sbc     #10
               bcs     ?_div_10
               adc      #10
               rts
;;==============================================================================
F_div_08:
               ldx     #$ff
               sec
?_div_08:
               inx
               sbc     #8
               bcs     ?_div_08
               adc     #8
               rts
;;=============================================================================
;;=============================================================================
F_KeyDecode:
               rts
;;=============================================================================
F_HalfSecondProgram:
               rts
;;=============================================================================
;;=============================================================================
;;=============================================================================
F_BeepSleep:
beep_and_sleep:
F_Sleep:
                pha
                txa
                pha
                lda     R_Flag
                and     #D_FLAGTONE
                bne     ?exit
                lda     R_Mode
                cmp     #M_SLEEP_MODE
                beq     ?exit
                jsr     F_PlayKeyTone
                lda     #0
                sta     R_OffTime
?exit:
                pla
                tax
                pla
                rts
F_BeepSleep2:
                pha
                txa
                pha
                lda     R_Flag
                and     #D_FLAGTONE
                bne     ?exit
                lda     R_Mode
                cmp     #M_SLEEP_MODE
                beq     ?exit
                jsr     F_PlayKeyTone2
                lda     #0
                sta     R_OffTime
?exit:
                pla
                tax
                pla
                rts
;;=============================================================================
;;=============================================================================
;;=============================================================================
;;=============================================================================
F_ToSleepModeProcess:
                rts
;;=============================================================================
F_ToPowerOnProcess:
                jsr     F_SetLcdToDisp
                rts
;;=============================================================================
F_CheckAutoOff:
                rts
;;=============================================================================
F_CheckIfNeedAutoSave:
                rts
;;=============================================================================
F_InitAllAlarmDate:
                rts
;;=============================================================================
;;=============================================================================

⌨️ 快捷键说明

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