资源简介
通过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
- 上一篇:红外测距程序可以试下
- 下一篇:获取视频地址源码
相关资源
- IAR for MSP430 v7.10.1 注册机
- 基于MSP430G2553的蓝牙控制小车
- 利用DS1302和msp430进行闹钟和万年历的
- msp430F149操作红外接收模块源码
- [免费]msp430f149控制PS2键盘并用1602显示
- MSP430f149读sd FAT txt
- 用8位spi实现16位spi
- 基于MSP430单片机的实时多任务操作系
- MSP430系列单片机例程(msp430f235)
- MSP430控制AD9850产生频率可调的方波及
- msp430f449程序
- 基于MSP430的数控直流电压源
- MSP430F5438A Timer_B 操作实验
- MSP430F5438 UCS 时钟操作实验
- MSP430F5438A Timer_A 操作实验
- MSP430F5438 看门狗实验
- IAR EW430连接仿真器在线仿真
- 初识畅学系列MSP430F149单片机开发板
- 畅学多功能实验箱 MSP430F5438 RTC 操作实
- MSP430F5438A RAM操作实验
- msp430f5438a技术资料
- MSP430 JTAGUSB的和并口的与目标板连接的
- MSP430教程:MSP430单片机ADC12模块
- WIA-PA网络技术在井下人员定位系统中
- 16位MSP430单片机的开关稳压电源设计
- 基于mps430f149的12864液晶显示模块编程
- MSP430F5529移植modbus
- MSP430详细教程
- MSP430信号发生器.rar
- MSP430F5529 例程源码
评论
共有 条评论