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

📄 智能遥控led数码日历钟.asm

📁 智能、遥控、LED数码日历钟
💻 ASM
📖 第 1 页 / 共 2 页
字号:
tabl:	db  21h,0afh,45h,07h,8bh,13h,11h,0a7h,01h,03h
;---------------------------------------------------------
DO:     MOV     A,1eh;1CH
        CJNE    A,#TIMERT,REDO  ;代码不是设置/退出键
        JNB     0CH,SET1        ;是,则进入
        CLR     0CH             ;是,已经进入,则退出
        SETB    0DH             ;恢复正常显示
        CLR     0EH
        CLR     0FH
        CLR     10H
        CLR     11H
        RET

SET1:   SETB    0CH
        SETB    0EH
        CLR     0DH
        CLR     0FH
        CLR     10H
        CLR     11H
        RET

REDO:   CJNE    A,#MUTEM,REDO1 
        LJMP    MUTE           
REDO1:  CJNE    A,#D_OFF,DO_SET2j
        LJMP    DIS_OFF         ;关闭显示
do_set2j:cjne a,#0f8h,do_set2
        setb 13h
        ret

DO_SET2:JB      0CH,SET2        ;时间设置的处理
        RET

SET2:   CJNE    A,#UPU,SET2A
        LJMP    INC1            ;+加(^)
SET2A:  CJNE    A,#DOWND,SET2B
        LJMP    DEC2            ;- 减
SET2B:  CJNE    A,#RIGHTR,SET2C
        LJMP    RIGHT           ;右移(>)
SET2C:  CJNE    A,#LEFTL,SET2D
        LJMP    LEFT            ;左移(<)
SET2D:  CJNE    A,#RECALL,SET2EXT ;DS1302初始化
        LJMP    SET1302
SET2EXT:RET
;---------------INC------------------------
INC1:   JB      0EH,INCH
        JB      0FH,INCM
        JB      10H,INC_H
        JB      11H,INC_M
        jb      14h,inc_xq      ;inc_xq
        RET
INC_H:  mov 6fh,64h             ;w inc
        call bcd_hex
        inc a
        cjne a,#13d,inch3
        MOV     a,#01 ;6BH,#0
INCH3:  mov 6fh,a
        call hex_bcd
        mov 64h,a
        MOV     R1,#88h;#0C2H
        MOV     R0,64h;6BH
        ACALL   SETONE            ;写入
        RET
INC_M:  mov 6fh,63h             ;r inc
        call bcd_hex
        inc a
        cjne a,#32d,inch4
        MOV     a,#01
INCH4:  mov 6fh,a
        call hex_bcd
        mov 63h,a
        MOV     R1,#86h
        MOV     R0,63h
        ACALL   SETONE             ;写入
        RET
INCH:   MOV     6FH,62H            ;小时增加
        CALL   BCD_HEX
        INC     A
        CJNE    A,#24D,INCH1
        MOV     A,#0
INCH1:  MOV     6FH,A
        CALL   HEX_BCD
        MOV     62H,A
        MOV     R1,#84H
        MOV     R0,62H
        CALL   SETONE             ;并写入DS1302
        nop
        nop
        mov 1eh,#0ffh
        RET
INCM:   ;INC     61H               ;分增加
        MOV     6FH,61H
        CALL   BCD_HEX
        INC     A
        CJNE    A,#60D,INCH2
        MOV     A,#0
INCH2:  MOV     6FH,A
        CALL   HEX_BCD
        MOV     61H,A
        MOV     R1,#82H
        MOV     R0,61H
        CALL    SETONE             ;并写入DS1302
        RET
inc_xq: mov     a,65h
        anl     a,#0fh
        inc     a
        cjne a,#7,jxxs
        mov  a,#8
jxxs:   mov  65h,a
        mov  r1,#8ah
        mov  r0,65h
        call  setone
        ret
;----------------------------------DEC----------------------
DEC2:   JB      0EH,DECH
        JB      0FH,DECM
        JB      10H,DEC_H
        JB      11H,DEC_M
        jb      14h,dec_xq      ;dec_xq
        RET
DECH:   MOV     6FH,62H
        CALL   BCD_HEX
        DEC     A
        CJNE    A,#0FFH,DECH1
        MOV     A,#23
DECH1:  MOV     6FH,A
        CALL   HEX_BCD
        MOV     62H,A
        MOV     R1,#84H
        MOV     R0,62H
        CALL   SETONE
        mov 1eh,#0ffh
        RET

DECM:   MOV     6FH,61H
        CALL   BCD_HEX
        DEC     A
        CJNE    A,#0FFH,DECM1
        MOV     A,#59
DECM1:  MOV     6FH,A
        CALL   HEX_BCD
        MOV     61H,A
        MOV     R1,#82H
        MOV     R0,61H
        CALL   SETONE
        RET
DEC_H:  mov 6fh,64h             ;w dec
        call bcd_hex
        dec a
        CJNE    A,#0,dech3
        MOV     a,#12d
DECH3:  mov 6fh,a
        call hex_bcd
        mov 64h,a
        MOV     R1,#88h;#0C2H
        MOV     R0,64h;6BH
        CALL   SETONE
        RET
DEC_M:  mov 6fh,63h             ;r dec
        call bcd_hex
        dec a
        CJNE    A,#0,dech4;FFH,DECH4
        MOV     a,#31d;AH,#59D
DECH4:  mov 6fh,a
        call hex_bcd
        mov 63h,a
        MOV     R1,#86h;#0C0H
        MOV     R0,63h;6AH
        CALL   SETONE
        RET
dec_xq: mov a,65h
        anl a,#0fh
        dec a
        cjne a,#0,abw0w8m
        mov a,#8
        ljmp tgg
abw0w8m:cjne a,#7,abw7bs6
         mov a,#1;6
         ljmp tgg1
tgg:
;abw0bs6:
        mov 65h,#7;a
        mov      r1,#8ah
        mov      r0,65h
        call setone
        ret
abw7bs6:
tgg1:   mov 65h,a
        mov r1,#8ah
        mov r0,65h
        call setone
        ret
;--------------------------------RIGHT----------------------
RIGHT:  JB      0EH,RIGHT1
        JB      0FH,RIGHT2
        JB      10H,RIGHT3
        JB      11H,RIGHT4
        jb      14h,right5
        RET                       ;右移
RIGHT1: CLR    0EH
        SETB   0FH
        RET
RIGHT2: CLR    0FH
        SETB   10H
        RET
RIGHT3: CLR    10H
        SETB   11H
        RET
RIGHT4: CLR    11H
        SETB   14h;0EH
        RET
 right5:clr    14h;0eh
        setb   0eh;14h
        ret
;--------------------------------LEFT-----------------------
LEFT:   JB      0EH,LEFT1
        JB      0FH,LEFT2
        JB      10H,LEFT3
        JB      11H,LEFT4
        jb      14h,left5
        RET               ;左移
LEFT1:  SETB   14h;11H
        CLR    0EH
        RET
LEFT2:  SETB   0EH
        CLR    0FH
        RET
LEFT3:  SETB   0FH
        CLR    10H
        RET
LEFT4:  SETB    10H
        CLR     11H
        RET
left5:  setb   11h
        clr    14h
        ret

;------------------------------MUTE--------------
MUTE:   ;setb    k_ON
        CPL     06H              ;静音
        CLR     08H
        RET

;-----------------------------DISPLAY OFF--------
DIS_OFF:CLR     ET1
        CPL     05H
        JNB     05H,REDORE
        SETB    ET1
        ;mov 1eh,#0ffh
REDORE: RET
;--------------------初始化1302---------------
SET1302: CLR    RST           
         CLR    LED3CLK
        MOV     SECOND,#0
        MOV     61H,#04h;0
        MOV     62H,#2h;23h;18      
        MOV     64H,#1;8;1
        MOV     65H,#7h;5;3
        MOV     66H,#4;3;2
         SETB   RST
         MOV    A,#8EH
         CALL  R_BIT
         MOV    A,#00H
         CALL  R_BIT
         SETB   LED3CLK
         CLR    RST

         MOV    R0,#SECOND
         MOV    R7,#7
         MOV    R1,#80H
SET1302A:CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         CALL  R_BIT
         MOV    A,@R0
         CALL  R_BIT
         INC    R0
         INC    R1
         INC    R1
         SETB   LED3CLK
         CLR    RST
         DJNZ   R7,SET1302A
         CLR    RST
         CLR    LED3CLK

         sETB   LED3CLK
         nop
         CLR    RST
         nop
         clr    led3clk
         SETB   RST
         MOV    A,#90H
         CALL  R_BIT
         MOV    A,#10100101B         ;充电器设置
         CALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         CLR    LED3CLK

         SETB   RST
         MOV    A,#8EH
         CALL  R_BIT
         MOV    A,#80H
         CALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         RET

;---------读取一RAM R1为地址------
T_6061:  CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         CALL  R_BIT
         CALL  W_BIT
         SETB   LED3CLK
         CLR    RST
         RET
;-----------------------------
R_1302:  MOV    R0,#SECOND
         MOV    R7,#7
         MOV    R1,#81H
R_1302A: CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         CALL  R_BIT
         CALL  W_BIT
         MOV    @R0,A
         INC    R0
         INC    R1
         INC    R1
         SETB   LED3CLK
         CLR    RST
         DJNZ   R7,R_1302A
         RET
;------------------R_BIT------------------
R_BIT:   MOV    R4,#8
R_BIT1: nop
        RRC    A
         MOV    LED4IO,C
         SETB   LED3CLK
         CLR    LED3CLK
         DJNZ   R4,R_BIT1
         RET
;-------------------W_BIT-----------------------
W_BIT:   MOV    R4,#8
W_BIT1:  MOV    C,LED4IO
         RRC    A
         SETB   LED3CLK
         CLR    LED3CLK
         DJNZ   R4,W_BIT1
         RET
;------------------------进制转换--------------------------
BCD_HEX:
         MOV    A,6FH
         ANL    A,#0FH
         MOV    B,A
         MOV    A,6FH
         MOV    6FH,B
         SWAP   A
         ANL    A,#0FH
         MOV    B,#0AH
         MUL    AB
         ADD    A,6FH
         ;MOV    6FH,A
         RET

HEX_BCD:
         MOV   A,6FH
         MOV   B,#10
         DIV   AB
         SWAP  A
         ADD   A,B
         ;MOV   6FH,A
         RET

;--------R1 为地址,R0 为数据----------
SETONE:  CLR    LED3CLK
         CLR    RST
         CLR    LED3CLK
         NOP
         SETB   RST
         MOV    A,#8EH
         CALL  R_BIT
         MOV    A,#00H
         CALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         CLR    LED3CLK
         NOP
         CLR    RST
         CLR    LED3CLK
         SETB   RST
         MOV    A,R1
         CALL  R_BIT
         MOV    A,R0
         CALL  R_BIT
         NOP
         SETB   LED3CLK
         CLR    RST
         NOP
         NOP
         CLR    RST
         CLR    LED3CLK

         SETB   RST
         MOV    A,#8EH
         CALL  R_BIT
         MOV    A,#80H
         CALL  R_BIT
         SETB   LED3CLK
         CLR    RST
         RET
;#############################
int_x1: clr ea         ;jz 20M
        setb 12h
        clr tr0
        clr tr1
        mov ip,#01h
        push acc
        push psw
        orl psw,#18h
        mov r2,th1
        mov r3,tl1
        mov r4,#06h
        mov r5,#0
        call sub0
        jc x1_out1
        mov r4,#06h
        mov r5,#0eeh
        mov r2,th1
        mov r3,tl1
        call sub0
        jnc x1_01
        clr c
        ajmp x1_02
x1_01:  mov r4,#0ch
        mov r5,#5fh
        mov r2,th1
        mov r3,Tl1
        call sub0
        jc x1_out1
        mov r4,#0dh
        mov r5,#0eeh
        mov r2,th1
        mov r3,tl1
        call sub0
        jnc x1_out1
        setb c
x1_02:  mov a,u0_x1
        rlc a
        mov u0_x1,a
        djnz cs_x1,x1_out1
        mov cs_x1,#08h
        mov @r0,u0_x1
        inc r0
        djnz cs0_x1,x1_out1
        ajmp x1_10
x1_out1:mov th1,#00h
        mov tl1,#00h
int_fh: pop psw
        pop acc
        setb tr0
        setb tr1
        setb ea
        reti
x1_10:  mov  cs0_x1,#10h
        mov a,x1_n1
x1s_01: cjne a,#0e2h,x1s_00  ;!!
        mov a,x1_n3
x1s_03:  cjne a,#0e2h,x1s_00 ;!!
        mov a,x1_n4
        cjne a,x1_n2,x1s_00
        sjmp x1s_07
x1s_00: clr c
        mov a,x1_n6
        rlc a
        mov x1_n6,a
        mov a,x1_n5
        rlc a
        mov x1_n5,a
        mov a,x1_n4
        rlc a
        mov x1_n4,a
        mov a,x1_n3
        rlc a
        mov x1_n3,a
        mov a,x1_n2
        rlc a
        mov x1_n2,a
        mov a,x1_n1
        rlc a
        mov x1_n1,a
        djnz cs0_x1,x1s_01
x1s_04: mov a,x1_n3
        cjne a,x1_n1,x1s_05
        cjne a,#0e2h,x1s_05
        mov a,x1_n2
        cjne a,x1_n4,x1s_05
x1s_07: mov n0_j,x1_n1
        mov n0_m,x1_n2
        NOP     ;;;;;;;;;;;;;;
        ;lcall do
x1s_06: mov cs_x1,#8
        mov r0,#2ah
        mov cs0_x1,#6h
        ajmp x1_out1
x1s_05: mov n0_m,#0ffh
        mov n0_j,#0
        ajmp x1s_06
sub0:   clr cy
        mov a,r3
        subb a,r5
        jnc x1_s1
        dec r2
x1_s1:  clr cy
        mov a,r2
        subb a,r4
        ret
;===========================fdt
pd012:  jnb 12h,pd012_fh
xh:     mov r5,#0a5h;;ffh     ;a5;2
yys:    ;call lfy
        call display
        djnz r5,yys
        jnb 12h,pd012_fh
        clr 12h
        ajmp xh
pd012_fh:nop
        ret
;=============================
        END     ;#################@@@@@@@@@@

⌨️ 快捷键说明

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