AT24C02程序.doc:..有关于AT24C02存储器的操作,C语言部分看不懂unsignedlongD[17]IRcvStr(AT24C02,0,&pDat[0],8);for(i=0;i<4;i++){D[14+i]=pDat[i*2+0]+pDat[i*2+1]*0x100;Count*!=D[14];(unsignedcharignedcharno){unsignedchari;Start_l2c();SendByte(sla);if(ack==0)return(0);Send巳yte(suba);if(ack==0)return(0);Start_l2c();SendByte(sla+1);if(ack==0)return(0);for(i=0;i<no-1;i++){*s=RcvByte();Ack_l2c(0);s++;}*s=RcvByte();Ack_l2c(1);Stop_l2c();return(1);},unsignedcharsuba,unsignedcharr启动总线v/*发送器件地址7/*发送器件子地址7r重新启动总线*//*发送数据7广发送就答位V/*发送非应位V/*结束总线V这个带星号的*s和24C02main的看不懂啊*s,uns2013-04-2321:03提问者采纳【1】*s是指针s所指向的内容。s++将改变地址,指向K一个字节存放地址。【2】主程序屮,pDat数组的地址是实参。子程序中s是形参。主程序调用IRcvStr(AT24C02,0,&pDat[0】,8)函数,就是从地址为nAT24C02"(IIC器件地址宏名)的24C02芯片屮,从0起始地址连续读取8个字节内容,送到数组pDat[]中。调用子程序时刻,s就是pDat[]的首地址。在子程序里而,*s=RcvByte();...s++;实际的情况,可以这样理解:pDat[x]=RcvByte();...x++;【3】主程序屮将pDat[】连续的每两个字节,低地址在低8位,转换成1个整形字。数组pDat的前8个字节,共4次转换,并把他们存放到数组D[14]、D[15]、D[16]、D[17]四个元素中。追问我不明白的是&PDAT[0],只冇0个元素怎么读取啊?D[14]=PDat[i*2]+PDat[i*2+1]*100怎么理解。就是这些数组把我晕了回答【1】&PDAT[0】表示数组的首地址。传递的并不是数组本身,而是数组的首地址。【2】D[14+i]=PDat[i*2]+PDat[i*2+1】*100你把i=0......i=3代进去看,如下。再理解。D[14]=PDat[0]+PDat[1]*0x100;D[15]=PDat[2]+PDat[3]*0x100;D[16]=PDat[4]+PDat[5]*0x100;D[17]=PDat[6]+PDat[7]*0x100;0x100是啥,表达式含义,你应该知道吧?追问count1=D[14]是指在数组里边地址为14这个地方的字节吗?还是数组D[14]有14个元素?问最后一次。回答你需要明白数组的声明和定义。【1】声明:unsignedinta[6
AT24C02程序 来自淘豆网m.daumloan.com转载请标明出处.