11001|4

1782

帖子

0

TA的资源

至上芯片

楼主
 

DS1302实现实时时钟模块 [复制链接]

DS1302实现实时时钟模块

[ 打印 ] [ 返回 ]


;///////////////////////////////////////////

;本程序实现实时时钟模块 时钟芯片型号:DS1302

;///////////////////////////////////////////

T_CLK Bit P1.4 ;实时时钟时钟线引脚
T_IO Bit P1.5 ;实时时钟数据线引脚
T_RST Bit P1.6 ;实时时钟复位线引脚
;40h--46h 存放 "秒 分 时 日 月 星期 年 "
second equ 40h

org 0000h
ajmp main
org 0030h
main:
mov dptr,#tab
mov 40h,#00 ;秒
mov 41h,#05 ;分
mov 42h,#11 ;时
mov 43h,#23 ;日
mov 44h,#05 ;月
mov 45h,#00 ;星期
mov 46h,#04 ;年
lcall set1302
loop:
lcall get1302
lcall exchange
mov r4,#3
tt1:
lcall display
djnz r4,tt1
ajmp loop

exchange:
mov a,41h
mov b,#10h
div ab
mov 33h,a
mov a,b
mov 32h,a
mov a,40h
mov b,#10h
div ab
mov 31h,a
mov a,b
mov 30h,a
ret
display:
mov r7,#100
dd1:
mov a,30h
movc a,@a+dptr
mov p0,a
clr p2.0
lcall delay100us
setb p2.0

mov a,31h
movc a,@a+dptr
mov p0,a
clr p2.1
lcall delay100us
setb p2.1

mov a,32h
movc a,@a+dptr
mov p0,a
clr p2.2
lcall delay100us
setb p2.2

mov a,33h
movc a,@a+dptr
mov p0,a
clr p2.3
lcall delay100us
setb p2.3
djnz r7,dd1
ret


delay100us:
mov r5,#50
djnz r5,$
ret

tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh
;**********************************************************
;子程序名:Set1302
;功 能:设置DS1302 初始时间,并启动计时。
;调 用:RTInputByte
;入口参数:初始时间在:Second,Minute,Hour,Day,Month,Week.YearL(地址连续)
;出口参数:无
;影响资源:A B R0 R1 R4 R7
;**********************************************************
Set1302:
CLR T_RST
CLR T_CLK
SETB T_RST
MOV B,#8EH ;控制寄存器
LCALL RTInputByte
MOV B,#00H;写操作前WP=0
LCALL RTInputByte
SETB T_CLK
CLR T_RST

MOV R0,#Second;
MOV R7,#7;秒 分 时 日 月 星期 年
MOV R1,#80H;秒写地址
S13021: CLR T_RST
CLR T_CLK
SETB T_RST
MOV B,R1;写秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
MOV A,@R0;写秒数据
MOV B,A
LCALL RTInputByte
INC R0
INC R1
INC R1
SETB T_CLK
CLR T_RST
DJNZ R7,S13021
CLR T_RST
CLR T_CLK
SETB T_RST
MOV B,#8EH;控制寄存器
LCALL RTInputByte
MOV B,#80H;控制,WP=1,写保护
LCALL RTInputByte
SETB T_CLK
CLR T_RST
RET

;**********************************************************
;子程序名:Get1302
;功 能:从DS1302 读时间
;调 用:RTInputByte,RTOutputByte
;入口参数:时间保存在:Second,Minute,Hour,Day,Month,Week.YearL
;出口参数:无
;影响资源:A B R0 R1 R4 R7
;**********************************************************
Get1302:
MOV R0,#Second;
MOV R7,#7
MOV R1,#81H;秒地址
G13021: CLRT_RST
CLR T_CLK
SETB T_RST
MOV B,R1;秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
LCALL RTOutputByte
MOV @R0,A;秒
INC R0
INC R1
INC R1
SETB T_CLK
CLR T_RST
DJNZ 7,G13021
RET

;**********************************************************
;功 能:写1302一字节(内部子程序)
;**********************************************************
RTInputByte:
MOV R4,#8
Inbit1: MOV A,B
RRC A
MOV B,A
MOV T_IO,C
SETB T_CLK
CLR T_CLK
DJNZ R4,Inbit1
RET

;**********************************************************
;功 能:读1302一字节(内部子程序)
;**********************************************************
RTOutputByte:
MOV R4,#8
Outbit1: MOV C,T_IO
RRC A
SETB T_CLK
CLR T_CLK
DJNZ R4,Outbit1
RET
;/////////////////////////////////////////////////////////////////////////////

end


此帖出自单片机论坛

最新回复

有C就好了,汇编我实在看不懂  详情 回复 发表于 2008-10-14 18:58
点赞 关注
 

回复
举报

1379

帖子

0

TA的资源

裸片初长成(中级)

沙发
 

Re: DS1302实现实时时钟模块

不错不错啊
此帖出自单片机论坛
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
新手来学习学习
此帖出自单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
那个时间是怎样查看的啊?
此帖出自单片机论坛
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(高级)

5
 
有C就好了,汇编我实在看不懂
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表