在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1679|回复: 0

[资料] 时钟芯片DS1302的C语言驱动(2)

[复制链接]
发表于 2012-11-1 21:41:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
作者评论:本程序为时钟芯片DS1302的C语言驱动,任何单片机,MCU都适用,只要修改下
RTC_SCLK,RTC_IO,RTC_CS等位的高低电平的,以及中断禁止、使能的定义即可。
void SendByte_DS1302(char SendData)
{
char clkserialbyte=7;
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
do
{
if(SendData&0x01)
RTC_IO=HIGH;
else
RTC_IO=LOW;
SendData=SendData>>1;
RTC_SCLK=HIGH;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
}while(clkserialbyte--);
}

RecByte_DS1302()
{
char clkserialbyte=7;
char ReadData=0;
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
do
{
ReadData=ReadData>>1;
if(RTC_IO==1)
RTC_SCLK=HIGH;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
}while(clkserialbyte--); // 接收一字节
return(ReadData);
}
char Read_DS1302(char clk_command)
{
_DINT();
RTC_CS=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
SendByte_DS1302(clk_command);
clk_command=RecByte_DS1302();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_CS=HIGH;
return(clk_command);
}
void Write_DS1302(char clk_command,char clk_data)
{
_DINT();
RTC_CS=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
SendByte_DS1302(clk_command);
SendByte_DS1302(clk_data);
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_CS=HIGH;
}
// 初始化DS1302芯片
void IniDS1302()
{
Write_DS1302(CmdWrControl,0);
Write_DS1302(CmdWrSec,0);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 07:49 , Processed in 0.020264 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表