⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtcmain.c

📁 这是msp430f1611驱动DS1302的完整程序
💻 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 + -