//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 |
从零开始操作STM8寄存器(风驰iCreate奉献)
【中文资料】初学STM8库函数的中文帮助软件
绝对经典的中文STM8学习手册,淘宝上学习板资料,友情大放送!
【原创教程】风驰iCreate独家开源STM8 27个例程和10多万字的pdf教程
STM8的LCD1602 4线驱动,为什么不工作
【精华资料】由零开始开发STM8
STM8S 的触摸库是如何在主程序中查询键的呢、
【精华资料】STM8的C语言编程1-14讲完整版
【精品教程】STM8系列单片机入门教程系列
STM8 第一次进中断不准【悬赏问答】
RE:STM8L152 IO口模拟IIC程序
RE:STM8L152 IO口模拟IIC程序
RE:STM8L152 IO口模拟IIC程序
还有如何实现一次发送多个字节数据?