电路设计,软件开发,专业项目团队承接电子产品开发!


ISPRO下载型编程器
火爆销售中

RS232/TTL转换器
全IC串口窃电

RS232/TTL转换线
全IC串口窃电

ByteBlasterMV Cable
CPLD/FPGA并口下载线

ByteBlaster II Cable ISPRO下载型编程器
支持S51/AVR/PIC
超级51开发板套件
前卫实用超值

PC/MCU/CPLD
三合一学习套件

全新万年历方案
AVR单片机开发板
 

Min51单片机仿真机
迷你型

ARM7开发板
仅售260元!
 

RS-232/RS-485双向接口电平转换器  

51单片机升级STM32
火爆销售中
MPLAB-ICD2
火爆销售中
LED51开发板
玩具又名图文显示棒

面板模块/开发板
经济危机明智决择

       

GSM MODEM GSM猫

SMS短信模块 工业级/全自动
火爆销售中

大功率数传电台

高速数传电台

您当前位置:电子技术资料 -> 外围驱动 -> 时钟 ->

祝您阅读愉快!

ISPRO下载型编程器

RS232 TO TTL转换器
↑↑本文相关产品介绍↑↑

DS1302时钟芯片驱动程序


类别:技术文章
来源:未知
作者:未知
关键字:DS1302
加入日期:2010-8-3

//DS1302时钟芯片驱动程序

#include <reg51.h>

//下面是引脚连接关系
sbit clock_dat=P1^0;
sbit clock_clk=P1^1;
sbit clock_clk=P1^2;


sbit a0=ACC^0;
sbit a1=ACC^1;
sbit a2=ACC^2;
sbit a3=ACC^3;
sbit a4=ACC^4;
sbit a5=ACC^5;
sbit a6=ACC^6;
sbit a7=ACC^7;



void clock_out(unsigned char dd) {
ACC=dd;
clock_dat=a0;clock_clk=1;clock_clk=0;
clock_dat=a1;clock_clk=1;clock_clk=0;
clock_dat=a2;clock_clk=1;clock_clk=0;
clock_dat=a3;clock_clk=1;clock_clk=0;
clock_dat=a4;clock_clk=1;clock_clk=0;
clock_dat=a5;clock_clk=1;clock_clk=0;
clock_dat=a6;clock_clk=1;clock_clk=0;
clock_dat=a7;clock_clk=1;clock_clk=0;
}
unsigned char clock_in(void) {
clock_dat=1;
a0=clock_dat;
clock_clk=1;clock_clk=0;a1=clock_dat;
clock_clk=1;clock_clk=0;a2=clock_dat;
clock_clk=1;clock_clk=0;a3=clock_dat;
clock_clk=1;clock_clk=0;a4=clock_dat;
clock_clk=1;clock_clk=0;a5=clock_dat;
clock_clk=1;clock_clk=0;a6=clock_dat;
clock_clk=1;clock_clk=0;a7=clock_dat;
return(ACC);
}
unsigned char read_clock(unsigned char ord) {
unsigned char dd=0;
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
dd=clock_in();
clock_rst=0;
clock_clk=1;
return(dd);
}
void write_clock(unsigned char ord,unsigned char dd) {
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
clock_out(dd);
clock_rst=0;
clock_clk=1;
}


/*注意事项:
1.每次上电,必须把秒寄存器高位(第7位)设置为0,时钟才能走时。
2.如果需要写入数据和时钟日历信息,必须把“写保护”寄存器设置成为0,方法入下:
write_clock(0xc1|0x7,0);
3.使能“慢速充电”,方法如下:
write_clock(0xc1|0x8,0xaa);
*/

void main(void) {
unsigned char address,d;
//调用方法:
//DS1302内部分为32字节RAM和8字节时钟日历数据
//读内部RAM 0:
address=0;
d=read_clock(0xc0|address);
//读内部RAM 1:
address=1;
d=read_clock(0xc0|address);

//写内部RAM 0,写入5:
address=0;d=5;
write_clock(0xc1|address,d);
//读内部RAM 1,写入123:
address=1;d=123;
d=read_clock(0xc1|address,d);

//=================================


//读内部时钟日历数据0:秒:
address=0;
d=read_clock(0x80|address);
//读内部时钟日历数据1:分:
address=1;
d=read_clock(0x80|address);

//写内部时钟日历数据0:秒,写入03秒
address=0;d=3;
write_clock(0x80|address,d);
}



/*
内部时钟日历地址图,始终日历用BCD码储存
0:秒
1:分
2:小时
3:日期
4:月份
5:星期
6:年
7:写保护寄存器
8:慢速充电寄存器
*/


您可能还会关注的相关技术资料:

中国电子网
www.EC66.com
QQ:34740080 EMAIL:iloveaoe@163.com
最佳浏览:1024*768
Copyright (C) 2001-2010 EC66.COM All Rights Reserved
Aoe/帝国 制作维护
粤ICP备18061901号