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

📄 i2c_s.c

📁 8051单片机C语言设计完全手册
💻 C
字号:
#include<REG66x.H>
/* 主器件函数库 */

/*******************************************
            设置总线函数
用于设置I2C控制寄存器,包括总线时钟,速率及从地址.不接受广播地址
********************************************/
void setbus(unsigned char addr)
{
	S1ADR=addr&0xfe;    // 设置从地址,屏蔽高7位即广播地址响应位复位
	S1CON=0XC5;    // 启动硬件I2C
}

/*******************************************
            接收数据
读取总线传来的字节数据并发送应答位.
正常接收返回1,此时读入的数据写入变量c.
接收到总线结束信号或重新启动总线信号时返回0,此时不破坏变量c的数据
********************************************/
bit recvbyte(unsigned char *c)
{
	S1CON = 0XC5;    // 清除标志位
	while(SI == 0);    // 放开总线等待接收
	if(S1STA == 0xa0)
	{
		S1CON = 0XC5;    // 先放开总线再返回0
		return 0;
	}
	*c = S1DAT;    // 取数据
	return 1;
}

/*******************************************
            发送数据
向总线发送数据c,当接收到非应答位时返回0,否则返回1
********************************************/
bit sendbyte(unsigned char c)
{
	if(S1STA == 0xc0)
	{
		S1CON = 0XC5;
		return 0;
	}
	S1DAT = c;    // 发送数据
	S1CON = 0XC5;    // 释放总线
	while(SI == 0);    // 等待字节数据发送完成
	return 1;
}

⌨️ 快捷键说明

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