📄 智能遥控led数码日历钟.asm
字号:
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 + -