在寫滿一頁後,需要結束匯流排,然後從新啟動匯流排,再寫入sla,寫入下頁的suba,寫入資料。。。。
在結束匯流排和啟動匯流排間要一定要加入延時,長點!!
extern unsigned char enumer;bit ISendStr(unsigned char sla,unsigned int suba,unsigned char *s,unsigned char no){ unsigned char i; unsigned int k;// Start_I2c(); /*啟動匯流排*/ SendByte(sla); /*發送器件地址*/ if(ack==0)return(0); /////////////////////////////////////////// if(AT24C256 == AT24C256){ SendByte((unsigned char)(suba >> 8));//把整型資料轉換為字元型資料:棄高取低,只取低8位.
//如果容量大於32K位,使用16位地址定址,寫入高八位地址 if(ack==0) return(0); } SendByte((unsigned char)suba); /*發送器件子地址*/ if(ack==0)return(0); for(i=0;i<no;i++) { //******************此段判斷頁**************************// if(suba%64==0) { Stop_I2c();for(k=0;k<10000;k++);Start_I2c(); /*啟動匯流排*/ SendByte(sla); /*發送器件地址*/ if(ack==0)return(0); /// if(AT24C256 == AT24C256){ SendByte((unsigned char)(suba >> 8));//把整型資料轉換為字元型資料:棄高取低,只取低8位.
//如果容量大於32K位,使用16位地址定址,寫入高八位地址 if(ack==0) return(0); } SendByte((unsigned char)suba); /*發送器件子地址*/ if(ack==0)return(0); } suba++; //********************此段判斷頁*****************************// /*發送資料*/ SendByte(*s++); if(ack==1) continue;//////////////return(0);//////////////////////////// senddd('X'); //沒有到這···· ///return(0);//// } Stop_I2c(); /*結束匯流排*/ return(1);}