51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
DS1302时钟
作者:佚名  发布时间:2009/10/16  阅读次数:1280  字体大小: 【】 【】【
;DS1302时钟芯片
;说明:
;入口条件: 	日(30H) 月(31H) 年(32H)
;  	    	秒(30H) 分(31H) 时(32H)
;           	星期(30H)
;出口信息:	日(30H) 月(31H) 年(32H)
;		秒(30H) 分(31H) 时(32H)
;		星期(30H)
;影响资源:PSW、R7、A    堆栈需求: 6字节

DS_SCK	BIT	P1.6	
DS_RST	BIT	P3.5	
DS_IO	BIT	P1.7	
READ_HMS:			
	CLR	DS_IO	
	JB	DS_IO, READ_HMS_END	
	MOV	A, #81H	
	LCALL	DS_READ1	
	MOV	30H, A	
	MOV	A, #83H	
	LCALL	DS_READ1	
	MOV	31H, A	
	MOV	A, #85H	
	LCALL	DS_READ1	
	MOV	32H, A	
			
	CLR	DS_RST	
	MOV	A, 30H	
	CLR	C	
	SUBB	A, #60H	
	JC	READ_HMS_END	
	MOV	30H, #00H	
	LCALL	SET_HMS	
READ_HMS_END:			
	RET		
READ_WEEK:			
	CLR	DS_IO	
	JB	DS_IO, READ_WEEK_END	
	MOV	A, #8BH	
	LCALL	DS_READ1	
	MOV	32H, A	
READ_WEEK_END:			
	RET		
DS_SEND1:			
	CLR	DS_RST	
	CLR	DS_SCK	
	NOP		
	NOP		
	NOP		
	SETB	DS_RST	
	LCALL	DS_SEND	
	MOV	A, 10H	
	LCALL	DS_SEND	
	RET		
SET_YMD:			;去除写保护
	MOV	A, #8EH	
	MOV	10H, #00H	
	LCALL	DS_SEND1	
	MOV	A, #8CH	
	MOV	10H, 32H	
	LCALL	DS_SEND1	
	MOV	R0, #86H	
	MOV	R1, #30H	
	MOV	R6, #02H	
	LJMP	NEXT_WRITE_SP	
	RET		
SET_HMS:			;去除写保护
	MOV	A, #8EH	
	MOV	10H, #00H	
	LCALL	DS_SEND1	
			
	MOV	R0, #80H	
	MOV	R1, #30H	
	MOV	R6, #03H	
	LJMP	NEXT_WRITE_SP	
SET_WEEK:			
	MOV	A, #8EH	
	MOV	10H, #00H	
	LCALL	DS_SEND1	
	MOV	A, #8AH	
	MOV	10H, 30H	
	LCALL	DS_SEND1	
	RET		
NEXT_WRITE_SP:			
	MOV	A, R0	
	MOV	10H, @R1	
	LCALL	DS_SEND1	
	INC	R0	
	INC	R0	
	INC	R1	
	DJNZ	R6, NEXT_WRITE_SP	
	MOV	A, #8EH	;打上写保护
	MOV	10H, #80H	
	LCALL	DS_SEND1	
	CLR	DS_RST	
	RET		
NEXT_READ_SP:			
	MOV	A, R1	
	LCALL	DS_READ1	
	MOV	@R0, A	
	INC	R1	
	INC	R1	
	INC	R0	
	DJNZ	R6, NEXT_READ_SP	
	CLR	DS_RST	
	RET		
READ_YMD:			
	MOV	A, #8DH	
	LCALL	DS_READ1	
	MOV	32H, A	
	MOV	R1, #87H	
	MOV	R6, #02H	
	MOV	R0, #30H	
	LJMP	NEXT_READ_SP	
	RET		
DS_SEND:			;发命令
	MOV	R7, #08H	
NEXT_BIT:			
	NOP		
	NOP		
	NOP		
	RRC	A	
	MOV	DS_IO, C	
	SETB	DS_SCK	
	NOP		
	NOP		
	NOP		
	NOP		
	NOP		
	CLR	DS_SCK	
	NOP		
	NOP		
	NOP		
	NOP		
	NOP		
	DJNZ	R7, NEXT_BIT	
	RET		
DS_READ:			;收数据
	MOV	R7, #08H	
NEXT_BIT1:			
	NOP		
	NOP		
	NOP		
	MOV	C, DS_IO	
	RRC	A	
	SETB	DS_SCK	
	NOP		
	NOP		
	NOP		
	NOP		
	NOP		
	CLR	DS_SCK	
	NOP		
	NOP		
	NOP		
	NOP		
	NOP		
	DJNZ	R7, NEXT_BIT1	
	RET		
DS_READ1:			
	CLR	DS_RST	
	CLR	DS_SCK	
	NOP		
	NOP		
	NOP		
	SETB	DS_RST	
	LCALL	DS_SEND	
	LCALL	DS_READ	
	RET		

 
;;由http://www.gotocm.com编辑提供
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号