共2条
1/1															1							跳转至页
		DS1302读写程序(原创经典)
															
	DS1302 采用3线与单片机相连,可以存取内部的寄存器和RAM
    本程序提供了DS1302的初始化程序,单字节读写和连续读写程序
其中[color=#DC143C]初始化程序很重要[/color],当初就是因为初始化不好不能启动DS1302
并且单片机每次上电都要执行此程序.我使用该芯片多年了,一直没有
出现什么问题.
     [color=#DC143C]另外需要注意的是[/color]: 上电时在VCC电压达到2.0伏前RST脚须保持逻辑"0". 
RST脚设为逻辑"1"前,SCLK须为逻辑"0". 
    我感觉DS1302的使用并不复杂,选择晶振也很重要,不匹配的晶振
也不容易起振.我一般采用小园的,电子表上常用的那种.
    目前我正在使用HT1380/HT1381 不同的是不含涓流充电和备用
电池电路,可以自己设计一个,用二极管比较简单.价格比较便宜!
    欢迎大家与我探讨
;51MCU的 DS1302数字时钟芯片 控制程序
;   By:winhi
;      winhimcu@sohu.com
;内存及口线定义
;读写DS1302时使用的内存
CDAT1    EQU    2EH
CDAT2    EQU    2FH
;DS1302 在内存映射  BCD码
;所有数据必须依次存放 秒,分,时,日,月,星期,年
CSEC    EQU    30H    ;秒数据
CMIN    EQU    31H    ;分数据
CHR    EQU    32H    ;小时数据
CDATE    EQU    33H    ;日数据
CMONTH    EQU    34H    ;月数据
CDAY    EQU    35H    ;星期数据
CYEAR    EQU    36H    ;年数据低2位
;读写口线定义
CRST    EQU    P1.3
CIO    EQU    P1.1
CSCLK    EQU    P1.2
;------应用方法
    ;上电复位后初始化DS1302
    ACALL    DSINIT
    MOV    CDAT1,#10000001B
    ACALL    DSRORD
    ANL    A,#01111111B
    MOV    CDAT2,A
    MOV    CDAT1,#10000000B
    ACALL    DSWORD
    ACALL    DSWRPRT    ;写保护
    ;
    ;只读出秒数据 返回在A中
    MOV    CDAT1,#10000001B
    ACALL    DSRORD
    ;
    ;读DS1302中的时钟数据读入到内存
    ACALL    DSRDC
    ;
    ;将内存中的时钟数据写入到DS1302
    MOV     CDAT1,#10001110B        ;打开写保护
    MOV     CDAT2,#00000000B
    ACALL    DSWORD
    ACALL    DSWRC    ;数据写入到DS1302
    ACALL    DSWRPRT    ;写保护
    ;
;----DS1302 控制子程序
; 初始化 DS1302
;   打开写保护  设置涓流充电
DSINIT:    CLR    CSCLK
    NOP
    CLR    CRST
    MOV    CDAT1,#10001110B    ;打开写保护  
    MOV    CDAT2,#00000000B
    ACALL    DSWORD
    MOV    CDAT1,#10010000B    ;涓流充电 R0=2K
    MOV    CDAT2,#10100101B    ;R1=2K 一个二极管
    ACALL    DSWORD
    RET
;
;读DS1302 内容到内存
;  寄存器区: 0区
DSRDC:    PUSH    PSW
    CLR    PSW.3
    CLR    PSW.4
    MOV    R7,#7
    MOV    R0,#CSEC
    MOV    B,#10000001B    ;READ DS1302  SEC
DSRDC1:    CLR    CSCLK
    NOP
    SETB    CRST
    MOV    A,B
    ACALL    DSWRB
    ACALL    DSRDB
    MOV    @R0,A
    INC    R0        ;NEXT ADDRESS/DATA
    MOV    A,B
    ADD    A,#0000010B    ;ADDRESS+1
    MOV    B,A
    CLR    CRST
    NOP
    CLR    CSCLK
    DJNZ    R7,DSRDC1
    POP    PSW
    RET
;
;写内存到DS1302
;  寄存器区: 0区
DSWRC:    PUSH    PSW
    CLR    PSW.3
    CLR    PSW.4
    MOV    R7,#7
    MOV    R0,#CSEC
    MOV    B,#10000000B    ;WRITE DS1302  SEC
DSWRC1:    CLR    CSCLK
    NOP
    SETB    CRST
    MOV    A,B
    ACALL    DSWRB
    MOV    A,@R0
    ACALL    DSWRB
    INC    R0        ;NEXT ADDRESS/DATA
    MOV    A,B
    ADD    A,#0000010B    ;ADDRESS+1
    MOV    B,A
    CLR    CRST
    NOP
    CLR    CSCLK
    DJNZ    R7,DSWRC1
    POP    PSW
    RET
;
;DS1302 单字节命令(数据)写
; DSDAT1=地址 DSDAT2=命令/数据
;  寄存器区: 0区
DSWORD:    PUSH    PSW
    CLR    PSW.3
    CLR    PSW.4
    CLR    CSCLK
    NOP
    SETB    CRST
    MOV    A,CDAT1
    ACALL    DSWRB
    MOV    A,CDAT2
    ACALL    DSWRB
    CLR    CRST
    NOP
    CLR    CSCLK
    POP    PSW
    RET
;
;DS1302 单字节命令(数据)读
; DSDAT1=地址 DSDAT2=命令/数据
;  寄存器区: 0区
DSRORD:    PUSH    PSW
    CLR    PSW.3
    CLR    PSW.4
    CLR    CSCLK
    NOP
    SETB    CRST
    MOV    A,CDAT1
    ACALL    DSWRB
    ACALL    DSRDB
    MOV    CDAT2,A
    CLR    CRST
    NOP
    CLR    CSCLK
    POP    PSW
    RET
;
;DS1302 字节写时序
;  内容在A中
DSWRB:    MOV    R6,#8
    CLR    C
DSWRB1:    CLR    CSCLK
    RRC    A
    MOV    CIO,C
    NOP
    SETB    CSCLK
    DJNZ    R6,DSWRB1
    RET
;
;DS1302 字节读时序
;  内容在A中
DSRDB:    MOV    R6,#8
    CLR    C
DSRDB1:    CLR    CSCLK
    NOP
    MOV    C,CIO
    RRC    A
    SETB    CSCLK
    DJNZ    R6,DSRDB1
    RET
;
;DS1302写保护
DSWRPRT:MOV    CDAT1,#10001110B
    MOV    CDAT2,#10000000B
    ACALL    DSWORD
    RET
[align=right][color=#000066][此贴子已经被作者于2003-11-13 9:49:22编辑过][/color][/align]
										
					
					
							
					
										
					
										关键词: DS1302 读写 程序 原创 经典 CDAT1
共2条
1/1															1							跳转至页
		回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
			
			
			
						
			
 我要赚赏金
