打印
[51单片机]

AT24C02

[复制链接]
1311|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
求源程序!   功能:将A数组中的n个字节写入AT24C02,再从AT24C02里读回数据到B数组

下面的程序是错的!! 怎么改!!

#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^0;
sbit scl=P2^1;
void delay(uint z)
{
  uint i,j;
  for(i=z;i>0;i--)
     for(j=0;j<110;j++);
}
void delay_10us(uchar n)
{
   do
   {
   _nop_();_nop_();
   _nop_();_nop_();
   _nop_();
   }
   while(--n);
}
void start()
{  sda=1;  
    scl=1;   
    sda=0;  
        scl=0;
}
void stop()
{   
  scl=0;
  sda=0;
  scl=1;
  sda=1;
}  
void ack()
{
sda=0;
scl=1;
scl=0;
sda=1;
}  
void noack()
{   
   sda=1;  
   scl=1;   
   scl=0;  
}
bit test_ack()
{
bit test;
sda=1;
scl=1;
test=sda;
scl=0;
return(test);
}
uchar wr_byte2402(uchar dat)
{  
  uchar i;
  for(i=8;i>0;i--)
    {
        sda=dat&0x80;
        scl=1;
        scl=0;
        dat<<=1;
        }
}   
uchar rd_byte2402()
{  
  uchar i,dat=0;  
  for(i=8;i>0;i--)
  {
   scl=1;
   dat<<=1;
   if(sda)
   dat|=0x01;
   scl=0;
  }
         return(dat);
}   
uchar wr_2402(uchar *ptr,uchar addr,uchar n)
{
  uchar i;
  start();  
  wr_byte2402(0xa0|0);  
  test_ack();   
  wr_byte2402(addr);  
  test_ack();
  for(i=0;i<n;i++)
  {  
  wr_byte2402(*ptr);
  test_ack();
  ptr++;
  }   
  stop();
  delay(10);
}  
uchar rd_2402(uchar *ptr,uchar addr,uchar n)
{           
  start();
  wr_byte2402(0xa0|0);
  test_ack();
  wr_byte2402(addr);  
  test_ack();   
  start();
  wr_byte2402(0xa0|1);
  test_ack();
  if(n==1)
  {
   *ptr=rd_byte2402();
   noack();
   stop();
   return;
  }       
  while(n>1)
  {
   *ptr=rd_byte2402();
   ack();
   ptr++;
   n--;
  }
  *ptr=rd_byte2402();
  noack();
  stop();
}
void main(void)
{
uint i;
uchar A[6]={1,2,3,4,5,6};
uchar B[6]={0,0,0,0,0,0};
while(1)
{
for(i=0;i<6;i--)
wr_2402(A,i,6);
for(i=0;i<6;i--)
{
rd_2402(B,i,6);
}
}
}

相关帖子

沙发
xyz549040622| | 2014-3-24 07:42 | 只看该作者
一头雾水的程序,楼主是刚来的,我建议楼主抓波形,初步估计,在时序正常的情况下,是延时的问题,或者参考别人的程序,还有参考楼主的硬件平台

使用特权

评论回复
板凳
天龙八部乔峰|  楼主 | 2014-4-8 15:44 | 只看该作者
:(

使用特权

评论回复
地板
天龙八部乔峰|  楼主 | 2014-4-8 15:45 | 只看该作者
:(

使用特权

评论回复
5
ningling_21| | 2014-4-8 15:58 | 只看该作者
建议楼主不要拿着错的程序改,要拿着别人调好的程序去改...

使用特权

评论回复
6
fandong90| | 2014-4-16 21:20 | 只看该作者
好好好检查程序

使用特权

评论回复
7
jxw82284134| | 2014-4-16 21:57 | 只看该作者
你可以去STC官网找一个AT24C04的程序,那个程序一页写入16个字节并读取出来。我就是用那个程序改编的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝