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

📄 ds1302+-

📁 RM51单片机实验板配套实验例程库
💻
字号:
			
			ORG		0000H
			AJMP		START
			
			ORG		0033H
START:
			SECOND	EQU	30H
			MIN		EQU	31H
			HR			EQU	32H
			DATE		EQU	33H
			MONTH		EQU	34H
			DAY		EQU	35H
			YEAR		EQU	36H
			BMJSBUF	EQU	37H
			
			RST		BIT	P3.0
			CLK		BIT	P3.1
			IO			BIT	P3.2
			
			K1			BIT	P3.2
			K2			BIT	P3.3
			K3			BIT	P3.4
			K4			BIT	P3.5
			
			DPBIT		BIT	00H
			
			MOV		P0,#0FFH
			MOV		P1,#0FFH
			MOV		P2,#0FFH
			MOV		P3,#0FFH
			MOV		SP,#60H
			
			MOV     	SECOND,#02H
        	MOV     	MIN,#08H
        	MOV     	HR,#22H
        	MOV     	DATE,#07H
        	MOV     	MONTH,#03H
        	MOV     	DAY,#03H
        	MOV     	YEAR,#07H
;       	LCALL		SET1302   	;初始化为07年3月6日 星期二 18:28:00

MAIN:		LCALL		R_1302		;读出当前时间
			LCALL		DISPLAY
			AJMP		MAIN

DISPLAY:	DJNZ	R3,DISPLAY1
			MOV	R3,#118
			CPL	DPBIT
			
DISPLAY1:
			SETB	P2.7		;关闭液晶背光
			CLR	P2.6		;开启数码管显示
			
			MOV	A,HR					;第1位显示显示十位
			SWAP	A
			ANL	A,#00001111B
			MOV	DPTR,#SGTB
			MOVC	A,@A+DPTR
			MOV	P0,A
			CLR	P2.0
			SETB	P2.1
			SETB	P2.2
			SETB	P2.3
			SETB	P2.4
			LCALL	DELAY
			LCALL	SK1

			MOV	A,HR					;第2位显示小时个位
			ANL	A,#00001111B
			MOV	DPTR,#SGTB
			MOVC	A,@A+DPTR
			JB		DPBIT,DPXY1
			ANL	A,#01111111B
DPXY1:	MOV	P0,A
			SETB	P2.0
			CLR	P2.1
			SETB	P2.2
			SETB	P2.3
			SETB	P2.4
			LCALL	DELAY
			LCALL	SK1

			MOV	A,MIN				;第3位显示分钟十位
			SWAP	A
			ANL	A,#00001111B
			MOV	DPTR,#SGTB
			MOVC	A,@A+DPTR
			MOV	P0,A
			SETB	P2.0
			SETB	P2.1
			CLR	P2.2
			SETB	P2.3
			SETB	P2.4
			LCALL	DELAY
			LCALL	SK1

			MOV	A,MIN					;第4位显示分钟个位
			ANL	A,#00001111B
			MOV	DPTR,#SGTB
			MOVC	A,@A+DPTR
			JB		DPBIT,DPXY2
			ANL	A,#01111111B
DPXY2:	MOV	P0,A
			SETB	P2.0
			SETB	P2.1
			SETB	P2.2
			CLR	P2.3
			SETB	P2.4
			LCALL	DELAY
			LCALL	SK1

			MOV	A,SECOND				;第5位显示秒钟个位
			ANL	A,#00001111B
			MOV	DPTR,#SGTB
			MOVC	A,@A+DPTR
			MOV	P0,A
			SETB	P2.0
			SETB	P2.1
			SETB	P2.2
			SETB	P2.3
			CLR	P2.4
			LCALL	DELAY
			LCALL	SK1
			
			MOV	A,SECOND	  ;用P1.0~P1.5指示灯指示秒钟十位的0~5
			SWAP	A
			ANL	A,#00001111B
			
SEC0:		CJNE	A,#0,SEC1
			MOV	P1,#11111110B		;P1.0点亮,表示秒的10位数为0
SEC1:		CJNE	A,#1,SEC2
			MOV	P1,#11111101B		;P1.1点亮,表示秒的10位数为1
SEC2:		CJNE	A,#2,SEC3
			MOV	P1,#11111011B		;P1.2点亮,表示秒的10位数为2
SEC3:		CJNE	A,#3,SEC4
			MOV	P1,#11110111B		;P1.3点亮,表示秒的10位数为3
SEC4:		CJNE	A,#4,SEC5
			MOV	P1,#11101111B		;P1.4点亮,表示秒的10位数为4
SEC5:		CJNE	A,#5,SECE
			MOV	P1,#11011111B		;P1.5点亮,表示秒的10位数为5
SECE:		NOP
			RET
						
;************* 8位共阳数码管字型表 *****************
SGTB:		DB	0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
			DB	88H,83H,0C6H,0A1H,86H,8EH,89H,0A3H,8CH,0C8H

;********  延时子程序  ********
DELAY:	MOV	R1,#2
Y1:	MOV	R2,#200
	DJNZ	R2,$
	DJNZ	R1,Y1
	RET			


;------ 初始化1302 ------
SET1302: CLR    RST
         CLR    CLK
	      SETB   RST
         MOV    A,#8EH				;控制寄存器
         LCALL  W_BIT
         MOV    A,#00H				;写操作前WP=0
         LCALL  W_BIT
         SETB   CLK
         CLR    RST

         MOV    R0,#SECOND
         MOV    R7,#7		;秒 分 时 日 月 星期 年
         MOV    R1,#80H		;秒写地址

SET1302A:
			CLR    RST
         CLR    CLK
         SETB   RST
         MOV    A,R1
         LCALL  W_BIT
         MOV    A,@R0
         LCALL  W_BIT
         INC    R0
         INC    R1
         INC    R1
         SETB   CLK
         CLR    RST
         DJNZ   R7,SET1302A
         
         CLR    RST
         CLR    CLK
         SETB   CLK
         NOP
         CLR    RST
         NOP
         CLR    CLK
         SETB   RST
         MOV    A,#90H
         LCALL  W_BIT
         MOV    A,#10100101B         ;充电器设置
         LCALL  W_BIT

         SETB   CLK
         CLR    RST
         CLR    CLK
         SETB   RST
         MOV    A,#8EH
         LCALL  W_BIT
         MOV    A,#80H					;恢复写保护
         LCALL  W_BIT
         SETB   CLK
         CLR    RST
         RET


;------读取一字节RAM ------
T_6061:  CLR    RST
         CLR    CLK
         SETB   RST
         MOV    A,R1
         LCALL  W_BIT
         LCALL  R_BIT
         SETB   CLK
         CLR    RST
         RET

;------ 从DS1302读出7字节时间数据 ------
R_1302:  MOV    R0,#SECOND
         MOV    R7,#7
         MOV    R1,#81H			;秒地址
R_1302A: CLR    RST
         CLR    CLK
         SETB   RST
         MOV    A,R1
         LCALL  W_BIT
         LCALL  R_BIT
         MOV    @R0,A
         INC    R0
         INC    R1
         INC    R1
         SETB   CLK
         CLR    RST
         DJNZ   R7,R_1302A
         RET


;-----写任意一地址---R1 为地址,R0 为数据-----

SETONE:  CLR    CLK
         CLR    RST
         CLR    CLK
         NOP
         SETB   RST
         MOV    A,#8EH
         LCALL  W_BIT
         MOV    A,#00H
         LCALL  W_BIT
         SETB   CLK
         CLR    RST
         CLR    CLK
         NOP
         CLR    RST
         CLR    CLK
         SETB   RST
         MOV    A,R1
         LCALL  W_BIT
         MOV    A,R0
         LCALL  W_BIT
         NOP
         SETB   CLK
         CLR    RST
         NOP
         NOP
         CLR    RST
         CLR    CLK

         SETB   RST
         MOV    A,#8EH
         LCALL  W_BIT
         MOV    A,#80H
         LCALL  W_BIT
         SETB   CLK
         CLR    RST
         RET

;------ 写8位数据到DA1302 ------
W_BIT:   MOV    R4,#8
W_BIT1:  RRC    A
         MOV    IO,C
         SETB   CLK
         CLR    CLK
         DJNZ   R4,W_BIT1
         RET

;------ 从DS1302读出8位数据 ------
R_BIT:   MOV    R4,#8
R_BIT1:  MOV    C,IO
         RRC    A
         SETB   CLK
         CLR    CLK
         DJNZ   R4,R_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

;=================================
SK1:		JB		K1,SK2
			ACALL	YS10MS
			JB		K1,SK2
			ACALL	SOUND
;K1DD:		JNB	K1,K1DD
			SJMP	SKRET
		
SK2:		JB		K2,SK3
			ACALL	YS10MS
			JB		K2,SK3
			ACALL	SOUND
;K2DD:		JNB	K2,K2DD
			SJMP	SKRET

SK3:		JB		K3,SK4
			ACALL	YS10MS
			JB		K3,SK4
			ACALL	SOUND
;K3DD:		JNB	K3,K3DD
			SJMP	SKRET
			
SK4:		JB		K4,SKRET
			ACALL	YS10MS
			JB		K4,SKRET
			ACALL	SOUND
;K4DD:		JNB	K1,K4DD
SKRET:	RET

YS10MS:	MOV	R7,#128
DL1:		MOV	R6,#0FFH
DL0:		DJNZ	R6,DL0
			DJNZ	R7,DL1
			RET

;******* 音效子程序 *******
SOUND:	MOV	R7,#228
SDL1:		CPL	P3.7
			MOV	R6,#0FFH
SDL0:		DJNZ	R6,SDL0
			DJNZ	R7,SDL1
			RET         
;=================================

			END

⌨️ 快捷键说明

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