看就是有看过编程规范的-ds1302 程序

转载 2012年03月22日 15:23:44

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5245747&bbs_page_no=1&search_mode=1&search_text=1302&bbs_id=9999

 

*--------------------------------------------------------------------
函数名称:DS1302的一个完整写操作
函数功能:
注意事项:无
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
void write(uint8 addr,uint8 dat)
{
CLR_RST;    //before SCL change to low level, RST must keep low level
CLR_SCK;
SET_RST;

//CLR_SCK;    //also ok!!!
//CLR_RST;
//SET_RST;

//CLR_RST;    //error
//SET_RST;
//CLR_SCK;

operData=0X80|(addr<<1);
writeByte();
operData=dat;
writeByte();
/* the following sentence here is not indispensable,
   but insert this sentence here can prevent ariseing error!
   because when start operating,RST must keep low level! */
CLR_RST;
}
/*--------------------------------------------------------------------
函数名称:DS1302的一个完整读操作
函数功能:
注意事项:无
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
uint8 read(uint8 cmd)
{
//CLR_RST;
CLR_SCK;
SET_RST;
operData=(cmd<<1)|0x81;
writeByte();
readByte();
/* the following sentence here is not indispensable,
   but insert this sentence here can prevent ariseing error!
   because when start operating,RST must keep low level! */
CLR_RST;
return(operData); 
}
/*--------------------------------------------------------------------
函数名称:DS1302读时间
函数功能:
注意事项:无
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
void DS1302_getTime(uint8 *buf)
{
uint8 hourAdr=2,minuteAdr=1,secondAdr=0;

buf[0]=read(secondAdr);
buf[0]=changeHexToInt(buf[0]);

buf[1]=read(minuteAdr);
buf[1]=changeHexToInt(buf[1]);

buf[2]=read(hourAdr);
buf[2]=changeHexToInt(buf[2]);

//DS1302_speaTime();
}
/*--------------------------------------------------------------------
函数名称:DS1302读日期
函数功能:
注意事项:无
提示说明:无
输    入:无
返    回:无
--------------------------------------------------------------------*/
//void DS1302_getDate(void)
//{
//
//}
/*--------------------------------------------------------------------
函数名称:DS1302拆时间
函数功能:
注意事项:无
提示说明:低层将时间拆好,方便上层调用
输    入:无
返    回:无
--------------------------------------------------------------------*/
//void DS1302_speaTime(void)
//{
// speaData(DS1302Second,2);
// DS1302SecHi=dataElem[1];
// DS1302SecLow=dataElem[0];
//
// speaData(DS1302Minute,2);
// DS1302MinHi=dataElem[1];
// DS1302MinLow=dataElem[0];
//
// speaData(DS1302Hour,2);
// DS1302HourHi=dataElem[1];
// DS1302HourLow=dataElem[0];
//}
/*--------------------------------------------------------------------
函数名称:DS1302拆日期
函数功能:
注意事项:无
提示说明:无
输    入:无
返    回:无
--------------------------------------------------------------------*/
//void DS1302_speaDate(void)
//{
//
//}
/*--------------------------------------------------------------------
函数名称:DS1302设置时间
函数功能:
注意事项:无
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
void DS1302_setTime(uint8 hour,uint8 minute,uint8 second)
{
uint8 hourAdr=2,minuteAdr=1,secondAdr=0;

hour=changeIntToHex(hour);
minute=changeIntToHex(minute);
second=changeIntToHex(second);

openWP();
write(hourAdr,hour);
write(minuteAdr,minute);
write(secondAdr,second);
closeWP();
}
/*--------------------------------------------------------------------
函数名称:DS1302设置日期
函数功能:
注意事项:无
提示说明:无
输    入:
返    回:无
--------------------------------------------------------------------*/
//void DS1302_setDate(uint8 year,uint8 month,uint8 day)
//{
//
//}
/*--------------------------------------------------------------------
函数名称:DS1302初始化
函数功能:
注意事项:无
提示说明:无
输    入:无
返    回:无
--------------------------------------------------------------------*/
void DS1302_init(void)
{
OUT_SCK;
OUT_SIO;
OUT_RST;
openWP();
setChargePrmt();
closeWP();
}

#endif

相关文章推荐

浅谈单片机c语言模块化编程-附ds1302时钟芯片驱动程序

在单片机c语言编程中,模块化编程显得非常重要。我觉得,模块化恰恰体现了c语言很好的可移植性。嵌入式编程中,硬件模块区分非常明显,所以驱动程序用模块化编程显得十分方便简洁。         详细规则不...

51单片机的DS1302的驱动程序

51ds1302时钟芯片的驱动程序

DS1302+AT24C02+按键数码管显示程序 (原创)

#include #include #define uint unsigned int #define uchar unsigned char bit write=0; sbit led0=P1^5;...

C语言程序>>DS1302

#include #include #include "DS1302.h" /* DS1302 IO口定义 */ #define CLK     PC0     #define...

51单片机DS1302时钟芯片简单程序

#include  #include  #define uchar unsigned char  #define uint unsigned int data_7seg[10]={0xc0,0...

单片机控制SPI协议时钟芯片DS1302之模块化编程及待解决的问题(持续更新中)

这里将我编写的STC12C5A60S2单片机控制SPI协议时钟芯片ds1302的程序共享一下,是希望前辈们给予斧正 。

stm32+DS1302+TM1638驱动程序

TM1638数码管显示驱动程序(参考) 1、TM1638与STM32连接 1.1 硬件连接 Vcc--电源+ GND--电源地 STB--PA0 C...

PIC单片机(PIC16F877A)DS1302芯片程序

#include typedef unsigned char uchar; typedef unsigned int uint; #define rs_h PORTC|=0x01 #defin...

DS1302 时钟芯片的程序

DS1302 时钟芯片的程序 DS1302 时钟芯片的程序 #include  sbit T_CLK = P2^7; /*实时时钟时钟线引脚 */  sbit T_IO = P1^4;...

ds 1302 和 89c51 程序

在网上看了很久,发现初学者最有兴趣的就是DS1302时钟电路,也很自然,它是个做出来就让你觉得最实用的电路了,但实际上制做上并不简单,首先你要让你的显示部分(不管是数码管还是LCD)调试通过。然后把D...
  • jinn3
  • jinn3
  • 2012-03-02 14:24
  • 1722
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)