总结一下一些模块常用的子程序

DS1302读写时间数据

//DS1302写入地址命令,顺序为秒分时日月周年,最低位读写位,读取的地址在写入的基础上加1
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
uchar year0=0x20;//年份头两位
//DS1302时钟初始化2020年8月4日星期二12点00分00秒。存储顺序是秒分时日月周年,存储格式是用BCD码//
uchar TIME[7] = {0, 0, 0x12, 0x04, 0x08, 0x02, 0x20};
/*******************************************************************
函数名称:Ds1302Write()
函数功能:向DS1302命令(地址+数据)。
输入参数:addr:写入数据的地址  dat:写入的数据
返回值:  无
*******************************************************************/
void Ds1302Write(uchar addr, uchar dat)
{uchar n;RST = 0;_nop_();SCLK = 0;        //先将SCLK置低电平。_nop_();RST = 1;      //然后将RST(CE)置高电平。_nop_();for (n=0; n<8; n++)      //开始传送八位地址命令{DSIO = addr & 0x01;       //数据从低位开始传送addr >>= 1;SCLK = 1;     //数据在上升沿时,DS1302读取数据_nop_();SCLK = 0;_nop_();}for (n=0; n<8; n++)     //写入8位数据{DSIO = dat & 0x01;dat >>= 1;SCLK = 1;     //数据在上升沿时,DS1302读取数据_nop_();SCLK = 0;_nop_();   }            RST = 0;      //传送数据结束_nop_();
} /*******************************************************************
函数名称:Ds1302Read()
函数功能:读取一个地址的数据。
输入参数:addr:需要读取数据的地址
返回值:  dat:读出的数据
*******************************************************************/
uchar Ds1302Read(uchar addr)
{uchar n,dat,dat1;RST = 0;_nop_();SCLK = 0;       //先将SCLK置低电平。_nop_();RST = 1;      //然后将RST(CE)置高电平。_nop_();for(n=0; n<8; n++)       //开始传送八位地址命令{DSIO = addr & 0x01;       //数据从低位开始传送addr >>= 1;SCLK = 1;     //数据在上升沿时,DS1302读取数据_nop_();SCLK = 0;       //DS1302下降沿时,放置数据_nop_();}_nop_();for(n=0; n<8; n++)       //读取8位数据{dat1 = DSIO;      //从最低位开始接收dat = (dat>>1) | (dat1<<7);SCLK = 1;_nop_();SCLK = 0;      //DS1302下降沿时,放置数据_nop_();}RST = 0;_nop_();      //以下为DS1302复位的稳定时间,必须的。SCLK = 1;_nop_();DSIO = 0;_nop_();DSIO = 1;_nop_();return dat;
}/*******************************************************************
函数名称:Ds1302Init()
函数功能:初始化DS1302。
输入参数:无
返回值:  无
*******************************************************************/
void Ds1302Init()
{uchar n;Ds1302Write(0x8E,0X00);         //关闭写保护功能for (n=0; n<7; n++)     //写入7个字节的时钟信号:分秒时日月周年{Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);    } Ds1302Write(0x8E,0x80);        //打开写保护功能
}/*******************************************************************
函数名称:Ds1302ReadTime()
函数功能:读取时钟的日期、时间数据。
输入参数:无
返回值:  无
*******************************************************************/
uchar DateString[11]; //读取的日期数据存储数组
uchar TimeString[9];  //读取的时间数据存储数组
void Ds1302ReadTime()
{uchar second,minute,hour,day,month,week,year;second=Ds1302Read(WRITE_RTC_ADDR[0]|0x01);       //读取ds1302中的秒minute=Ds1302Read(WRITE_RTC_ADDR[1]|0x01);        //读取ds1302中的分hour=Ds1302Read(WRITE_RTC_ADDR[2]|0x01);      //读取ds1302中的时day=Ds1302Read(WRITE_RTC_ADDR[3]|0x01);           //读取ds1302中的天month=Ds1302Read(WRITE_RTC_ADDR[4]|0x01);     //读取ds1302中的月week=Ds1302Read(WRITE_RTC_ADDR[5]|0x01);      //读取ds1302中的周year=Ds1302Read(WRITE_RTC_ADDR[6]|0x01);      //读取ds1302中的年DateString[0] = year0/16+0x30 ;   //分离得到十位并转换成ASCII码DateString[1] = year0%16+0x30 ;     //分离得到各位,注意&0x0f却无法实现DateString[2] = year/16+0x30 ;    DateString[3] = year%16+0x30 ;   DateString[4] = '-';DateString[5] = month/16+0x30;DateString[6] = month%16+0x30 ;DateString[7] = '-';DateString[8] = day/16+0x30 ;DateString[9] = day%16+0x30 ;  DateString[10] = '\0';                //得到年月日显示格式的字符串数组TimeString[0] = hour/16+0x30 ;TimeString[1] = hour%16+0x30 ;TimeString[2] = ':';TimeString[3] = minute/16+0x30 ;TimeString[4] = minute%16+0x30 ;         TimeString[5] = ':';    TimeString[6] = second/16+0x30;TimeString[7] = second%16+0x30 ;TimeString[8] = '\0';             //得到时分秒显示格式的字符串数组
}

DS1302示例子程序相关推荐

  1. LCD12864示例子程序

    总结一下一些模块常用的子程序 相信很多同学和我一样,刚开始的时候可能不太喜欢拿着数据手册去看,然后去写一些子程序.比如说lcd12864或者lcd1602的一些写命令.写数据.忙检查子程序等等. 这里 ...

  2. STM32使用库函数控制时钟芯片DS1302提供时间

    DS1302简介 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片.它可以对年.月.日.周.时.分.秒进行计时,并且具有闰年补偿等多种功能: 每天的天数和闰年的天数可 ...

  3. 微型计算机原理与应用课件,微机原理与应用课件

    PPT内容 这是微机原理与应用课件,包括了微型计算机系统概述,微处理器指令系统,汇编语言程序设计,微处理器外部特性,半导体存储器系统,基本输入输出接口等内容,欢迎点击下载. Principle and ...

  4. 微型计算机原理与接口技术ppt,单片机原理与接口技术课件ppt

    PPT内容 这是单片机原理与接口技术课件ppt,包括了微型计算机基础,MCS-51单片机结构与时序,习题课,MCS-51与存储器连接示例,汇编语言程序设计,半导体存储器,中断系统,并行I/O接口,MC ...

  5. 51单片机测温加万年历

    //本程序实现测温+万年历显示: #include <reg51.h> #include <intrins.h> #include<absacc.H> #inclu ...

  6. keil怎样将c语言多个程序合并,keil多个子程序合并问题

    本人以前学单片机时学的是汇编,所以C语言的keil单片机编程不是很懂,我打算做一个酒精测试仪的课程设计,这个是我网上找到的程序代码,我试着编译,但是总是报错,想问问各位大师怎么解决,是设置的问题么,希 ...

  7. STC89C52单片机DS1302介绍以及代码示例

    目录 DS1302介绍 引脚定义与应用电路 内部结构框架图 寄存器定义 时序定义 BCD码 时间设置上的一些问题 代码示例: DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充 ...

  8. 寻路机器人单片机程序示例_单片机精华程序代码示例:DS1302时钟程序

    真正的熟练掌握单片机,实际操作是很重要的.多看程序,多分析,从别人规范的程序代码中学习技巧是很必要的. 硬件部分: 程序部分: main.c文件 /************************** ...

  9. Swift与LLVM-Clang原理与示例

    Swift与LLVM-Clang原理与示例 LLVM 学习 从 简单汇编基础 到 Swift 不简单的 a + 1 作为iOS开发,程序崩溃犹如家常便饭,秉着没有崩溃也要制造崩溃的原则 每天都吃的很饱 ...

最新文章

  1. 面试官问你 SpringMVC 的工作原理,你还不知道吗?
  2. Oracle 9i 升级至Oracle10g数据库最好的方法
  3. (c#)数据结构与算法分析 --递归
  4. Python 3.5 socket OSError: [Errno 101] Network is unreachable
  5. Executor框架
  6. 国产Dhyana禅定x86处理器开始启动生产
  7. Angular 根据指定条件动态决定是否显示自定义的popup hover Component
  8. Android Gallery控件使用方法详解
  9. 成员变量、局部变量、实例变量、静态变量、类变量、常量
  10. 导出oracle数据c#代码,C# 程序导入导出oracle数据库
  11. 多线程的那点儿事(之生产者-消费者)
  12. 解决securecrt rz 上传rar,gif文件不正确问题【转】
  13. 马云卸任阿里巴巴董事局主席;苹果承认违法中国劳动法;IntelliJ IDEA 2019.2.2 发布​ | 极客头条...
  14. bezier 曲线的基本性质包括证明
  15. 如何在Android应用里对HTTP请求头部添加适当的User-Agent字段
  16. Linux Commands
  17. 面试智力题,1000瓶水,其中一瓶有毒,而且毒性无敌,稀释一亿倍毒性都不减,毒性的发作时间最长为1小时,请问怎样可以在两个小时之内找出哪瓶水有毒
  18. C/C++笔试题(很多)
  19. eNews 第二十五期/2007.06
  20. x265 码率控制算法(一)CQP

热门文章

  1. STL中mem_fun与mem_fun_ref的区别[转]
  2. openstack之虚拟机管理命令
  3. yolo3(目标检测)实测
  4. C#第三方控件的使用
  5. 第 十 七 天 : 安 装 php 遇 到 的 错 误 汇 总
  6. SQL2005的安装
  7. linux 下iptraf监控网卡流量
  8. 广域网应用场景包括哪些?—Vecloud
  9. 浅显易懂讲讲网关和DNS的概念—Vecloud微云
  10. better-scroll 的介绍