资源简介
只要定义SCL,SDA两个端口,可以从指定地址读写少于256个字节的内容,长期应用验证,方便使用。
代码片段和文件信息
#include “config.h“
#ifdef C51
#define I2CWAIT _nop_();_nop_();_nop_();_nop_();_nop_()
void Start_I2c()
{
SDA=1;_nop_();
SCL=1;I2CWAIT;
SDA=0;I2CWAIT;
SCL=0;
}
bit Stop_I2c()
{
SDA=0;I2CWAIT;
SCL=1;I2CWAIT;
SDA=1;_nop_();
return SDA;
}
bit SendByte(unsigned char c)
{
unsigned char i = 9;
bit rr;
do
{
SCL = 0;
SDA = (bit)(c & 0x80);
c = (c << 1) + 1;
I2CWAIT;
SCL = 1;
I2CWAIT;
} while(--i);
rr = SDA;
SCL = 0;
return rr;
}
unsigned char RcvByte(bit ack)
{
unsigned char ci = 8;
SDA = 1;
do
{
I2CWAIT;
SCL = 1;
I2CWAIT;
c <<= 1;
if (SDA) c++;
SCL = 0;
} while(--i);
SDA = ack;
I2CWAIT;
SCL = 1;
I2CWAIT;
SCL = 0;
I2CWAIT;
return c;
}
bit SetAddr(unsigned char slaunsigned char subabit rw)
{
sla &= 0x07;
sla <<= 1;
if (rw)
sla |= 0xa1;
else
sla |= 0xa0;
Start_I2c();
if (SendByte(sla)) return
- 上一篇:2020全国大学生数学建模竞赛评阅要点:A题
- 下一篇:电子密码锁设计 数字逻辑
相关资源
- STM32模拟I2C驱动PN532
- DW_apb_i2c 驱动
- 51单片机作为i2c从设备加密芯片+红外
- i2c测试程序
- 树莓派用I2C读取mpu9250代码
- HDC1080 模拟I2C驱动
- LiquidCrystal_I2C
- SN8F5708_Sample_Code_V0.3.rar
- 28335 i2c 使用及注意
- DSP28335的I2C例程
- 51_I2C模拟通信
- MSP430单片机I2C应用笔记
- arduino的i2c库 完整版
- f407_mpu6050.rar
- STM32F AT24c02软件驱动程序
- I2C总线的verilog代码
- I2C总线proteus测试
- 基于STM32的 ADXL345三轴测量角度 软件
- linux下使用IIC总线读写EEPROM
- arduino_LiquidCrystal_I2C库及proteus仿真LC
- 最完美的STM32读写I2C EEPROM驱动
- stm32 软件I2C 实验
- 读写I2C FLASH的Verilog程序
- I2C 控制器的 Verilog源程序
- ads1115驱动,msp430f149单片机
- 群星系列流明单片机的I2C写法
- I2C总线规范与I2C器件C51读写程序
- stm32 完整IIC通讯代码,三轴加速度计
- STM32F4读写SD2405实时时钟程序
- Qt_USB_I2C_MPU6050.rar
评论
共有 条评论