0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STC单片机控制DS1302程序 (C程序)

算法&编程学院 来源:网络整理 2018-02-03 03:14 次阅读

#include"REG51.H"

#include"INTRINS.H"

typedefunsignedcharBYTE;

sbitSCLK=P1^0;//DS1302时钟口P1.0

sbitIO=P1^1;//DS1302数据口P1.1
sbitRST=P1^2;//DS1302片选口P1.2

//秒分时日月星期年
BYTEcodeinit[]={0x00,0x00,0x20,0x01,0x01,0x05,0x10};
BYTEdatanow[7];

voidDS1302_Initial();
voidDS1302_SetTime(BYTE*p);
voidDS1302_GetTime(BYTE*p);

voidmain()
{
DS1302_Initial();//初始化DS1302
DS1302_SetTime(init);//设置初始时间

DS1302_GetTime(now);//读取当前时间
while(1);
}

/**************************************
延时X微秒(STC12C5A60S2@12M)
不同的工作环境,需要调整此函数
此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同
**************************************/
voidDelay()
{
_nop_();
_nop_();
}

/**************************************
从DS1302读1字节数据
**************************************/
BYTEDS1302_ReadByte()
{
BYTEi;
BYTEdat=0;

for(i=0;i>=1;//数据右移一位
if(IO)dat|=0x80;//读取数据
SCLK=1;//时钟线拉高
Delay();//延时等待
}

returndat;
}

/**************************************
向DS1302写1字节数据
**************************************/
voidDS1302_WriteByte(BYTEdat)
{
chari;

for(i=0;i>=1;//移出数据
IO=CY;//送出到端口
SCLK=1;//时钟线拉高
Delay();//延时等待
}
}

/**************************************
读DS1302某地址的的数据
**************************************/
BYTEDS1302_ReadData(BYTEaddr)
{
BYTEdat;

RST=0;
Delay();
SCLK=0;
Delay();
RST=1;
Delay();
DS1302_WriteByte(addr);//写地址
dat=DS1302_ReadByte();//读数据
SCLK=1;
RST=0;

returndat;
}

/**************************************
往DS1302的某个地址写入数据
**************************************/
voidDS1302_WritEDAta(BYTEaddr,BYTEdat)
{
RST=0;
Delay();
SCLK=0;
Delay();
RST=1;
Delay();
DS1302_WriteByte(addr);//写地址
DS1302_WriteByte(dat);//写数据
SCLK=1;
RST=0;
}

/**************************************
写入初始时间
**************************************/
voidDS1302_SetTime(BYTE*p)
{
BYTEaddr=0x80;
BYTEn=7;

DS1302_WriteData(0x8e,0x00);//允许写操作
while(n--)
{
DS1302_WriteData(addr,*p++);
addr+=2;
}
DS1302_WriteData(0x8e,0x80);//写保护
}

/**************************************
读取当前时间
**************************************/
voidDS1302_GetTime(BYTE*p)
{
BYTEaddr=0x81;
BYTEn=7;

while(n--)
{
*p++=DS1302_ReadData(addr);
addr+=2;
}
}

/**************************************
初始化DS1302
**************************************/
voidDS1302_Initial()
{
RST=0;
SCLK=0;
DS1302_WriteData(0x8e,0x00);//允许写操作
DS1302_WriteData(0x80,0x00);//时钟启动
DS1302_WriteData(0x90,0xa6);//一个二极管+4K电阻充电
DS1302_WriteData(0x8e,0x80);//写保护
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620833
收藏 人收藏

    评论

    相关推荐

    新人疑问:DS1302时钟芯片程序中的ACC

    本人初学单片机,在DS1302时钟芯片程序中出现的ACC表示什么意思呢?ACC在程序中代表什么呢?是DS1302的一个缓存数据的东西吗?为什
    发表于 08-09 09:24

    单片机DS1302时钟仿真模块

    DS1302时钟仿真。如果要掉电时间还可以走的话,第一次仿真把设置的时间下载进单片机时间会自动存入DS1302内部寄存器中,再把程序中的赋值时间语句删掉,在下载
    发表于 10-09 19:38

    基于STCDS1302程序

    基于STCDS1302程序
    发表于 03-05 13:41

    DS1302与51单片机怎么连接 ,怎么写C程序??

    DS1302与51单片机怎么连接 ,怎么写C程序??
    发表于 01-12 10:00

    ds1302时钟程序详解,ds1302程序流程图(C程序)

    ds1302时钟程序详解 DS1302控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入
    发表于 05-17 13:22 8.7w次阅读
    <b class='flag-5'>ds1302</b>时钟<b class='flag-5'>程序</b>详解,<b class='flag-5'>ds1302</b><b class='flag-5'>程序</b>流程图(C<b class='flag-5'>程序</b>)

    PIC单片机控制时钟芯片DS1302汇编程序

    PIC单片机控制时钟芯片DS1302汇编程序
    发表于 05-24 09:56 1678次阅读

    基于单片机的综合应用程序ds1302送1602【C语言】

    基于单片机的综合应用程序ds1302送1602【C语言】
    发表于 01-06 14:22 6次下载

    基于单片机的综合应用程序ds1302送1602【C语言】显示时

    基于单片机的综合应用程序ds1302送1602【C语言】 显示时间
    发表于 01-06 14:21 4次下载

    51单片机DS1302实时时钟驱动程序

    本文首先阐述了ds1302引脚及功能,其次介绍了DS1302控制字节及电路图,最后详细介绍了51单片机DS1302实时时钟驱动
    发表于 05-15 08:45 9012次阅读
    51<b class='flag-5'>单片机</b><b class='flag-5'>DS1302</b>实时时钟驱动<b class='flag-5'>程序</b>

    使用单片机应用DS1302的时钟程序免费下载

    本文档的主要内容详细介绍的是使用单片机应用DS1302的时钟程序免费下载。
    发表于 08-20 17:31 7次下载
    使用<b class='flag-5'>单片机</b>应用<b class='flag-5'>DS1302</b>的时钟<b class='flag-5'>程序</b>免费下载

    基于51单片机多功能时钟DS1302仿真设计(包含源程序及仿真)

    基于51单片机多功能时钟DS1302仿真设计,资料包含源程序及仿真文件
    发表于 04-20 16:28 16次下载

    基于89C51单片机的1602液晶显示DS1302时钟源程序

    基于89C51单片机的1602液晶显示DS1302时钟源程序
    发表于 05-16 10:27 6次下载

    基于89C51单片机DS1302时钟原理源程序

    基于89C51单片机DS1302 时钟原理源程序
    发表于 05-16 10:05 5次下载

    基于89C51单片机DS1302可调时钟源程序

    基于89C51单片机DS1302可调时钟源程序
    发表于 05-16 10:05 0次下载

    基于89C51单片机DS1302时钟串口自动更新时间源程序

    基于89C51单片机DS1302时钟串口自动更新时间源程序
    发表于 05-16 10:04 1次下载