📄 ex1.asm
字号:
RST EQU P1.2 ;DS1302三条控制线
PIO EQU P1.6
SCLK EQU P1.5
ORG 0000H
AJMP START
ORG 0100H
;以下为MAX7219初始化
START: CLR P2.0
MOV R0,#02H
MOV R1,#0AH ;亮度(寄存器)
ACALL TRT
MOV R0,#07H
MOV R1,#0BH ;扫描位数
ACALL TRT
MOV R0,#0FFH
MOV R1,#09H ;译码
ACALL TRT
MOV R0,#01H
MOV R1,#0CH
CALL TRT
CLOCK:
MOV R1,#8EH ;写控制寄存器
MOV R0,#0
LCALL WRITE
MOV R1,#80H ;写秒寄存器
MOV R0,#0
CALL WRITE
MOV R1,#82H ;写分寄存器
MOV R0,#5
CALL WRITE
MOV R1,#84H ;写时寄存器
MOV R0,#6
CALL WRITE
MOV R1,#86H ;写日寄存器
MOV R0,#27H
CALL WRITE
MOV R1,#88H ;写月寄存器
MOV R0,#9
CALL WRITE
MOV R1,#8CH ;写年寄存器
MOV R0,#99H
CALL WRITE
MOV R1,#90H ;写慢速充电寄存器
MOV R0,#0ABH
CALL WRITE
;以下为读各个寄存器的状态
SS: MOV R1,#81H ;读秒寄存器
CALL READ
MOV 20H,R0
MOV R1,#83H ;读分寄存器
CALL READ
MOV 21H,R0
MOV R1,#85H ;读时寄存器
CALL READ
MOV 22H,R0
MOV R1,#87H ;读日寄存器
CALL READ
MOV 23H,R0
MOV R1,#89H ;读月寄存器
CALL READ
MOV 24H,R0
MOV R1,#8DH ;读年寄存器
CALL READ
MOV 25H,R0
;以下为显示子程序
DIS: MOV A,22H ;字码
ANL A,#0F0H
SWAP A
MOV R0,A
MOV R1,#01H ;位置(第一位)
ACALL TRT
MOV A,22H
ANL A,#0FH
MOV R0, A
MOV R1,#02H ;第二位
ACALL TRT
MOV A,21H
ANL A,#0F0H
SWAP A
MOV R0,A
MOV R1,#03H ;第三位
ACALL TRT
MOV A,21H
ANL A,#0FH
MOV R0,A
MOV R1,#04H
ACALL TRT
MOV A,20H
ANL A,#0F0H
SWAP A
MOV R0,A
MOV R1,#05H
ACALL TRT
MOV A,20H
ANL A,#0FH
MOV R0,A
MOV R1,#06H
ACALL TRT
MOV A,#01H
MOV R0,A
MOV R1,#07H
ACALL TRT
MOV A,#00H
MOV R0,A
MOV R1,#08H
ACALL TRT
AJMP SS
TRT: CLR P2.0 ;LOAD
MOV R2,#08H
MOV A,R1
T_1: CLR P2.2 ;CLK
;CALL TDELAY
RLC A
MOV P2.1,C ;DATA(DIN)
CALL TDELAY
SETB P2.2 ;CLR P2.2
DJNZ R2,T_1
CALL TDELAY
MOV R2, #08H
MOV A,R0
T_2: CLR P2.2 ;SETB P2.2
;CALL TDELAY
RLC A
MOV P2.1,C
CALL TDELAY
SETB P2.2 ;CLR P2.2
DJNZ R2,T_2
SETB P2.0 ;CLR P2.0
;CALL TDELAY
RET
TDELAY: MOV R6,#01H
TMS0: MOV R7,#03H
TMS1: DJNZ R7,TMS1
DJNZ R6,TMS0
RET
;以下为写DS1302子程序
WRITE:CLR SCLK
NOP
NOP
SETB RST ;高电平复位
NOP
MOV A,R1
MOV R2,#8
SF01: RRC A ;传送地址到DS1302(先低位后高位)
MOV PIO,C
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R2,SF01
NOP
NOP
;*************
MOV A,R0
MOV R2,#8
SF02: RRC A ;传送数据到DS1302
MOV PIO,C
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R2,SF02
NOP
NOP
CLR RST
NOP
NOP
RET
;********读DS1302子程序
READ: SETB RST
MOV A,R1
MOV R2,#8
SS01: RRC A
MOV PIO,C
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
DJNZ R2,SS01
NOP
NOP
SETB PIO
CLR A
CLR C
MOV R2,#8
SS02: MOV C,PIO
RRC A
NOP
NOP
SETB SCLK
NOP
NOP
CLR SCLK
NOP
NOP
DJNZ R2,SS02
MOV R0,A
ANL A, #7FH
CLR RST
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -