标题:
RX8080时钟芯片驱动程序
[打印本页]
作者:
水漫金山2017
时间:
2017-11-14 13:13
标题:
RX8080时钟芯片驱动程序
RX8010时钟驱动程序
0.png
(6.86 KB, 下载次数: 55)
下载附件
2017-11-14 20:31 上传
单片机源程序如下:
/*
****************************************************************************
FILE : RX8010.c
PURPOSE : the driver of RTC chip "RX-8010SJ"
AUTHOR : Gtw
LOG : 2014-11-28 , create it
****************************************************************************
*/
#define _RX8010_C_
#include ".\main\Header.h"
#if ( RTC_SEL==RTC_RX8010 ) || ( NVMEM_SEL==NVMEM_RX8010 )
#if ( RTC_SEL==RTC_RX8010 )
TIME_t Time;
#endif
#if ( NVMEM_SEL==NVMEM_RX8010 )
NVMEM_t NvMem;
#endif
// 延时
#define DLY_TYPE_CNT 1
#define DLY_TYPE_ASM 2
#define DLY_TYPE DLY_TYPE_ASM
#if ( DLY_TYPE == DLY_TYPE_ASM )
#define delay() { nop(); }
/*
static void delay(void){
asm("nop");
}
*/
#else
static void dly(uint08 cnt){
while( cnt-- );
}
#define delay() { dly(1); }
#endif
/*
**************************************************
函数名 :RX8010_START
目的 :对RX8010产生一个START信号
传递参数:无
返回 :IIC总线是否正常,正常返回true,异常返回false
注意,此子程序不支持多主机
**************************************************
*/
bool RX8010_START(void){
bool success = true;
IoDir(RX8010_SCL,GPIO_OUT);
IoWr(RX8010_SCL,GPIO_LO);
delay();
IoDir(RX8010_SDA,GPIO_IN);
delay();
if ( !IoRd(RX8010_SDA) ) success = false; // SDA对地线短路
IoDir(RX8010_SCL,GPIO_IN);
delay();
if ( !IoRd(RX8010_SCL) ) success = false; // SCL对地线短路
IoDir(RX8010_SDA,GPIO_OUT);
IoWr(RX8010_SDA,GPIO_LO);
delay();
IoDir(RX8010_SCL,GPIO_OUT);
IoWr(RX8010_SCL,GPIO_LO);
//delay();
return success;
}
/*
**************************************************
函数名 :RX8010_STOP
目的 :对RX8010产生一个STOP信号
传递参数:无
返回 :无
注意,此子程序不支持多主机
**************************************************
*/
void RX8010_STOP(void){
IoDir(RX8010_SCL,GPIO_OUT);
IoWr(RX8010_SCL,GPIO_LO);
delay();
IoDir(RX8010_SDA,GPIO_OUT);
IoWr(RX8010_SDA,GPIO_LO);
delay();
IoDir(RX8010_SCL,GPIO_IN);
delay();
IoDir(RX8010_SDA,GPIO_IN);
delay();
IoDir(RX8010_SCL,GPIO_OUT);
IoWr(RX8010_SCL,GPIO_LO);
//delay();
}
/*
**************************************************
函数名 :RX8010_SEND_BIT
目的 :向RX8010发送一个位
传递参数:bit,位的值
返回 :无
注意,如果以传输数据为目的,则调用此程序前应保证已经产生了START信号
**************************************************
*/
void RX8010_SEND_BIT(bool bit){
IoDir(RX8010_SCL,GPIO_OUT);
IoWr(RX8010_SCL,GPIO_LO);
delay();
if ( bit ){
IoDir(RX8010_SDA,GPIO_IN);
}else{
IoDir(RX8010_SDA,GPIO_OUT);
IoWr(RX8010_SDA,GPIO_LO);
}
delay();
IoDir(RX8010_SCL,GPIO_IN);
//delay(); // 函数最后的delay()在时钟较慢的情况下可省略
}
/*
**************************************************
函数名 :RX8010_GET_BIT
目的 :从RX8010读出一个位
传递参数:无
返回 :读取到的位
注意,调用此程序前应保证已经产生了START信号
**************************************************
*/
bool RX8010_GET_BIT(void){
IoDir(RX8010_SCL,GPIO_OUT);
IoWr(RX8010_SCL,GPIO_LO);
delay();
IoDir(RX8010_SDA,GPIO_IN);
delay();
IoDir(RX8010_SCL,GPIO_IN);
delay();
return IoRd(RX8010_SDA);
}
/*
**************************************************
函数名 :RX8010_SEND_BYTE
目的 :向RX8010发出一个字节
传递参数:字节的值
返回 :无
注意,调用此程序前应保证已经产生了START信号
msb first!
**************************************************
*/
void RX8010_SEND_BYTE(uint08 data){
uint08 tmp;
for(tmp=8;tmp>0;tmp--){
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
RX8010.zip
(4.56 KB, 下载次数: 13)
2017-11-14 13:12 上传
点击文件名下载附件
RX8010时钟驱动程序
下载积分: 黑币 -5
作者:
YYZZ052
时间:
2020-6-13 14:56
谢谢,我用下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1