📄 智能遥控led数码日历钟.asm
字号:
智能遥控LED数码日历钟
muteM EQU 4CH ;静音键
timerT EQU 40H ;进入/退出设置状态
leftL EQU 50H ;左移键
rightR EQU 48H ;右移键
upU EQU 44H ;增加键
downD EQU 54H ;减少键
d_off EQU 0CCH ;显示/关闭
recall EQU 0DCH ;DS1302初始化操作
CS_X1 EQU 26H
CS0_X1 EQU 25H
U0_X1 EQU 3fh;40H
N0_M EQU 1EH
N0_J EQU 1FH
X1_N1 EQU 2AH
X1_N2 EQU 2BH
X1_N3 EQU 2CH
X1_N4 EQU 2DH
X1_N5 EQU 2EH
X1_N6 EQU 2FH
RST EQU P3.0
LED3CLK EQU P3.3
LED4IO EQU P3.1
SECOND EQU 60H
;***************************
ORG 0000H
lJMP START
ORG 0003H
ljmp int_x1
nop
nop
nop
nop
reti
ORG 000BH
LJMP P_INT
nop
nop
nop
nop
reti
nop ;0013h
nop
nop
nop
nop
nop
nop
reti
ORG 001BH
nop
nop
nop
nop
nop
nop
nop
reti
nop ;0023h
nop
nop
nop
nop
nop
nop
reti
nop ;002bh
nop
nop
nop
reti
;**************************** ;main program
ORG 0030H
START: mov sp,#48h;50h;69h;50h ;!!!48h=ok!!!
mov r0,#5fh
clr a
jxu: mov @r0,a
djnz r0,jxu
CLR RST
SETB 05H
CLR 06H
SETB 07H;CLR 07H
CLR 08H
CLR 09H
CLR 0AH
CLR 0BH
CLR 0CH
SETB 0DH
CLR 0EH
CLR 0FH
CLR 10H
CLR 11H
clr 12h
clr 13h
clr 14h ;xqbz
clr 1fh ;jhbz
MOV R2,#00H ;
MOV R3,#00H ;
MOV TMOD,#12h
MOV TL1,#00h
MOV TH1,#00h
SETB ET0
SETB ET1
; setb pt0
SETB TR0
SETB TR1
SETB IT0 ;设定INT0触发方式
SETB EX0 ;INT0请求中断
CLR PX0
; setb ex1
; CALL SET1302 ;初始化
; MOV R1,#0C1H ;取定时参数从1302中
; call T_6061
; MOV 6AH,A ;M
; MOV R1,#0C3H
; CALL T_6061
; MOV 6BH,A ;H
mov 18h,#2ah
mov cs0_x1,#06h
mov cs_x1,#08h
mov n0_m,#0ffh
MOV 61H,#0
MOV 62H,#0
SETB EA
;*****************************
main: mov 1eh,#0ffh
call pd012
call do
jnb 05h,bxs
call display
bxs: sjmp main
;******************************
DISPLAY: nop
mov dptr,#tabh
JB 0EH,DIS2a
JB 0FH,DIS3a
JB 10H,DIS4a
JB 11H,DIS5a
jb 14h,dis6a
JNB 0DH,D_OUT1
JNB 08H,D_GO
JNB 07H,D_OUT1
D_GO: ;ljmp xwr
MOV DPTR,#tabh
jb 1fh,xwr ;xwr
MOV A,62H
ANL A,#0FH
MOV B,A
MOV A,62H
SWAP A
da a
anl a,#0fh ;;;;;;;;;;;;;;;;;
cjne a,#0,abw0jx
mov 40h,#01
ljmp tg1
abw0jx: MOVC A,@A+DPTR
mov 40h,a ;1w
tg1: MOV A,B
MOVC A,@A+DPTR
MOV C,07H
MOV acc.0,C ;秒灯闪烁
mov 41h,a ;2w
MOV A,61H
ANL A,#0FH
MOV B,A
MOV A,61H
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV C,07H
MOV acc.0,C ;秒灯闪烁
mov 43h,a ;4w
MOV A,B
anl a,#0fh
MOVC A,@A+DPTR
mov 44h,a ;5w
mov a,65h
anl a,#0fh
cjne a,#07h,xssjz
mov a,#8
xssjz: movc a,@a+dptr
mov 45h,a ;6w
call xsh
d_out1: sjmp d_out
dis2a: ajmp dis_2
dis3a: ajmp dis_3
dis4a: ajmp dis_4
dis5a: ajmp dis_5
dis6a: ajmp dis_6
xwr: mov dptr,#tabl
mov a,64h
anl a,#0fh
mov b,a
mov a,64h
swap a
anl a,#0fh
xrl a,#0
jz bxnxgw
movc a,@a+dptr
mov 40h,a ;1w
ljmp tg
bxnxgw: mov 40h,#0ffh ;1w bxs
tg: mov a,b
movc a,@a+dptr
mov 41h,a ;2w
mov a,63h
anl a,#0fh
mov b,a
mov a,63h
swap a
anl a,#0fh
movc a,@a+dptr
mov 43h,a ;4w
mov a,b
movc a,@a+dptr
mov 44h,a ;5w
mov 45h,#01h ;6w r
clr et0
call xsl ;yr
setb et0
D_OUT: SETB TR1
RET
;*********************
DIS_2: mov dptr,#tabh ;显示设置小时
MOV 6FH,62H
CALL BCD_HEX
MOV B,#10
DIV AB
anl a,#0fh
MOVC A,@A+DPTR
mov 40h,a ;1w
MOV A,B
anl a,#0fh
MOVC A,@A+DPTR
mov 41h,a
mov 43h,#0 ;min bxs
mov 44h,#0 ;min bxs
mov 45h,#0 ;;;;;;;;;;
call xsh
SETB TR1
RET
;*****************
DIS_3: MOV DPTR,#TABh ;显示设置分
MOV 6FH,61H
CALL BCD_HEX
MOV B,#10
DIV AB
MOVC A,@A+DPTR
mov 43h,a ;4w
MOV A,B
MOV DPTR,#TABh
MOVC A,@A+DPTR
mov 44h,a
mov 40h,#0 ;hour bxs
mov 41h,#0 ;hour bxs
mov 45h,#0 ;;;;;;;;;;
call xsh
SETB TR1
RET
;*****************
DIS_4: mov dptr,#tabh
JNB 07H,D4_OUT ;显示时闪烁
mov 6fh,64h
acall bcd_hex
;MOV A,64h;6BH
MOV B,#0AH
DIV AB
anl a,#0fh
MOVC A,@A+DPTR
mov 40h,a
MOV A,B
MOVC A,@A+DPTR
mov 41h,a
mov 43h,#0
mov 44h,#0
mov 45h,#0
call xsh
D4_OUT: SETB TR1
RET
;***********************
DIS_5: MOV DPTR,#TABh
JNB 07H,D5_OUT ;显示时闪烁
mov 6fh,63h
acall bcd_hex
;MOV A,63h;6AH ;显示设置闹分
MOV B,#0AH
DIV AB
anl a,#0fh
MOVC A,@A+DPTR
mov 43h,a
MOV DPTR,#TABh
MOV A,B
MOVC A,@A+DPTR
mov 44h,a
mov 40h,#0
mov 41h,#0
mov 45h,#0;;;;;;;;;;;;;;;;;;;;
call xsh
D5_OUT: SETB TR1
RET
dis_6: mov dptr,#tabh
mov a,65h
anl a,#0fh
cjne a,#0,abw0jx1
mov a,#8
ljmp ddd
abw0jx1: cjne a,#7,abw7jx2
mov a,#8
abw7jx2:
ddd: movc a,@a+dptr
mov 45h,a
mov 40h,#0
mov 41h,#0
mov 43h,#0
mov 44h,#0
call xsh
ret
;*****************************
xsh: clr p3.7 ;sj
clr et0
clr p3.5 ;1w
setb p3.4
clr p3.3
mov p1,40h
lcall xscd
setb p3.5 ;2w
clr p3.4
clr p3.3
mov p1,41h
call xscd
;setb p3.5 ;3w
;setb p3.4
;clr p3.3
call xscd
setb p3.5 ;4w
clr p3.4
setb p3.3
mov p1,43h
call xscd
clr p3.5 ;5w
setb p3.4
setb p3.3
mov p1,44h
call xscd
clr p3.5 ;6w
clr p3.4
setb p3.3
mov p1,45h
setb et0;a
call xscd
ret
;------------------------------
xsl: setb p3.7 ;yr
clr et0
clr p3.5 ;1w
setb p3.4
clr p3.3
mov p1,40h
call xscd1
setb et0
setb p3.5
setb p3.4
setb p3.3
call xscd
clr et0
;-----------------------------------
setb p3.5 ;2w
clr p3.4
clr p3.3
mov p1,41h
call xscd1
setb et0
setb p3.5
setb p3.4
setb p3.3
call xscd
clr et0
;-------------------------------------
setb p3.5 ;3w
setb p3.4
clr p3.3
;mov p1,42h
call xscd1
setb et0
setb p3.5
setb p3.4
setb p3.3
call xscd
clr et0
;-------------------------------------
setb p3.5 ;4w
clr p3.4
setb p3.3
mov p1,43h
call xscd1
setb et0
setb p3.5
setb p3.4
setb p3.3
call xscd
clr et0
;----------------------------------------
clr p3.5 ;5w
setb p3.4
setb p3.3
mov p1,44h
call xscd1
setb et0
setb p3.5
setb p3.4
setb p3.3
call xscd
clr et0
;-------------------------------------------
clr p3.5 ;6w
clr p3.4
setb p3.3
mov p1,45h
call xscd1
mov p1,#0ffh
setb et0
call xscd1
ret
;-------------------------
xscd: nop
mov 46h,#8h;18h;01h;18h
xs2: mov 47h,#8h;3;22h
xs1: ;nop
;nop
;nop
djnz 47h,xs1
djnz 46h,xs2
mov p1,#01
ret
;-----------------------------
xscd1: nop
mov 46h,#28
xs12: mov 47h,#8
xs11: ;nop
djnz 47h,xs11
djnz 46h,xs12
;mov p1,#0ffh
ret
;**********读取1302时间*******
P_INT: PUSH ACC
PUSH PSW
INC R2
CJNE R2,#250D,P_OUT
MOV R2,#00H
INC R3
CJNE R3,#10D,P_OUT
MOV R3,#00H
CPL 07H
MOV P1,#01h;FFH;;;;;;;;;;;;;;;;
CALL R_1302
fj: mov a,60h ;second-->a
anl a,#0fh
mov b,a
xrl a,#07h
jnz paw0m
setb 1fh
nop
paw0m: mov a,b
xrl a,#0
jnz pafh
clr 1fh
nop
pafh: nop
nop
OUT: JNB 06H,P_OUT
MOV A,6BH
MOV B,#10
DIV AB
SWAP A
ADD A,B
CJNE A,62H,PP_OUT
MOV A,6AH
MOV B,#10
DIV AB
SWAP A
ADD A,B
CJNE A,61H,PP_OUT
SETB 08H
MOV C,07H
P_OUT: POP PSW
POP ACC
RETI
PP_OUT: ;SETB K_ON
CLR 08H
POP PSW
POP ACC
RETI
;---------------------------------------------------------
TABh: DB 0dfh,51h,0bbh,0f9h,75h,0edh,0efh,59h,0ffh,0fdh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -