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

📄 ds1302.asm

📁 里面包括很多的驱动程序的
💻 ASM
字号:
;*********************************************************************
;	Module Name:	Ds1302.asm
;	Author:		涛行九天
;	Version:	1.0
;	CreateDate:	2002-06-12
;	Description:
;	Remark:
;	Revision History:
;*********************************************************************


;---------- 管脚定义 --------------

RST  	EQU 	P1.5		;DS1302
IO	EQU	P1.6
SCLK	EQU 	P1.7		


;*******************************************************************************
;		The following is about DS1302
;*******************************************************************************

;-------------------------------------------------------------------------------
;       RST1302 	Reset 1302
;	Function:	Sends the command to reset 1302
;       Calls:		None
;	InPara:		None
;	OutPara:	None
;	Register Usage: None 
;-------------------------------------------------------------------------------
RST1302:clr	sclk
	clr	rst
	setb	rst
	ret

;-------------------------------------------------------------------------------
;       WRBYTE 		Write a byte to 1302
;	Function:	Shifts out a byte, starting with the LSB, to the RAM
;       Calls:		None
;	InPara:		A = the byte to be sent
;	OutPara:	None
;	Register Usage: R2 
;-------------------------------------------------------------------------------
WRBYTE:	mov	r2,#08
wrbyt1:	rrc	a
	mov	io,C
	clr	sclk
	setb	sclk
	djnz	r2,wrbyt1	
	ret	
	
;-------------------------------------------------------------------------------
;       RDBYTE 		Read a byte from 1302
;	Function:	Recieves a byte, LSB first, from the RAM
;       Calls:		None
;	InPara:		None
;	OutPara:	A = recieved byte
;	Register Usage: R2 
;-------------------------------------------------------------------------------
RDBYTE:	mov	R2, #08 	; Set bit counter to eight
	clr	a
	setb	io	
rdbyt1:	setb	sclk 		; Bring SCK high
	clr	sclk 		; Bring SCK low
	mov	C, io		; Receive data bit and store in carry
	rrc	A 		; Shift byte right through carry 
	djnz	R2, rdbyt1 	; Finish if last data bit
	ret	

;-------------------------------------------------------------------------------------------------
;       GETTIME		Get time from 1302
;	Function:	
;       Calls:		wrbyte,rdbyte
;	InPara:		R0 = Last address to store time
;	OutPara:	None
;	Register Usage: R0,A 
;-------------------------------------------------------------------------------------------------
gettime:lcall	rst1302
	mov	a,#0bfh
	lcall	wrbyte		;clock burst read (eight registers)
	lcall	rdbyte		;sec
	mov	@r0,a
	dec	r0
	lcall	rdbyte		;min
	mov	@r0,a
	dec	r0
	lcall	rdbyte		;hour
	mov	@r0,a
	dec	r0
	lcall	rdbyte		;date
	mov	@r0,a
	dec	r0
	lcall	rdbyte		;month
	mov	@r0,a
	dec	r0
	lcall	rdbyte		;day
	mov	@r0,a
	dec	r0
	lcall	rdbyte		;year
	mov	@r0,a
	dec	r0
	lcall	rdbyte		;must read control register in burst mode
	lcall	rst1302
	clr	rst
	ret	

;-------------------------------------------------------------------------------------------------
;       SETTIME		Set time to 1302
;	Function:	
;       Calls:		wrbyte,rdbyte
;	InPara:		R0 = Last address of the time to be sent
;	OutPara:	None
;	Register Usage: R0,A 
;-------------------------------------------------------------------------------------------------
settime:lcall	rst1302
	mov	a,#8eh
	lcall	wrbyte		;control register
	clr	a
	lcall	wrbyte		;disable write protect
	
	lcall	rst1302
	mov	a,#90h
	lcall	wrbyte		;trickle charger register
	mov	a,#0abh
	lcall	wrbyte		;enable, 2 diodes, 8K resistor

	lcall	rst1302
	mov	a,#0beh
	lcall	wrbyte		;clock burst write (eight registers)
	
	mov	a,@r0
	dec	r0
	lcall	wrbyte		;sec
	mov	a,@r0
	dec	r0
	lcall	wrbyte		;min
	mov	a,@r0
	dec	r0
	lcall	wrbyte		;hour
	mov	a,@r0
	dec	r0
	lcall	wrbyte		;date
	mov	a,@r0
	dec	r0
	lcall	wrbyte		;mon
	mov	a,@r0
	dec	r0
	lcall	wrbyte		;day
	mov	a,@r0
	dec	r0
	lcall	wrbyte		;year
	
	mov	a,#80h
	lcall	wrbyte		;must write control register in burst mode, enable write protect
	lcall	rst1302
	clr	rst
	ret

;*******************************************************************************	

⌨️ 快捷键说明

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