对 DS1302 操作程序如下
#pragma small
#include <>
#define uchar unsigned char
/************************************ 引 脚 连 接 图
*****************************************/
sbit ds1302_clk=P1^0;
sbit ds1302_dat=P1^1;
sbit ds1302_rst=P1^2;
sbit ACC_0 = ACC^0;
sbit ACC_1 = ACC^1;
sbit ACC_2 = ACC^2;
sbit ACC_3 = ACC^3;
sbit ACC_4 = ACC^4;
sbit ACC_5 = ACC^5;
sbit ACC_6 = ACC^6;
sbit ACC_7 = ACC^7;
/************************************* 函 数 说 明
******************************************/
//
void Read(void); 写 DS1302 操作
//
void Write(void); 读 DS1302 操作
uchar ReadRam_Byte(uchar address); //从 Ram 中读出一个字节
uchar ReadRTC_Byte(uchar address); // 从 DS1302 中读出一个字节
uchar WriteRam_Byte(uchar address,uchar number); // 向 Ram 中写
入一个字节
uchar WriteRTC_Byte(uchar address,uchar number); // 向 DS1302 中
写入一个字节
void ReadRam(uchar data * buffer,uchar size); // 从 Ram 中读出多个
字节
void ReadRTC(uchar data * buffer,uchar size); // 从 DS1302 中读出
多个字节
void WriteRam(uchar data * buffer,uchar size); // 向 Ram 中写入多
个字节
void WriteRTC(uchar data * buffer,uchar size); // 向 DS1302 中写入
多个字节
uchar ReadSec(void); // 从 DS1302 中读出秒字节
uchar ReadMin(void); // 从 DS1302 中读出分字节
uchar ReadHr(void); // 从 DS1302 中读出时字节
uchar ReadDay(void); // 从 DS1302 中读出日字节
uchar ReadMonth(void); // 从 DS1302 中读出月字节
uchar ReadWeek(void); // 从 DS1302 中读出星期字节
uchar ReadYear(void); // 从 DS1302 中读出年字节
void WriteSec(uchar number); //向 DS1302 中写入秒字节
void WriteMin(uchar number); // 向 DS1302 中写入分字节
void WriteHr(uchar number); //向 DS1302 中写入时字节
void WriteDay(uchar number); // 向 DS1302 中写入日字节
void WriteMonth(uchar number); // 向 DS1302 中写入月字节
void WriteWeek(uchar number); //向 DS1302 中写入星期字节
void WriteYear(uchar number); // 向 DS1302 中写入年字节
void WriteControl(uchar number); //向慢速充电控制寄存器写入控制
字节
void EnableWP(void); //禁止写保护
void DisableWP(void); // 允许写保护
//
void Write(void) 写 DS1302 操作
{
//
ds1302_dat = ACC_0; 写 DS1302
//
ds1302_clk = 1; 时钟上升沿,发送数据有效
//
ds1302_clk = 0; 清零时钟总线
ds1302_dat = ACC_1;
ds1302温度 来自淘豆网m.daumloan.com转载请标明出处.