RTC-Real Time Clock是430单片机的实时时钟模块,可以配置成实时时钟模式(万年历)或者一般目的的32位计数器模式,其中实时时钟模式提供了年月日、时分秒,可以选择BCD码或者二进制格式,并且具有可编程的闹钟。RTC模块支持中断。相关寄存器请参阅430系列单片机user's guide(我用的是5438A)。

1.计数器模式

实时时钟控制器寄存器1 RTCMODE位被重置时,计数器模式被选择,通过软件设置可以得到一个32位的计数器。从时钟模式切换到计数器模式是通过重置计数值:RTCNT1、RTCNT2、RTCNT3、RTCNT4 和 预换算计数器:RT0PS、RT1PS。

计数器的增量计数器来自ACLK、SMCLK或者分频之后的ACLK、SMCLK。分频系数来自分频除法器RT0PS、RT1PS。RT0PS的输出可以和RT1PS的输出级联构成32位计数器的时钟源。4个独立的8位计数器级联成为32位的计数器。这能提供计数时钟的8位、16位、24位、32位溢出中断。RTCTEV位选择各自的触发,通过设置RTCTEVIE位,一个RTCTEV能够触发一个中断。计数器RTCNT1到RTCNT4都可以单独访问,并可能被写入数值。

2.日历模式

当RTCMODE被置位时,万年历模式被选中。值得一提的是,万年历模式有能够计算能否被4整除的闰年算法,这个算法范围是1901年到2099年。

2.1预分频

分频器自动将RT0PS和RT1PS配置成为实时时钟提供一秒间隔的时钟,RT0PS源于ACLK,一般来说ACLK为32768Hz,是为了实时时钟的运行。从日历模式切换到计数器模式时,会将年月日、时分秒全部被置位1,RT0PS和RT1PS也会被置位。当RTCBCD=1时,日历寄存器会被选为BCD码,必须在时间设置之前选择好格式,改变RTCBCD的状态和切换到计数器模式影响一样。

2.2闹钟功能

用户可编程闹钟只有在日历模式下有效。每一个闹钟寄存器都包括都包括一个闹钟使能位,AE用来修改每一个闹钟寄存器,通过设置闹钟寄存器的AE位,可以产生多种闹钟。无效的闹钟不会通过硬件的检测,所以用户有必要检查所设闹钟是否正确。

2.3读写实时时钟寄存器

系统时钟和实时时钟的时钟源异步,因而读写实时时钟寄存器的时候要注意。此时实时时钟寄存器每秒钟更新一次,为了防止在更新的时候读取实时时钟数据而造成错误数据的读取,应该设置一个禁止进入的窗口,在禁止进入窗口和窗口外期间,只有RTCRDY复位有效才可以读取。在RTCRDY复位的时候,读取操作是错误的并且读取的时间数据也无效被忽略。

2.4时钟中断

由于我做的部分只涉及实时时钟显示,中断部分没有过多涉及,就不在讨论了。

RTC实时时钟显示部分程序结构如下:

View Code

1 //只是部分代码,远未完整,只是说明一下框架

2 void Init_RTC(void)//初始化RTC

3 {4 RTCCTL01 = RTCSSEL_0 + RTCMODE; //时钟模式,每分钟中断, BCD格式

5 unsigned inthour,min,sec;6

7 hour=key[0]*10+key[1];8 min =key[2]*10+key[3];9 sec =key[4]*10+key[5];10

11 SetRTCYEAR(2012);12 SetRTCMON(6);13 SetRTCDAY(1);14 SetRTCHOUR(hour); //按键设定时间

15 SetRTCMIN(min);16 SetRTCSEC(sec);17 }18

19 while(key_C) //扫描按键

20 {21

22 if(key_stime_ok)23 {24 char str[4];25 key_stime_ok=0;26 key_temp=Read_Key();//读取按键数值

27 if(key_temp !=No_key)28 {29 key[key_C-1]=key_temp;30 sprintf(str,"%d",key_temp);31 PutStringEN24(60,k,str);32 k-=16;33 key_C--;34 }35 }36 }37

38 void Show_Clock(void)39 {40 unsigned intHour ,Minute,Second;41 char p1[10],p2[10],p3[10];42 for(;RTCCTL01&RTCRDY;) _NOP(); //等待RTC有效

43 for(;RTCCTL01&RTCRDY;) _NOP();44

45 Hour =GetRTCHOUR();46 Minute =GetRTCMIN();47 Second =GetRTCSEC();48

49 sprintf(p1,"%02d",Hour);50 sprintf(p2,"%02d",Minute);51 sprintf(p3,"%02d",Second);52

53 PutStringEN24(1,2,p1); //用的TFT屏显示时钟

54 PutStringEN24(1,34,":");55 PutStringEN24(1,50,p2);56 PutStringEN24(1,82,":");57 PutStringEN24(1,98,p3);58 }

火牛单片机rtc时钟配置_MSP430单片机之RTC-实时时钟相关推荐

  1. 火牛单片机rtc时钟配置_怎么用STM32F103RTC进行时钟的配置

    #include "sys.h" #include "delay.h" #include "usart.h" #include " ...

  2. 火牛单片机rtc时钟配置_STM8单片机rtc时钟的设计

    STM8 rtc 时钟可以使用内部低频时钟源,或者外部低速 32768Hz 时钟源,关 于 rtc 部分代码如下: #include #include voidinit_rtc ( void ) { ...

  3. 火牛单片机rtc时钟配置_STM32单片机RTC时钟的使用方法及步骤

    STM32RTC 使用步骤: 打开 PWR 时钟和 Backup 区数据访问 若使用外部低速时钟( LSE ) ,打开 LSE 并等待起振 选择和打开 RTC 时钟,等待时钟同步 配置时间格式,分频系 ...

  4. arduino uno r3单片机封装图_Arduino提高篇22—实时时钟DS1302

    关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 很多电子爱好者都热衷制作电子时钟来练手,这些时钟会使用数码管.点阵屏.LCD液晶屏.OLED屏.TFT屏等显示模块,所使 ...

  5. 51单片机学习2——DS1302制作简易数码管电子时钟

    目录 一.硬件电路 二.DS1302 1.DS1302概述 2.ds1302控制寄存器 3.DS1302时序图 (1)读字节程序: (2)写字节程序 (3)初始化程序 (4)转换时间程序 三.数码管 ...

  6. 【51单片机学习笔记】DS1302实时时钟程序

    目录 实验现象 DS1302介绍 ds1302简介 引脚 工作流程 寄存器 控制寄存器 时间寄存器 读写与时序 写 读 ds1302的GPIO 代码 ds1302.c main.c 备注 实验现象 将 ...

  7. 51单片机进阶案例(1)——基于MATLAB GUI的单片机串口与PC的通信实现实时时钟和双向可调时钟功能(利用DS1302时钟芯片和LCD1602液晶屏)

    目录 一.案例描述 二.实现功能 三.51单片机部分实现 3.1 实时时钟的实现 3.2 串口通信的实现 3.2.1 接收数据 3.2.2 发送数据 四.MATLAB部分实现 4.1 GUI界面 4. ...

  8. STM32 RTC时钟掉电日期不更新 STM32 HAL库RTC时钟配置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32 RTC时钟掉电日期不更新 & STM32 HAL库RTC时钟配置 一.STM32CubeMX RTC配置 二.RT ...

  9. 使用51单片机和DS1302时钟芯片做一个简易的电子时钟

    简易的电子时钟实验 一.前言 二.DS1302模块介绍 三.驱动DS1302的代码 3.1 初始化DS1302时钟芯片 3.2 读取DS1302时钟芯片的时间 3.3 设置DS1302时钟芯片的时间 ...

最新文章

  1. 用c语言设计一个菜单界面_用这7个方法设计菜单,让餐厅的利润暴涨
  2. 【力扣网练习题】合并两个有序链表
  3. SQL 查询总是先执行SELECT语句吗?你们都错了!
  4. php中address,address.php
  5. 推荐几款好用到爆炸的SSH客户端工具
  6. win10 ping不通解决方案
  7. Python笔记——Django路由系统
  8. STM32M CUBE实现printf打印调试信息以及实现单字节接收
  9. 缓存穿透、缓存雪崩、redis并发
  10. 关于 ASP.NET 内存缓存你需要知道的 10 点
  11. 【DP】晨练计划(ybtoj)
  12. 160 - 44 defiler.1.exe
  13. php的range函数
  14. java面向方面编程_面向方面编程的介绍----基本概念
  15. gitignore不起作用
  16. Android多种样式的进度条
  17. 修改注册表设置桌面和收藏夹路径
  18. redis双写一致性问题
  19. java.lang.UnsatisfiedLinkError: Library not loaded: @rpath/libo.dylib Reason: image not found
  20. 戴尔创业节丨高效编程利器Vostro低至2099!双11提前享!

热门文章

  1. JZOJ2020年8月10日提高组T3 玩诈欺的小杉
  2. vue简易计算器代码
  3. Linux——打造vim IDE~.vimrc配置
  4. FlashBuilder4的小技巧 代码自动完成 和 代码自动提示
  5. 【Python数据挖掘】数据挖掘简介及Jupyter notebook操作介绍(图文解释 超详细)
  6. toFixed() 踩坑----四舍六入 银行家算法
  7. 效率神器,阿里P8大牛手写Spring cloud Alibaba(实战派)终级手册
  8. linux Can‘t find default configuration “arch/x86/configs/xxx_defconfig“
  9. IT服务管理解决方案
  10. 优酷java_youtubie 仿优酷的视频网站,采用JAVA开发,支持Oracle数据库。主要功能包含注册登录, 上传 Jsp/Servlet 238万源代码下载- www.pudn.com...