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

📄 24c02.h

📁 温度监控完整代码
💻 H
字号:
#ifndef _24c02_H
#define _24c02_H
#include "reg52.h"
#include "intrins.h"

#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();}

sbit SDA = P2^1;
sbit SCL = P2^0;
void iic_start(void)
{
  SDA = 1;
  _nop_();
  SCL = 1;
  somenop;
  SDA = 0;
  somenop;
  SCL = 0;
}

void iic_stop(void)
{
  SDA = 0;
  _nop_();
  SCL = 1;
  somenop;
  SDA = 1; 
}

void iic_ack(bit ackbit)
{
  if(ackbit) 
	SDA = 0;
  else 
	SDA = 1; 
  somenop;
  SCL = 1;
  somenop;
  SCL = 0;
  SDA = 1; 
  somenop;
}

bit iic_waitack(void)
{
  SDA = 1;
  somenop;
  SCL = 1;
  somenop;
  if(SDA)    
  {   
	SCL = 0;
	iic_stop();
	return 0;
  }
  else  
  { 
	SCL = 0;
	return 1;
  }
}

void iic_sendbyte(unsigned char byt)
{
  unsigned char i;
  for(i=0;i<8;i++)
  {   
  	if(byt&0x80) 
      SDA = 1;
	else 
	  SDA = 0;
	somenop;
	SCL = 1;
	byt <<= 1;
	somenop;
    SCL = 0;
  }
}

unsigned char iic_recbyte(void)
{
  unsigned char da;
  unsigned char i;
  for(i=0;i<8;i++)
  {   
	SCL = 1;
	somenop;
	da <<= 1;
	if(SDA) 
	  da |= 0x01;
	SCL = 0;
	somenop;
  }
  return da;
}

	void delay_50us(unsigned int t)   
{
unsigned char j;  
for(;t>0;t--)   
   for(j=19;j>0;j--) 
    ;
}

bit ISendStr(unsigned char add1,unsigned char add2,unsigned char *s,unsigned char no)
{
	unsigned char i;
	
		iic_start();
		iic_sendbyte(add1);
		if(iic_waitack()==0)
		return 0;
		iic_sendbyte(add2);
		if(iic_waitack()==0)
		return 0;
	   for(i=0;i<no;i++)
	{
		iic_sendbyte(*s);
		if(iic_waitack()==0)
		return 0;
		
		delay_50us(10);
		s++;
		
	}
	iic_stop();
	return 1;
}
bit IRcvStr(unsigned char add1,unsigned char add2,unsigned char *s,unsigned char no)
{
	unsigned char i;
	iic_start();
	iic_sendbyte(add1);
	if(iic_waitack()==0)
	return 0;
	iic_sendbyte(add2);
	if(iic_waitack()==0)
	return 0;
	iic_start();
	iic_sendbyte(add1+1);
	if(iic_waitack()==0)
	return 0;
	for(i=0;i<no-1;i++)
	{
		*s=iic_recbyte();
		iic_ack(1);
		s++;
		delay_50us(10);
	}
	*s=iic_recbyte();
	iic_ack(0);
	iic_stop();
	return(1);
}
unsigned char read(unsigned char add)
{
	unsigned char temp;
	 iic_start();
	iic_sendbyte(0xae);
	iic_waitack();
	iic_sendbyte(add);
iic_waitack();
	iic_start();
	iic_sendbyte(0xaf);
iic_waitack();
	temp=iic_recbyte();
	iic_ack(0);
	iic_stop();
	return temp;
}
void write(unsigned char add,unsigned char dat)
{

	 iic_start();
	iic_sendbyte(0xae);
	iic_waitack();
	iic_sendbyte(add);
	iic_waitack();
	iic_sendbyte(dat);
	iic_waitack();
	iic_stop();
}

void wrbyte_24c02(unsigned char add,unsigned char dat)
{

  iic_start();
  iic_sendbyte(0xae);
  iic_waitack();
  iic_sendbyte(add);
  iic_waitack();
  iic_sendbyte(dat);
  iic_waitack();
  iic_stop();
  delay_50us(100);
}


#endif

⌨️ 快捷键说明

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