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

📄 twi.c

📁 ATMEGA128的PCF8536驱动程序
💻 C
字号:
/************************************************
文件:TWI.c
用途:TWI操作函数
注意:
创建:2008.1.26
修改:2008.1.26
Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
************************************************/
#include "..\config.h"
/*************************************************************************
** 函数名称: twi_init(void)
** 功能描述: i2c通信初始化
** 输 入: 
** 输出	 : 
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
**************************************************************************/
void twi_init(void)
{
 TWCR= 0x00; //disable twi
 TWBR= (1<<6) | (1<<5) | (1<<2); //set bit rate
 TWSR= 0x00; //set prescale
 TWAR= 0x00; //set slave address
 TWCR= (1<<TWEN); //enable twi
}
/*************************************************************************
** 函数名称: i2cstart(void)
** 功能描述: i2c通信开始
** 输 入: 
** 输出	 : 
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
**************************************************************************/
void i2cstart(void)
{ 
	TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); 
   	while (!(TWCR & (1<<TWINT)));
}
/*************************************************************************
** 函数名称: unsigned char i2cwt(unsigned char data)
** 功能描述: i2c写数据,返回TWI状态
** 输 入: 
** 输  出: TWI状态
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
**************************************************************************/
unsigned char i2cwt(unsigned char data)
{ 
	TWDR = data;
   	TWCR = (1<<TWINT) | (1<<TWEN);
   	while (!(TWCR & (1<<TWINT)));
   	_NOP();
   	return(TWSR&0b11111000);
}
/*************************************************************************
** 函数名称: unsigned char i2crd(void)
** 功能描述: i2c读数据
** 输 入: 
** 输出	 : 读取的数据
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
**************************************************************************/
unsigned char i2crd(void)
{
   	TWCR= (1<<TWINT) | (1<<TWEA) | (1<<TWEN);
   	while (!(TWCR & (1<<TWINT)));
   	return(TWDR);
}
/*************************************************************************
** 函数名称: i2cstop(void)
** 功能描述: i2c停止
** 输 入: 
** 输出	 : 
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
**************************************************************************/
void i2cstop(void)
{ 
   TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
}

⌨️ 快捷键说明

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