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

📄 keysmanagement.asm

📁 自制单片机实验板.rar
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*****************************************************
;
;     This programme is for study Ver2.0.0 beta
;This programme must be run in 12MHz standard settings
;              The keys management
;               Designer: Mr.Koii
;         Copyright 2002-2003 koiistudio
;     2003.03.31 at Changsha. H.N. P.R.China
;
;*****************************************************

;*****************************************************
;键盘中断处理程序
;*****************************************************

keys_int:               clr     ea
                        clr     ie1
                        clr     digital_bit
                        mov     p2,#0
                        mov     a,p1
                        cpl     a
                        anl     a,#0fh
                        cjne    a,#0,keys_reader
                        clr     ie1
                        setb    ea
                        setb    digital_bit
                        reti
keys_reader:            call    time10ms
                        mov     a,p1
                        cpl     a
                        anl     a,#0fh
                        mov     keys_byte,a
keys_reader_0:          call    digital
                        mov     a,p1
                        cpl     a
                        anl     a,#0fh
                        cjne    a,#0,keys_reader_0
                        clr     ie1
                        setb    ea
                        setb    digital_bit
                        reti

;*****************************************************
;按键处理程序
;*****************************************************

keys_management:        cjne    a,#01h,keys_check_2
                        sjmp    keys_1
keys_check_2:           cjne    a,#02h,keys_check_3
                        sjmp    keys_2
keys_check_3:           cjne    a,#04h,keys_check_4
                        sjmp    keys_3
keys_check_4:           cjne    a,#08h,keys_check_err
                        sjmp    keys_4
keys_check_err:         setb    digital_bit
                        ret

keys_1:                 jmp     keys_manage_1
keys_2:                 jmp     keys_manage_2
keys_3:                 jmp     keys_manage_3
keys_4:                 jmp     keys_manage_4

;*****************************************************
;1键处理,选择时钟设置的位置
;*****************************************************

keys_manage_1:          clr     ex0
                        call    beep1
                        mov     a,aleart_data               ;若目前处于闹钟设置状态则提示并退出
                        jnb     acc.7,keys_manage_200
                        call    beep2
                        setb    digital_bit
                        setb    ex0
                        ret
keys_manage_200:        mov     a,digital_flash_bit         ;设置目前处于时钟设置状态
                        setb    acc.7
                        mov     digital_flash_bit,a
                        anl     a,#07h
                        cjne    a,#0,keys_manage_20         ;此字节为负逻辑,0为第五位数码管,5为第零位数码管
                        mov     a,#digital_byte             ;将闪烁位的最高位置1
                        add     a,#5
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        mov     r0,#digital_byte            ;将闪烁位的高一位的最高位清0
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     digital_flash_bit
                        setb    digital_bit
                        ret
keys_manage_20:         cjne    a,#1,keys_manage_21
                        mov     a,#digital_byte
                        add     a,#4
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        inc     r0
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     digital_flash_bit
                        setb    digital_bit
                        ret
keys_manage_21:         cjne    a,#2,keys_manage_22
                        mov     a,#digital_byte
                        add     a,#3
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        inc     r0
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     digital_flash_bit
                        setb    digital_bit
                        ret
keys_manage_22:         cjne    a,#3,keys_manage_23
                        mov     a,#digital_byte
                        add     a,#2
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        inc     r0
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     digital_flash_bit
                        setb    digital_bit
                        ret
keys_manage_23:         cjne    a,#4,keys_manage_24
                        mov     a,#digital_byte
                        add     a,#1
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        inc     r0
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     digital_flash_bit
                        setb    digital_bit
                        ret
keys_manage_24:         cjne    a,#5,keys_manage_25
                        mov     r0,#digital_byte
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        inc     r0
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        mov     digital_flash_bit,#0
                        setb    digital_bit
                        ret
keys_manage_25:         setb    digital_bit
                        setb    ex0
                        ret

;*****************************************************
;2键处理,将调节后的数据写至时钟芯片中
;*****************************************************

keys_manage_2:          call    beep1                       ;清除所有的闪烁并重置时钟
                        mov     a,digital_flash_bit
                        jb      acc.7,keys_manage_100
                        mov     a,aleart_byte
                        jb      acc.7,keys_manage_101
                        setb    digital_bit
                        setb    ex0
                        ret
keys_manage_100:        mov     digital_flash_bit,#0        ;清除状态
                        mov     r0,#8                       ;需要清除闪烁标志的数量
                        mov     r1,#digital_byte
keys_manage_10:         mov     a,@r1
                        clr     acc.7
                        mov     @r1,a
                        inc     r1
                        djnz    r0,keys_manage_10           ;没清除完则继续清除
                        mov     r1,#digital_byte
                        mov     a,#date_data
                        add     a,#2
                        mov     r0,a
                        mov     b,@r1                       ;秒
                        inc     r1
                        mov     a,@r1                       ;十秒
                        swap    a
                        orl     a,b
                        mov     @r0,a
                        inc     r0
                        inc     r1
                        mov     b,@r1                       ;分
                        inc     r1
                        mov     a,@r1                       ;十分
                        swap    a
                        orl     a,b
                        mov     @r0,a
                        inc     r0
                        inc     r1
                        mov     b,@r1                       ;时

⌨️ 快捷键说明

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