DS1302时钟芯片51单片机c语言程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#ifndef __DS1302_H__

#define __DS1302_H__

#define uchar unsigned char

#define uint unsigned int

#include

sbit SCLK = P3^2;

sbit IO = P2^4;

sbit RST = P3^3;

#define R_Second 0x81

#define W_Second 0x80

#define R_Minute 0x83

#define W_Minute 0x82

#define R_Hour 0x85

#define W_Hour 0x84

#define R_Day 0x87

#define W_Day 0x86

#define R_Month 0x89

#define W_Month 0x88

#define R_Week 0x8B

#define W_Week 0x8A

#define R_Year 0x8D

#define W_Year 0x8C

#define R_Control 0x8F

#define W_Control 0x8E

void DS1302_Write_Byte(uchar Date); uchar DS1302_Read_Byte();

void Write_DS1302(uchar Adr,uchar Date); uchar Read_DS1302(uchar Adr);

void Init_DS1302();

#endif

#include "ds1302.h"

/************************************************************** 函數名稱:DS1302_Write_Byte(uchar Date)

函數功能:单字节写

輸入參數:写的字节

輸出參數:无

備注:

**************************************************************/ void DS1302_Write_Byte(uchar Date)

{

uchar i;

for(i = 0;i < 8;i++)

{

if(Date & 0x01)

IO = 1;

else

IO = 0;

SCLK = 1;

Date = Date >> 1;

SCLK = 0;

}

}

/************************************************************** 函數名稱:uchar DS1302_Read_Byte()

函數功能:单字节读

輸入參數:无

輸出參數:读出的数据

備注:

**************************************************************/ uchar DS1302_Read_Byte()

{

uchar i,Temp = 0;

for(i = 0;i < 8;i++)

{

Temp = Temp >> 1;

SCLK = 0;

if(IO == 1)

Temp = Temp | 0x80;

SCLK = 1;

}

return Temp;

}

/************************************************************** 函數名稱:Write_DS1302(uchar Adr,uchar Date)

函數功能:写数据

輸入參數:写的寄存器地址和数据

輸出參數:无

備注:

**************************************************************/ void Write_DS1302(uchar Adr,uchar Date)

{

RST = 0;

SCLK = 0;

RST = 1;

DS1302_Write_Byte(Adr);

DS1302_Write_Byte(Date);

RST = 0;

}

/************************************************************** 函數名稱:uchar Read_DS1302(uchar Adr)

函數功能:读数据

輸入參數:写的寄存器地址

輸出參數:读出的数据

備注:

**************************************************************/ uchar Read_DS1302(uchar Adr)

{

uchar Temp = 0;

RST = 0;

SCLK = 0;

RST = 1;

DS1302_Write_Byte(Adr);

Temp = DS1302_Read_Byte();

RST = 0;

Temp = Temp / 16 * 10 + Temp % 16;

return Temp;

}

/************************************************************** 函數名稱:Init_DS1302()

函數功能:初始化DS1302

輸入參數:无

輸出參數:无

備注:

**************************************************************/ void Init_DS1302()

{

Write_DS1302(W_Control,0x00);

Write_DS1302(W_Year,0x11);

Write_DS1302(W_Week,0x06);

Write_DS1302(W_Month,0x09);

Write_DS1302(W_Day,0x10);

Write_DS1302(W_Hour,0x16);

Write_DS1302(W_Minute,0x11);

相关文档
最新文档