📄 rtcmain.c
字号:
#include <msp430x14x.h>
#include "rtc.h"
void Init_Sys_Clk(void); //时钟初始化函数声明
unsigned char Setting_Time[6] = //时间格式
{ 0x08, //年份(当前08年)
0x06, //月份(当前05月)
0x14, //日期 (当前18号)
0x14, //小时(当前19点)
0x24, //分钟(当前09分)
0x10 //秒钟(当前21秒)
};
void main(void)
{
unsigned char timevalue[6]; //存储读取的时间值
unsigned char *readtimept; //时间读取指针
unsigned char *settimept; //时间设置指针
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
_DINT(); //关闭中断
readtimept = timevalue; //指针指向数组timevalue[6]
settimept = Setting_Time; //指针指向时间设置数组 Setting_Time[6]
Init_Sys_Clk(); //系统时钟初始化
Rtc_Reset(); //RTC初始化
_EINT(); //打开中断
Rtc_Set_Data(settimept); //按照Setting_Time的设置设置DS1302的时间
while(1)
{
Rtc_Get_Data(readtimept); //获取时间
Rtc_Delay(50000);
}
}
///////////////////////////////////////////////////
// 名称:Init_Sys_Clk
// 功能:系统时钟初始化
// 输入:null
// 输出:null
// 返回:null
///////////////////////////////////////////////////
void Init_Sys_Clk(void)
{
unsigned int i;
BCSCTL1 = 0X00; //将寄存器的内容清零
//BCSCTL1 += XT2OFF; //外部高速时钟关闭
//XT2震荡器开启
//LFTX1工作在低频模式
//ACLK的分频因子为1
do
{
IFG1 &= ~OFIFG; //清除OSCFault标志
for (i = 0xFF; i > 0; i--);
}
while ((IFG1 & OFIFG) == OFIFG); //如果OSCFault =1,等待晶振起振
BCSCTL2 = 0X00; //将寄存器的内容清零
BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1
//BCSCTL2 += SELM0; //MCLK的时钟源为时钟晶振
BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -