AT24C02 I2C通讯问题

[复制链接]
2173|2
 楼主| doliphin 发表于 2011-2-8 10:57 | 显示全部楼层 |阅读模式
以下为向AT24C02写入数据的函数,其中unit类型为unsigned int,uchar类型为unsigned char, firstw_ad为要写入的AT24C02单元首地址,*firstr_ad为被写入数据的首地址指针,counter为要写入数据字节数。     

bit write_8bit(uchar ch)                        //写一个字节
{
        uchar  i=8;
        bit  fan_w;
        SCL=0;_nop_();
        while(i--)
       {
            SDA=(bit)(ch&0x80);
            _nop_();
            ch<<=1;
            SCL=1; _nop_();
            SCL=0; _nop_();
        }
        SDA=1; _nop_();
        SCL=1; _nop_();
        fan_w=SDA;
        SCL=0; _nop_();
        return(fan_w);
}


uchar  page_write(uint firstw_ad,unit counter,uchar *firstr_ad)
{
          uchar data *ufirstr_ad;
          ufirstr_ad=firstr_ad;
          start_bit();
          if(write_8bit(0xA0)!=0)  {stop_bit();return(0);}         //写入写命令
          if(write_8bit(firstw_ad)!=0) {stop_bit();return(0);}    //写入要写入数据的首地址
          while(counter--)
            {      
                  if(write_8bit(*ufirstr_d)!=0)   {stop_bit();return(0);}
                  ufirstr_ad++;
            }
          stop_bit();
          return(1);
}


1)不明白向AT24C02写入数据的过程,单片机向数据线写入写命令、指定AT24C02接受数据的首地址后再向SDA上写数据AT24C02就会自动接收。
2)
          uchar data *ufirstr_ad;
          ufirstr_ad=firstr_ad;
为什么要再定义一个指针函数,直接用*firstr_ad不行吗
 楼主| doliphin 发表于 2011-2-8 11:08 | 显示全部楼层
补充一下   uchar data 是定义什么类型的函数
outstanding 发表于 2013-8-16 16:20 | 显示全部楼层
data 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。 单片机的基础知识
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

195

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部