📄 ds1302.asm
字号:
;SDATA_595 EQU P1.1 ;串行数据输入
;SCLK_595 EQU P1.0 ;移位时钟脉冲
;RCK_595 EQU P1.2 ;输出锁存器控制脉冲
;T-CLK Bit P1.1 ;实时时钟时钟线引脚
;T-IO Bit P1.2 ;实时时钟数据线引脚
;T-RES Bit P1.0 ;实时时钟复位线引脚
;=====================================================
ORG 0000H
LJMP MAIN
ORG 0030H
;=====================================================
MAIN:MOV 34H,#55H;秒
MOV 35H,#59H;分
MOV 36H,#24H;时
MOV 37H,#10H;日
MOV 38H,#09H;月
MOV 39H,#20H;周
MOV 3AH,#05H;年
LCALL SET1302
SCAN:LCALL GET1302
MOV A,46H
SWAP A
ANL A,#0FH
MOV 30H,A
MOV A,46H
ANL A,#0FH
MOV 31H,A
MOV A,45H
SWAP A
ANL A,#0FH
MOV 32H,A
MOV A,45H
ANL A,#0FH
MOV 33H,A
MOV R0,#30H;显示缓冲区首地址
LCALL DISPLAY
LJMP SCAN
;================================================
SET1302:
CLR P1.0
CLR P1.1
SETB P1.0
MOV B,#8EH ;控制寄存器
LCALL RTInputByte
MOV B,#00H ;写操作前WP=0
LCALL RTInputByte
SETB P1.1
CLR P1.0
MOV R0,#34H;
MOV R7,#7 ;秒 分 时 日 月 星期 年
MOV R1,#80H ;秒写地址
S13021: CLR P1.0
CLR P1.1
SETB P1.0
MOV B,R1 ;写秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
MOV A,@R0 ;写秒数据
MOV B,A
LCALL RTInputByte
INC R0
INC R1
INC R1
SETB P1.1
CLR P1.0
DJNZ R7,S13021
CLR P1.0
CLR P1.1
SETB P1.0
MOV B,#8EH ;控制寄存器
LCALL RTInputByte
MOV B,#80H ;控制,WP=1,写保护
LCALL RTInputByte
SETB P1.1
CLR P1.0
RET
;===================================================
GET1302:
MOV R0,#44H;
MOV R7,#7
MOV R1,#81H ;秒地址
G13021: CLR P1.0
CLR P1.1
SETB P1.0
MOV B,R1 ;秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
LCALL RTOutputByte
MOV @R0,A ;秒
INC R0
INC R1
INC R1
SETB P1.1
CLR P1.0
DJNZ R7,G13021
RET
;========================================
RTInputByte:
MOV R4,#8
Inbit1: MOV A,B
RRC A
MOV B,A
MOV P1.2, C
SETB P1.1
CLR P1.1
DJNZ R4,Inbit1
RET
;====================================
RTOutputByte:
MOV R4,#8
Outbit1: MOV C,P1.2
RRC A
SETB P1.1
CLR P1.1
DJNZ R4,Outbit1
RET
;===================================
DISPLAY:MOV R4,#04H;位数选择
MOV R5,#00H
DISP:MOV A,R5
SWAP A
ORL A,@R0
MOV P0,A;可更换的LED驱动口
ACALL DELAY1
INC R5
INC R0
DJNZ R4,DISP
RET
DELAY1:MOV R6,#10H
LOOP11:MOV R7,#38H
LOOP2:DJNZ R7,LOOP2
DJNZ R6,LOOP11
RET
;=============================
;---------------------------------------------------------------------
;延时子程序
;--------------------------------------------------------------------
DELAY:
MOV R5,#03H
DEL0:
MOV R6,#0FFH
DEL1:
MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R5,DEL0
RET
;=====================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -