• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签: DS1337  MSP430  

资源简介

通过IO模拟I2C总线,控制DS1337芯片,包括以下功能: (1)DS1337_RTC_Init,DS1337初始化,初始化I2C的IO (2)Print_RTC_Time,读取RTC时间信息,通过很小资源的S_Printf函数打印到串口。“2013年11月15日, 23:29:41, 星期五”为实际打印效果拷贝 (3)DS1337_Write,用于修改DS1337的寄存器 (4)DS1337_RTC_Time[7]数组存储最新的RTC时间,格式在源程序中有详细注释,很方便

资源截图

代码片段和文件信息


#include        “Main_Proc.h“

/*------------------------------------------------*/
// 时间数组: 秒,分,时,星期,日,月,年

unsigned char    DS1337_RTC_Time[7];                    //时间结构体
//               [0]-秒十六进制 [6:4]-十位 [3:0]-个位
//               [1]-分十六进制 [6:4]-十位 [3:0]-个位
//               [2]-时十六进制 [6]-12/24小时 [5:4]-十位 [3:0]-个位
//               [3]-星期 [2:0]-星期,范围1~7
//               [4]-日期十六进制 [5:4]-十位 [3:0]-个位
//               [5]-月份十六进制 [4]-十位 [3:0]-个位
//               [6]-年份十六进制 [7:4]-十位 [3:0]-个位,从2000年开始,即,实际年份为2000+[6]的值

/**************************************************/
// 函数功能: I2C延时,实际延时由外部的EPLD实现
//            I2C总线速度小于CPU的主频,需要延时操作
//  输入参数: 无
//  输出参数: 无
/*------------------------------------------------*/

void    DS1337_I2C_Delay( void )
{
    unsigned char i;

    i=10;
    while(i--)
        _NOP();
}

/**************************************************/
// 函数功能: DS1337 I2C 时序启动子函数
//  输入参数: 无
//  输出参数: 无
/*------------------------------------------------*/

void   DS1337_I2C_Start( void )
{
    PIN_DS1337_SDA_0;                    //启动信号
    DS1337_I2C_Delay();
    PIN_DS1337_SCK_0;
    DS1337_I2C_Delay();
}

/**************************************************/
// 函数功能: DS1337 I2C 时序结束子函数
//  输入参数: 无
//  输出参数: 无
/*------------------------------------------------*/

void   DS1337_I2C_Stop( void )
{
    PIN_DS1337_SCK_1;
    DS1337_I2C_Delay();
    PIN_DS1337_SDA_1;
    DS1337_I2C_Delay();
}

/**************************************************/
// 函数功能: DS1337 I2C ACK结束子函数
//  输入参数: Master=1,表示主设备产生ACK信号,将数据拉低
//  输出参数: 无
/*------------------------------------------------*/

void   DS1337_I2C_ACK( void )
{
    PIN_DS1337_SDA_0;
    DS1337_I2C_Delay();
    PIN_DS1337_SCK_1;
    DS1337_I2C_Delay();
    PIN_DS1337_SCK_0;
    DS1337_I2C_Delay();
}

/**************************************************/
// 函数功能: DS1337 I2C 读取1个字节子函数
//  输入参数: 无
//  输出参数: 读取字节的结果数据
/*------------------------------------------------*/

unsigned char   DS1337_I2C_Read( void )
{
    unsigned char ReadByte i;

    PIN_DS1337_SDA_1;                       //释放总线,方便读取
    PIN_DS1337_SDA_IN_Init;
    DS1337_I2C_Delay();

    for ( i=0;i<8;i++ )
    {
        ReadByte <<= 1;
        if ( PIN_DS1337_SDA_IN )
            ReadByte += 1;

        PIN_DS1337_SCK_1;
        DS1337_I2C_Delay();
        PIN_DS1337_SCK_0;
        DS1337_I2C_Delay();
    }
    PIN_DS1337_SDA_OUT_Init;
    return( ReadByte );
}

/**************************************************/
// 函数功能: DS1337 I2C 发送1个字节子函数
//  输入参数: 待发送的字节数据
//  输出参数: 无
/*------------------------------------------------*/

void   DS1337_I2C_Send( unsigned char SendData )
{
    unsigned char SendByte i;

    SendByte = SendData;

    for ( i=0;i<8;i++ )
    {
        if ( SendByte & 0x80 )
            PIN_DS1337_SDA_1;
        else
            PIN_DS1337_SDA_0;

        SendByte <<= 1;

        DS1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1848  2013-11-10 22:52  DS1337_RTC.h
     文件        6233  2013-11-12 22:49  DS1337_RTC.c

评论

共有 条评论