×
单片机 > 单片机程序设计 > 详情

时钟芯片DS1302 的程序(汇编)

发布时间:2020-05-29 发布时间:
|

;*********************************************************************/
T_CLK Bit P2.7                         ;实时时钟时钟线引脚
T_IO  Bit P1.4                         ;实时时钟数据线引脚
T_RST Bit P1.5                         ;实时时钟复位线引脚
;**********************************************************
;子程序名:Set1302
;功    能:设置DS1302 初始时间,并启动计时。
;说    明:
;调    用:RTInputByte
;入口参数:初始时间在:Second,Minute,Hour,Day,Month,Week.YearL(地址连续)
;出口参数:无
;影响资源:A B R0 R1 R4 R7 
;设    计:zhaojunjie           日    期:2002-03-19
;修    改:                     日    期: 
;**********************************************************
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
;肟诓问菏奔浔4嬖?Second,Minute,Hour,Day,Month,Week.YearL
;出口参数:无
;影响资源:A B R0 R1 R4 R7
;设    计:zhaojunjie           日    期:2002-03-19
;修    改:                     日    期: 
;**********************************************************
Get1302:      
         MOV    R0,    #Second;
         MOV    R7,    #7
         MOV    R1,    #81H       ;秒地址
G13021:   CLR    T_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   R7,    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



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析