您当前的位置:五五电子网电子知识单片机-工控设备STC单片机(stc单片机1TMCU控制DS1302程序 正文
stc单片机1TMCU控制DS1302程序

stc单片机1TMCU控制DS1302程序

点击数:7993 次   录入时间:03-04 11:50:32   整理:http://www.55dianzi.com   STC单片机(
SCLK BIT P1.0                   ;DS1302时钟口P1.0
IO   BIT P1.1                   ;DS1302数据口P1.1
RST  BIT P1.2                   ;DS1302片选口P1.2

NOW  DATA 40H

    ORG 0
    JMP Reset

    ORG 100H
Reset:
    CALL DS1302_Initial     ;初始化DS1302
     MOV  DPTR,#INIT
    CALL DS1302_SetTime        ;设置初始时间
     MOV  R0,#NOW
    CALL DS1302_GetTime        ;读取当前时间

    JMP $

INIT:  //秒 分  时  日  月 星期 年
    DB  00H,00H,20H,01H,01H,05H,10H
;**************************************
;延时X微秒(STC12C5A60S2@12M)
;不同的工作环境,需要调整此函数
;入口参数:R7
;出口参数:无
;**************************************
Delay:                      ;6 此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同
    NOP                     ;1
    NOP                     ;1
    RET                     ;4


;**************************************
;从DS1302读1字节数据
;入口参数:无
;出口参数:ACC
;**************************************
DS1302_ReadByte:
    CLR A
    PUSH 0
     MOV  0,#8                ;8位计数器
ReadNext:
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
     MOV  C,IO                ;读取数据
    RRC A                   ;保存数据
    SETB SCLK               ;时钟线拉高
    CALL Delay              ;延时等待
    DJNZ 0,ReadNext
    POP 0
    RET

;**************************************
;向DS1302写1字节数据
;入口参数:ACC
;出口参数:无
;**************************************
DS1302_WriteByte:
    PUSH 0
     MOV  0,#8                ;8位计数器
WriteNext:
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
    RRC A                   ;移出数据
     MOV  IO,C                ;送出到端口
    SETB SCLK               ;时钟线拉高
    CALL Delay              ;延时等待
    DJNZ 0,WriteNext
    POP 0
    RET

;**************************************
;读DS1302某地址的的数据
;入口参数:ACC (地址)
;出口参数:ACC (读出的数据)
;**************************************
DS1302_ReadData:
    CLR RST                 ;拉低片选
    CALL Delay              ;延时等待
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
    SETB RST                ;使能片选
    CALL Delay              ;延时等待
    CALL DS1302_WriteByte   ;写地址
    CALL DS1302_ReadByte    ;读数据
    RET

;**************************************
;往DS1302的某个地址写入数据
;入口参数:ACC (地址) B(需写入的数据)
;出口参数:无
;**************************************
DS1302_WritEDAta:
    CLR RST                 ;拉低片选
    CALL Delay              ;延时等待
    CLR SCLK                ;时钟线拉低
    CALL Delay              ;延时等待
    SETB RST                ;使能片选
    CALL Delay              ;延时等待
    CALL DS1302_WriteByte   ;写地址
     MOV  A,B                 ;地址数据送入ACC
    CALL DS1302_WriteByte   ;写数据
    RET

;**************************************
;写入初始时间
;入口参数:DPTR (初始值地址)
;出口参数:无
;**************************************

[1] [2]  下一页


本文关键字:单片机  程序  STC单片机(单片机-工控设备 - STC单片机(