首页 > 应用 > 单片机应用
[导读]
#include"REG51.H"#include"INTRINS.H"typedefunsignedcharBYTE;sbitSCLK=P1^0;//DS1302时钟口P1.0sbitIO=P1^1;//DS1302数据口P1.1sbitRST=P1^2;//DS1302片选口P1.2//秒分时日月星期年BYTEcodeinit[]={

#include"REG51.H"
#include"INTRINS.H"

typedefunsignedcharBYTE;

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

本文引用地址: http://www.21ic.com/app/mcu/201806/761560.htm

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<8;i++)//8位计数器
{
SCLK=0;//时钟线拉低
Delay();//延时等待
dat>>=1;//数据右移一位
if(IO)dat|=0x80;//读取数据
SCLK=1;//时钟线拉高
Delay();//延时等待
}

returndat;
}

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

for(i=0;i<8;i++)//8位计数器
{
SCLK=0;//时钟线拉低
Delay();//延时等待
dat>>=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);//写保护
}


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


换一批

延伸阅读

[单片机应用] 单片机入门的有效途径

单片机入门的有效途径

对一个初学单片机的人来说,学习的方法和途径非常重要。如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,能够产生什么实际效果,那么也许用不了几天就会觉得枯燥无味而半途而......

关键字:单片机入门 有效途径

[单片机应用] cortex m0 lpc1114 clkout配置程序

cortex m0 lpc1114 clkout配置程序

配置完时钟,如何验证时钟的配置准确性呢?LPC1114带有CLKOUT引脚,此引脚专门用来输出时钟,用示波器观察此引脚,即可看到时钟的频率。1.硬件配置CLKOUT引脚位于LPC111X和LPC11CXX单片机的P0.1脚,如下图所示:2.......

关键字:cortex m0 lpc1114 clkout 配置程序

[单片机应用] 第四节:PIC系列单片机程序存储器及堆栈

第四节:PIC系列单片机程序存储器及堆栈

PIC16C5X内部有384~2K的只读程序存贮器,下面论述其结构和堆栈。§1.4.1 程序存储器结构PIC16C5X程序存储器结构如图1.3所示: 从上图可看出,PIC程序存储器采用分页结构,每页长0.5K。因此对......

关键字:堆栈 存储器 单片机 程序

[单片机应用] 51单片机学习笔记:可对时电子钟

51单片机学习笔记:可对时电子钟

本篇是对上一篇的改进,昨天学习了第4章中的独立键盘的使用独立键盘拥有自己独有的IO口,所以比较简单,我上一篇写的电子钟程序只能烧程序对时,不能手动按键对时,这肯定是最差劲的做法,所以学习了按键之后,就立马动手改......

关键字:51单片机 可对时电子钟

[单片机应用] 8051单片机端口结构—P3口

8051单片机端口结构—P3口

P3口是一个多功能端口,对比P1的结构图不难看出,P3口与P2口的差别在于多了与非门和缓冲器。正是这两个部分,使得P3口除了具有P1口的准双向I/O功能之外,还可以使用各引脚所具有的第二功能。与非门的作......

关键字:单片机 端口 结构

[单片机应用] 单片机中断唤醒

单片机中断唤醒

生活上有很多东西都搭载着单片机而进行工作的,而且有相当一部分的设备、仪器、产品都是靠蓄电池来提供电源的,往往这些靠蓄电池供电的设备、仪器、产品都能够用上一大段时间。例如我们经常接触到的遥控器,假若MCU一......

关键字:单片机 中断唤醒

[汽车电子] 马自达新车 采用Skyactiv-X发动机

马自达新车 采用Skyactiv-X发动机

据外媒报道,在本月的东京车展上,马自达将推出两款概念车,以展示未来动力传动技术及外观设计趋势。本周二(2017.10.10)发布的照片展示了新一代马自达skyactivx发动机及全新的外观设计风格。 ......

关键字:马自达 Skyactiv-X发动机

[智能硬件] 艾迈斯半导体创新接口技术可显著解决真无线耳塞机构设计束缚

艾迈斯半导体创新接口技术可显著解决真无线耳塞机构设计束缚

艾迈斯半导体(ams AG)推出了POW:COM创新接口技术。过往真无线耳塞技术需要六根导线才可以实现与充电盒之间的充电与通讯,这会制约入耳式耳塞所需要的小型舒适的机械结构设计,而POW:COM仅需两根导线即可完成此功能。 ......

关键字:艾迈斯半导体 接口技术 真无线耳塞技术

[半导体] 继谷歌之后,欧盟继续调查高通芯片定价策略

继谷歌之后,欧盟继续调查高通芯片定价策略

北京时间7月20日凌晨消息,针对高通利用低价芯片打压竞争对手一案,欧盟委员会今日又提出了新的指控。早在2015年12月,欧盟委员会就向高通发出了“异议声明”,指控高通利用其在手机芯片市场的主导地位打压......

关键字:谷歌 高通 芯片

[消费类电子新闻] 逆流而上!欧洲智能手机出货量历史性下降,华为反而增长40%

逆流而上!欧洲智能手机出货量历史性下降,华为反而增长40%

据《金融时报》报道,全球智能手机市场的饱和和销售减缓导致2018年前三个月欧洲智能手机的出货量出现历史性下降,其中西欧的下降最为严重。......

关键字:欧洲 智能手机 出货量 华为

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客