⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.c

📁 采用CYGNAL F015单片机
💻 C
字号:
//#include <i2c.h>


// SMBus 字节写函数----------------------------------------------------- 
// 向给定存储器地址写一个字节 
// 
// out_byte = 待写数据 
// byte_address = 待写存储器地址2字节 
// chip_select = 待写EEPROM芯片的器件地址 
void SM_Send (char chip_select, unsigned int byte_address, char out_byte) 
{ 
while (SM_BUSY); // 等待SMBus空闲 

SM_BUSY = 1; // 占用SMBus设置为忙 
SMB0CN = 0x44; // SMBus允许应答周期发ACK 
BYTE_NUMBER = 2; // 2地址字节
RBYTE_NUMBER=2; 
STEP=0;
COMMAND = (chip_select | WRITE); // 片选 + WRITE 
LOW_ADD = (byte_address & 0x00FF); // 低8位地址 
WORD = out_byte; // 待写数据 
STA = 1; // 启动传输过程
while (SM_BUSY); // 等待SMBus空闲  
} 
// SMBus随机读函数----------------------------------------------------- 

// 从给定存储器地址读一个字节 
// 
// byte_address = 要读取的存储器地址 
// chip_select = 待读EEPROM的器件地址 
void SM_Receive (char chip_select, unsigned char byte_address,unsigned char byte_length) 
{ 
while (SM_BUSY); // 等待总线空闲 
SM_BUSY = 1; //占用SMBus设置为忙 
SMB0CN = 0x44; // 允许SMBus应答周期发ACK 
BYTE_NUMBER = 1; // 2地址字节 
COMMAND = (chip_select | READ); // 片选 + READ 
LOW_ADD = byte_address; // 低8位地址 
RECVLEN = byte_length;
STA = 1; // 启动传输过程 
//while (SM_BUSY); // 等待传输结束 
}

void delay(int time)
{
  int i;
  for(i=0;i<time;i++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -