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

📄 24c256.c

📁 C8051F020读写24C256的keil c51程序
💻 C
字号:
/* ------------------------------------------------- */
/* ADuC812 I2C MASTER.C                              */
/* ------------------------------------------------- */

#include <aduc812.h>
#include <intrins.h>

extern delay10ms();

start()
  {
  MDE = 1;
  MCO = 1;
  MDO = 1;
  MDO = 0;
  MCO = 0;
  }

stop()
  {
  MDE = 1;
  MDO = 0;
  MCO = 1;
  MDO = 1;
  }

sendbyte(uchar c)
  {
  uchar i;
  bit error;
  ACC = c;
  MDE = 1;
  for(i = 8; i!=0; i--)
    {
    ACC<<=1;
    MDO = CY;
    MCO = 1;
    MCO = 0;
    }
  MDE = 0;
  MCO = 1;
  error = MDI;
  MCO = 0;
  }

rcvbyte(uchar *p)
  {
  uchar i,c;

  c = 0;
  MDE = 0;
  MCO = 0;
  for(i = 0; i < 8; i++)
    {
    c <<= 1;
    MCO = 1;
    MCO = 0;
    if(MDI) c++;
    }
  *p = c;
  }

ack(bit a)
  {
  MDE = 1;
  MDO = a;
  MCO = 1;
  MCO = 0;
  }

specify_addr( bit rw,uint addr)
  {
  uchar device,addr_hi,addr_lo;

  device = 0xa0;
  if(addr>0x7fff) { device+=2; addr -= 0x8000; }
  addr_hi = addr >> 8;
  addr_lo = addr &  0x00ff;

  sendbyte(device);
  sendbyte(addr_hi);
  sendbyte(addr_lo);
  if(rw)
    {
    start();
    sendbyte(device+1);
    }
  }

wr24cxx(uint addr, uchar *p, uint n)
  {
  uchar i;
  uchar count1, count2;
  uint  pager;

  pager = 1;
  count1 = 64 - (addr & 0x003f);
  if( n > count1 )
    {
    pager++;
    n -= count1;
    }
  while( n > 64 )
    {
    pager++;
    n -= 64;
    }
  count2 = n;
  if( pager == 1 ) count1 = n;

  while(pager != 0)
    {
    start();
    specify_addr(0,addr);
    for(i = 0; i < count1; i++)
      {
      sendbyte(*p);
      p++;
      }
    stop();
    addr += count1;
    if(--pager != 1) count1 = 64;
    else count1 = count2;
    delay10ms();
    }
  }

rd24cxx(uint addr, uchar *p, uint n)
  {
  uint i;

  start();
  specify_addr(1, addr);

  for(i = 0; i < n-1; i++)
    {
    rcvbyte(p);
    ack(0);
    p++;
    }
  rcvbyte(p);
  ack(1);
  stop();
  }

⌨️ 快捷键说明

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