找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4321|回复: 2
收起左侧

IIC存储芯片的访问 24c02 24c16

[复制链接]
ID:51024 发表于 2014-8-10 12:30 | 显示全部楼层 |阅读模式
                       
#include  
__CONFIG(0x0012);
#define scl RA3
#define sda RA4
void delay_nop()
{
   NOP();NOP();NOP();NOP();NOP();
}
void start()
{
  TRISA4=0;
  sda=1;
  delay_nop();
  scl=1;
  delay_nop();
  sda=0;
  delay_nop();
}
void stop()
{
  TRISA4=0;
  sda=0;
  delay_nop();
  scl=1;
  delay_nop();
  sda=1;
  delay_nop();
}
void respons()
{
  unsigned int i;
  TRISA4=1;
  scl=1;
  delay_nop();
  while((sda==1)&&(i<400)) i++;
  scl=0;
  delay_nop();
  
}
void init_24c16()
{
  ADCON1=0X07;
  TRISA3=0;

  TRISA4=0;
  sda=1;
  delay_nop();
  scl=1;
  delay_nop();


}
void write_byte(unsigned char date)
{
  unsigned char i,temp,temp1;
  temp=date;
  TRISA4=0;
  for(i=0;i<8;i++)
  {
scl=0;
delay_nop();
temp1=temp&0x80;
if(temp1!=0) sda=1;
else sda=0;
temp=temp<<1;
delay_nop();
scl=1;
delay_nop();  
  }
  scl=0;
  delay_nop();
  sda=1;
  delay_nop();
  
}
unsigned char read_byte()
{
  unsigned char i,k;
  TRISA4=0;
  scl=0;
  delay_nop();
  sda=1;
  delay_nop();
  for(i=0;i<8;i++)
  {
TRISA4=1;
scl=1;
delay_nop();
k=(k<<1)|sda;
scl=0;
delay_nop();  
  }
  return k;
}
void write_add(unsigned int address,unsigned chardate)
{
  unsigned char MSbyte,LSbyte;
  MSbyte=address/256;
  LSbyte=address%6;
  start();
write_byte(0xa0+(MSbyte<<1));
  respons();
  write_byte(LSbyte);
  respons();
  write_byte(date);
  respons();
  stop();

}
unsigned char read_add(unsigned int address)
{
  unsigned char date;
  unsigned char MSbyte,LSbyte;
  MSbyte=address/256;
  LSbyte=address%6;
  start();
  write_byte(0xa0+(MSbyte<<1));
  respons();
  write_byte(LSbyte);
  respons();
  start();
  write_byte(0xa1+(MSbyte<<1));
  respons();
  date=read_byte();
  stop();
  return date;
   
}


回复

使用道具 举报

ID:65370 发表于 2014-8-23 19:41 | 显示全部楼层
一看就是很专业的样子,新手只能慢慢努力了
回复

使用道具 举报

ID:66032 发表于 2014-9-18 17:06 | 显示全部楼层
有硬件I2C不用,为什么要用软件I2C呢?硬件I2C执行效率更高, 代码更优化。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表