在线时间0 小时
UID148334
ST金币0
蝴蝶豆0
注册时间2009-9-2
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
//IIC.h
#ifndef IIC_H
#define IIC_H
/********************************************************/
/* Include File */
/********************************************************/
#include "stm8l15x.h"
/********************************************************/
/* Macro Define */
/********************************************************/
/********************************************************/
/* Extern reference variable */
/********************************************************/
/********************************************************/
/* Extern reference Function Prototype */
/********************************************************/
extern void I2Cstart(void);
extern void I2CStop(void);
extern unsigned char I2cWriteByte(unsigned char fx_data);
extern unsigned char I2cReadByte(unsigned char end_k);
extern void IICDelay(void);
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////copy follow text and save as IIC.c file////////////
//IIC.c
/********************************************************/
/* Include File */
/********************************************************/
#include "IIC.h"
/********************************************************/
/* Macro Define */
/********************************************************/
/********************************************************/
/* Prototype of function */
/********************************************************/
void IICDelay(void);
/********************************************************/
/* RAM Define */
/********************************************************/
/********************************************************/
/* Function Define */
/********************************************************/
/*******************************************************/
void I2Cstart(void)
{
GPIO_Init(GPIOG,GPIO_Pin_5,GPIO_Mode_Out_PP_High_Slow);//set SCL pin as output high
GPIO_Init(GPIOG,GPIO_Pin_4,GPIO_Mode_Out_PP_High_Slow);//set SDA pin as output high
IICDelay();
GPIO_Init(GPIOG,GPIO_Pin_4,GPIO_Mode_Out_PP_Low_Slow);//set SDA pin as output low
}
//-------------------------------------------------------------------------
unsigned char I2cWriteByte(unsigned char ByteData)
{
unsigned char BitCount;
unsigned char Data;
Data=ByteData;
GPIO_Init(GPIOG,GPIO_Pin_4,GPIO_Mode_Out_PP_Low_Slow);//set SDA pin as output low
for (BitCount = 0; BitCount < 8; BitCount++)
{
GPIO_Init(GPIOG,GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Slow);//set SCL pin as output low
IICDelay();
if (0x80 &Data)
{
GPIO_Init(GPIOG,GPIO_Pin_4,GPIO_Mode_Out_PP_High_Slow);//set SDA pin as output high
}
else
{
GPIO_Init(GPIOG,GPIO_Pin_4,GPIO_Mode_Out_PP_Low_Slow);//set SDA pin as output low
}
IICDelay();
GPIO_Init(GPIOG,GPIO_Pin_5,GPIO_Mode_Out_PP_High_Slow);//set SCL pin as output high
Data |
|