求助 IIC总线器件子地址是什么意思啊

2020-01-27 11:40发布

如头文件<IIC.H>中
bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no)
{
   uchar i;

   Start_I2c();                  /*启动总线*/
   SendByte(sla);                /*发送器件地址*/
   if(ack==0)return(0);
   SendByte(suba);               /*发送器件子地址*/
   if(ack==0)return(0);
这个suba是什么啊?发送器件子地址。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
dingdan258
2020-01-27 22:13
先定义一个数组:
on_off_cnt[200];

ISendStr(0xa0,0x00,on_off_cnt,8);//把数据on_off_cnt[0]-on_off_cnt[7]-写到0x00-0X07地址中
delayms(10);
ISendStr(0xa0,0x08,&on_off_cnt[8],8);//把数据on_off_cnt[8]-on_off_cnt[15]-写到0x08-0X0f地址中
delayms(10);
ISendStr(0xa0,0x10,&on_off_cnt[16],8);//把数据on_off_cnt[16]-on_off_cnt[23]-写到0x10-0X17地址中
delayms(10);
ISendStr(0xa0,0x18,&on_off_cnt[24],8);//把数据on_off_cnt[24]-on_off_cnt[31]-写到0x18-0X1f地址中
.................................
.................................
delayms(10);
ISendStr(0xa0,0xc0,&on_off_cnt[192],8);//把数据on_off_cnt[192]-on_off_cnt[199]-写到0x08-0X0f地址中

以此类推,写25次就可以把200字节写完。

读取的话就按地址:
IRcvStr(0xa0,0x00,on_off_cnt,1);//从地址0x00-0X07中读出数据到on_off_cnt[0]-on_off_cnt[7]
delayms(10);
IRcvStr(0xa0,0x08,&on_off_cnt[8],1);//从地址0x08-0X0f中读出数据到on_off_cnt[8]-on_off_cnt[16]
................................
...............................
看到一位兄弟这么写的,24C0X这种芯片用起来不能自动分页吗,呵呵,这么麻烦。

一周热门 更多>