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

📄 main.asm

📁 介绍用单片机实现时钟的程序,可共大家学习,交流.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                        ret

keys_manage_101:        mov     aleart_byte,#0              ;清除状态
                        mov     r0,#4
                        mov     a,#digital_byte
                        add     a,#3
                        mov     r1,a
keys_manage_102:        mov     a,@r1
                        clr     acc.7
                        mov     @r1,a
                        dec     r1
                        djnz    r0,keys_manage_102
                        mov     r0,#digital_byte
                        mov     r1,#aleart_data
                        mov     a,@r0
                        anl     a,#0fh
                        mov     b,a
                        inc     r0
                        mov     a,@r0
                        anl     a,#0fh
                        swap    a
                        orl     a,b
                        mov     @r1,a
                        inc     r1
                        inc     r0
                        mov     a,@r0
                        anl     a,#0fh
                        mov     b,a
                        inc     r0
                        mov     a,@r0
                        anl     a,#0fh
                        swap    a
                        orl     a,b
                        mov     @r1,a
                        call    beep1
                        setb    digital_bit
                        setb    ex0
                        ret

;*****************************************************
;3键处理
;*****************************************************

keys_manage_3:          call    beep1
                        mov     r0,#digital_byte            ;调节闪烁位置的数值
                        mov     r1,#8
keys_manage_30:         mov     a,@r0
                        jb      acc.7,keys_manage_31
                        inc     r0
                        djnz    r1,keys_manage_30
                        setb    digital_bit
                        ret
keys_manage_31:         anl     a,#0f0h
                        mov     b,a
                        mov     a,@r0
                        anl     a,#0fh
                        cjne    a,#9,keys_manage_32
                        mov     a,b
                        mov     @r0,a
                        inc     r0
                        djnz    r1,keys_manage_30
                        setb    digital_bit
                        reti
keys_manage_32:         mov     a,@r0
                        inc     a
                        mov     @r0,a
                        inc     r0
                        djnz    r1,keys_manage_30
                        setb    digital_bit
                        ret

;*****************************************************
;4键处理
;*****************************************************

keys_manage_4:          clr     ex0
                        call    beep1
                        mov     a,digital_flash_bit         ;若目前处于时间设置状态则提示并退出
                        jnb     acc.7,keys_manage_400
                        call    beep2
                        setb    digital_bit
                        setb    ex0
                        ret
keys_manage_400:        mov     a,aleart_byte               ;设置目前处于闹钟设置状态
                        setb    acc.7
                        mov     aleart_byte,a
                        anl     a,#0fh
                        cjne    a,#0,keys_manage_40
                        jmp     keys_manage_49             ;将闹钟数据进行显示
keys_manage_40:         cjne    a,#1,keys_manage_41
                        jmp     keys_manage_45             ;第一位数字闪烁
keys_manage_41:         cjne    a,#2,keys_manage_42
                        jmp     keys_manage_46             ;第二位数字闪烁
keys_manage_42:         cjne    a,#3,keys_manage_43
                        jmp     keys_manage_47             ;第三位数字闪烁
keys_manage_43:         cjne    a,#4,keys_manage_44
                        jmp     keys_manage_48             ;第四位数字闪烁
keys_manage_44:         call    beep2
                        setb    digital_bit
                        setb    ex0
                        ret

keys_manage_45:         mov     a,#digital_byte             ;第一位数字闪烁
                        add     a,#3
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        mov     r0,#digital_byte
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     aleart_byte                 ;指向下一位数据
                        setb    digital_bit
                        ret

keys_manage_46:         mov     a,#digital_byte             ;第二位数字闪烁
                        add     a,#2
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        mov     a,#digital_byte
                        add     a,#3
                        mov     r0,a
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     aleart_byte                 ;指向下一位数据
                        setb    digital_bit
                        ret

keys_manage_47:         mov     a,#digital_byte             ;第三位数字闪烁
                        add     a,#1
                        mov     r0,a
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        mov     a,#digital_byte
                        add     a,#2
                        mov     r0,a
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        inc     aleart_byte                 ;指向下一位数据
                        setb    digital_bit
                        ret

keys_manage_48:         mov     r0,#digital_byte            ;第四位数字闪烁
                        mov     a,@r0
                        setb    acc.7
                        mov     @r0,a
                        mov     a,#digital_byte
                        add     a,#1
                        mov     r0,a
                        mov     a,@r0
                        clr     acc.7
                        mov     @r0,a
                        mov     a,aleart_byte               ;指向第一位数据
                        anl     a,#0f0h
                        inc     a
                        mov     aleart_byte,a
                        setb    digital_bit
                        ret

keys_manage_49:         mov     r0,#digital_byte            ;将闹钟数据进行显示
                        mov     r1,#aleart_data
                        mov     a,@r1
                        anl     a,#0fh
                        mov     @r0,a
                        inc     r0
                        mov     a,@r1
                        swap    a
                        anl     a,#0fh
                        mov     @r0,a
                        inc     r0
                        inc     r1
                        mov     a,@r1
                        anl     a,#0fh
                        mov     @r0,a
                        inc     r0
                        mov     a,@r1
                        swap    a
                        anl     a,#0fh
                        mov     @r0,a
                        inc     r0
                        mov     @r0,#20h
                        inc     r0
                        mov     @r0,#20h
                        inc     r0
                        mov     @r0,#20h
                        inc     r0
                        mov     @r0,#20h
                        inc     aleart_byte
                        jmp     keys_manage_45

;*****************************************************
;时钟中断处理程序
;*****************************************************

time_int:               clr     ea
                        clr     ie1
                        clr     digital_bit
                        push    aCC
                        push    b
                        call    iicread
                        call    aleart_check
                        pop     b
                        pop     aCC
                        setb    digital_bit
                        setb    ea
                        reti
;*****************************************************
;延时10uS
;*****************************************************

time10us:               mov     r5,#05h                 ;11us
                        djnz    r5,$
                        ret

;*****************************************************
;延时50uS
;*****************************************************

time50us:               mov     r5,#19h                 ;51us
                        djnz    r5,$
                        ret

;*****************************************************
;延时100uS
;*****************************************************

time100us:              mov     r5,#31h                	;99.6us
                        djnz    r5,$
                        ret

;*****************************************************
;延时200uS
;*****************************************************

time200us:              mov     r5,#64h                 ;201us
                        djnz    r5,$
                        ret

;*****************************************************
;延时250uS
;*****************************************************

time250us:              mov     r5,#7ch                 ;249.6us
                        djnz    r5,$
                        ret

;*****************************************************
;延时350uS
;*****************************************************

time350us:              mov     r5,#0afh                 ;351us
time350us_1:            djnz    r5,time350us_1
                        ret

;*****************************************************
;延时500uS
;*****************************************************

time500us:              mov     r5,#0fah	       	;501us
time500us_1:            djnz    r5,time500us_1
                        ret

;*****************************************************
;延时1mS
;*****************************************************

time1ms:                mov     r5,#0fah		;1001us
time1ms_1:              nop
                        nop
                        djnz    r5,time1ms_1
                        ret

;*****************************************************
;延时2.5mS
;*****************************************************

time2_5ms:              mov     r5,#05h			;2.496ms
time2_5ms_1:            mov     r6,#0f8h		;497us
                        djnz    r6,$
                        djnz    r5,time2_5ms_1
                        ret

;*****************************************************
;延时10mS
;*****************************************************

time10ms:               mov    r5,#14h			;10.262ms
time10ms_1:             mov    r6,#0ffh		;511us
                        djnz   r6,$
                        djnz   r5,time10ms_1
                        ret

;*****************************************************
;延时50mS
;*****************************************************

time50ms:               mov    r5,#63h		        ;49.996ms
time50ms_1:             mov    r6,#0fbh		;503us
                        djnz   r6,$
                        djnz   r5,time50ms_1
                        ret

;*****************************************************
;延时100mS
;*****************************************************

time100ms:              mov     r5,#0c3h               ;100.036ms
time100ms_1:            mov     r6,#0ffh               ;511us
                        djnz    r6,$
                        djnz    r5,time100ms_1
                        ret

;*****************************************************
;延时200mS
;*****************************************************

time200ms:     	        mov     r5,#02h			;250.351ms
time200ms_1:            mov     r6,#0f4h	        ;125.173ms
time200ms_2:            mov     r7,#0ffh		;511us
                        djnz    r7,$
                        djnz    r6,time200ms_2
                        djnz    r5,time200ms_1
                        ret

;*****************************************************
;延时500mS
;*****************************************************

time500ms:     	        mov    r5,#04h			;500.701ms
time500ms_1:            mov    r6,#0f4h	        ;125.173ms
time500ms_2:            mov    r7,#0ffh		;511us
                        djnz   r7,$
                        djnz   r6,time500ms_2
                        djnz   r5,time500ms_1
                        ret

;*****************************************************
;延时1S
;*****************************************************

time1s:                 mov    r5,#08h			;1001.401ms
time1s_1:               mov    r6,#0f4h		;125.173ms
time1s_2:               mov    r7,#0ffh		;511us
                        djnz   r7,$
                        djnz   r6,time1s_2
                        djnz   r5,time1s_1
                        ret

end

⌨️ 快捷键说明

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