微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S35390驱动程序

S35390驱动程序

时间:11-13 来源:互联网 点击:
/*******************************************************************/

/* 时钟芯片驱动程序 */
/*******************************************************************/
#include "msp430x41x.h"
#include "delay.h"
#include "iodefine.h"
#include "all_variable.h"
/*****************************************************************/
/* 内部函数声明 */
/*****************************************************************/
void S35390A_SDA_HIGH(void); //SDA脚输出高电平
void S35390A_SDA_LOW(void); //SDA脚输出低电平
void S35390A_SCL_HIGH(void); //SCK脚输出高电平
void S35390A_SCL_LOW(void); //SDA脚输出低电平
void S35390A_START(void); //启动S35390
void S35390A_STOP(void); //停止S35390
unsigned char S35390A_GETACK(void); //获得ACK信号
void S35390A_SETACK(void); //输出ACK信号
void S35390A_SETNCK(void); //输出NACK信号
unsigned char S35390A_RECEIVE_BYTE(void); //从S35390接收一个字节数据
void S35390A_SEND_BYTE(unsigned char senddata); //向S35390发送一个字节数据
extern void DELAYeightNOP(void);
extern void DELAYthreeNOP(void);
extern void SetS35390ATime(void);
extern void readS35390ATime(void);
unsigned char S35390A_WRITE(unsigned char opt,unsigned char count);//向S35390A写数据
unsigned char S35390A_READ(unsigned char opt,unsigned char count); //从S35390A读数据
unsigned char S35390A_SWAP_BYTE(unsigned char swdata); //字节首尾交换
unsigned char S35390A_CACULATE_WEEK(unsigned char year,unsigned char month,unsigned char date);//通过年月日计算星期
void S35390A_INIT(void);//S35390A初始化
/*********************************************************
Function: S35390A_SDA_HIGH(void)
Description: SDA脚输出高电平
Input: none
output: none
Return: none
**********************************************************/
void S35390A_SDA_HIGH(void)
{
S35390A_SDA_DIR|=S35390A_SDA; // set SDA as output pin
S35390A_SDA_OUT|=S35390A_SDA; //set SDA pin high
_NOP();
return;
}

/**********************************************************
Function: S35390A_SDA_low(void)
Description: SDA脚输出低电平
Input: none
output: none
Return: none
**********************************************************/
void S35390A_SDA_LOW(void)
{
S35390A_SDA_DIR|=S35390A_SDA; //set SDA as output pin
S35390A_SDA_OUT&=~S35390A_SDA; //set SDA pin low
_NOP();
return;
}

/**********************************************************
Function: S35390A_SCL_HIGH(void)
Description: SCK脚输出高电平
Input: none
output: none
Return: none
**********************************************************/
void S35390A_SCL_HIGH(void)
{
S35390A_SCL_DIR|=S35390A_SCL; // set SCK as output pin
S35390A_SCL_OUT|=S35390A_SCL; //set SCK pin high
_NOP();
return;
}

/**********************************************************
Function: S35390A_SCL_low(void)
Description: SDA脚输出低电平
Input: none
output: none
Return: none
**********************************************************/
void S35390A_SCL_LOW(void)
{
S35390A_SCL_DIR|=S35390A_SCL; //set SCK as output pin
S35390A_SCL_OUT&=~S35390A_SCL; //set SCK pin low
_NOP();
return;
}

/**********************************************************
Function: S35390A_RECEIVE_BYTE(void)
Description: 从S35390接收一个字节数据
Input: none
output: none
Return: none
**********************************************************/
unsigned char S35390A_RECEIVE_BYTE(void)
{
unsigned char S35390A_buf=0;
unsigned char w;
S35390A_SDA_DIR &= ~S35390A_SDA; //输入方式
//S35390A_SDA_OUT|=1Delay_Nus(10);
for(w=0; w<8; w++)
{
S35390A_SCL_HIGH();
if((S35390A_SDA_IN & S35390A_SDA))
{
S35390A_buf |= (1}

S35390A_SCL_LOW();
DELAYeightNOP();
}
return(S35390A_buf);
}

/**********************************************************
Function: S35390A_SEND_BYTE(void)
Description: 向S35390发送一个字节数据
Input: none
output: none
Return: none
**********************************************************/
void S35390A_SEND_BYTE(unsigned char senddata)
{
unsigned char w;
for(w=0;w<8;w++)
{
if(senddata&0x80)
{
S35390A_SDA_HIGH();
}
else
{
S35390A_SDA_LOW();
}

S35390A_SCL_HIGH();
DELAYthreeNOP();

senddata<=1;

S35390A_SCL_LOW();
DELAYeightNOP();
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top