×
单片机 > 单片机程序设计 > 详情

ARM7单片机(学习ing)—(五)、实时时钟(RTC)—02

发布时间:2020-07-08 发布时间:
|

五、实时时钟(RTC)

五—(02)、1s定时控制(通过查询法实现~~)

注意:后面的程序有操作步骤~~

~~





然后就是程序了:

MDK5_1.c

//------------------------------------------------------------------------------
//1s定时控制(查询方式~~)
//RTC我也不想有太多的介绍~~不管是查询方式,还是中断方式~~其实都是一样的~~
//现在我也是只想结束ARM7的学习~~
//注意:
//预分频寄存器的计数如下:
//PREINT=int(Fpclk/32768)-1     ;预分频整书寄存器
//PREFPAC=Fpclk-((PREINT+1)*32768)   ;预分频小数寄存器
//RTC的基本操作方式:       
//1)设置RTC预分频器(PREINT、PREFRAC);
//2)初始化RTC时钟源,如:YEAR、MONTH、DOM等~~
//3)报警终端设置,如CIIR、AMR等~~
//4)启动RTC,既CCR等的CLKEN位置位
//5)读取完整时间寄存器值或者等待中断
//------------------------------------------------------------------------------
//利用RTC的增量功能进行1s的定时,当定时时间到,取反LED控制~~
//------------------------------------------------------------------------------
#include"lpc210x.h"
#include"bit.h"
#include"macroandconst.h"
//------------------------------------------------------------------------------
#define RTCCIF 0      //中断位置寄存器ILR[0];为1时计数器增量中断模块产生中断。向该位写入1来清除计数器增量中断
#define LED 10       //P0.10口为LED控制口,高电平点亮
#define Fpclk 15000000L     //定义Fpclk的值,用于设置串口波特率
//------------------------------------------------------------------------------
//rtc_init()
//RTC初始化函数
void rtc_init()
{
 PREINT=Fpclk/32768-1;    //设置预分频器
 PREFRAC=Fpclk-(PREINT+1)*32768;
 YEAR=2012;       //初始化年
 MONTH=2;       //初始化月
 DOM=3;        //初始化日
 CIIR=0x01;       //设置秒针的增量产生一次中断
 CCR=0x01;       //启动RTC 
}
//------------------------------------------------------------------------------
//main
int main()
{
 PINSEL0=0x00000000;     //引脚连接设置
 PINSEL1=0x00000000; 
 SET_BIT(IODIR,LED);     //设置LED口为输出

 rtc_init();
 while(1)
 {
  SET_BIT(IOSET,LED);    //点亮LED
  while(GET_BIT(ILR,RTCCIF)==0); //等待RTC增量中断标志
  SET_BIT(ILR,RTCCIF);   //清除中断标志
  SET_BIT(IOCLR,LED);    //熄灭LED
  while(GET_BIT(ILR,RTCCIF)==0); //等待RTC增量中断标志
  SET_BIT(ILR,RTCCIF);   //清除中断标志
 }
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址