首页 > 其他 > 详细

IIC通信

时间:2021-03-29 14:01:35      阅读:21      评论:0      收藏:0      [点我收藏+]
#include "reg52.h"

sbit SDA = P2^0;
sbit SCL = P2^1;

void IIC_Start(void);
void IIC_Stop(void);
void IIC_SendOneByte(unsigned char);

void IIC_delayus(unsigned int num)
{
	while(num--);
}

void main()
{
	IIC_Start();
	IIC_SendOneByte(0x78);
	IIC_SendOneByte(0xff);
	IIC_Stop();
	
	IIC_Start();
	IIC_SendOneByte(0x89);
	IIC_SendOneByte(0xee);
	IIC_Stop();
	
	while(1);
}

void IIC_Start(void)
{
	SDA = 1;
	SCL = 1;
	IIC_delayus(2);
	SDA = 0;
	SCL = 0; // 拉下来
}

void IIC_Stop(void)
{
	SDA = 0;
	SCL = 1;
	IIC_delayus(2);
	SDA = 1;
	SCL = 1;
}

void IIC_SendOneByte(unsigned char dat)
{
	unsigned char i;
	for(i = 0; i < 8; i++)
	{
		if(dat & 0x80)
			SDA = 1;
		else
			SDA = 0;
		SCL = 1;
		IIC_delayus(2);
		SCL = 0;
		dat = dat << 1;
	}
	SDA = 0; // 有需要的话这里也许要拉成1
	SCL = 1;
	IIC_delayus(1);
	SCL = 0;
}

技术分享图片

IIC通信

原文:https://www.cnblogs.com/njzymxk/p/14591855.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!