📄 hwi2c.lst
字号:
193 1 I2C_TXdata=addr_H;
194 1 wait_ack();
195 1
196 1
197 1 //==Send low byte
198 1 I2C_CONdata=I2Cspeed|0X03;
199 1 I2C_TXdata=addr_L;
200 1 wait_ack();
201 1
202 1
203 1 //Send start again
204 1 I2C_CONdata=I2Cspeed|0X13;
205 1 I2C_TXdata=0xa0+1;
206 1 wait_ack();
207 1
208 1
209 1 I2C_CONdata=I2Cspeed|0X07; //receive,no ack(NACK), CLEAR
210 1 wait_data_ready();
211 1
212 1
213 1 ret_avl= I2C_RXdata;
214 1
215 1 I2C_CONdata=I2Cspeed|0X0a; // STOP
216 1 wait_stop_ready();
217 1
218 1 //PORTB_EN=tmp;
219 1 return (ret_avl);
220 1 }
*** WARNING C280 IN LINE 172 OF ..\..\LIB\HWI2C.C: 'tmp': unreferenced local variable
221
222 char c256_pageread(unsigned int src_addr,unsigned char *des_addr,unsigned int len)
223 {
224 1 unsigned char addr_L, addr_H;
225 1 unsigned int i=0;
226 1 unsigned char *ptr;
227 1 unsigned char tmp,ready=0;
228 1 #if 1
229 1 ptr=des_addr;
230 1 for (i=0;i<len;i++)
231 1 ptr[i]=c256_byteread(src_addr+i);
232 1 return 1;
233 1 #else
//printf("\npageread");
ptr=des_addr;
tmp=PORTB_EN;
PORTB_EN=0;
C51 COMPILER V7.50 HWI2C 10/12/2006 15:31:41 PAGE 5
I2Cspeed=EEP_I2C_SPEED;
I2C_CONdata=I2Cspeed|0xa;
addr_H = (unsigned char)(src_addr >> 8);
addr_L = (unsigned char)src_addr ;
ready=0;
while ((!ready)&&(i<1000))
{
I2C_CONdata=I2Cspeed|0X13; //Send Start
I2C_TXdata=0xa0; //eeprom ID
ready=wait_ack();
i++;
}
//printf("\nPORTB=%1bx",PORTB);
if (!ready)
return 0;
//Send address
//==Send high byte
I2C_CONdata=I2Cspeed|0X03;
I2C_TXdata=addr_H;
if (!wait_ack())
return 0;
//==Send low byte
I2C_CONdata=I2Cspeed|0X03;
I2C_TXdata=addr_L;
if (!wait_ack())
return 0;
//Send start again
I2C_CONdata=I2Cspeed|0X13;
I2C_TXdata=0xa0+1;
if (!wait_ack())
return 0;
for (i=0;i<len-1;i++)
{
I2C_CONdata=I2Cspeed|0X05; //receive,ack(ACK), CLEAR
wait_data_ready();
ptr[i] = I2C_RXdata;
}
I2C_CONdata=I2Cspeed|0X07; //receive,no ack(NACK), CLEAR
wait_data_ready();
ptr[len-1] = I2C_RXdata;
I2C_CONdata=I2Cspeed|0X0a; // STOP
if (!wait_stop_ready())
return i;
PORTB_EN=tmp;
return(i);
#endif
297 1 }
*** WARNING C280 IN LINE 224 OF ..\..\LIB\HWI2C.C: 'addr_L': unreferenced local variable
*** WARNING C280 IN LINE 224 OF ..\..\LIB\HWI2C.C: 'addr_H': unreferenced local variable
C51 COMPILER V7.50 HWI2C 10/12/2006 15:31:41 PAGE 6
*** WARNING C280 IN LINE 227 OF ..\..\LIB\HWI2C.C: 'tmp': unreferenced local variable
298
299 char i2c_detect(unsigned char addr)
300 {
301 1 unsigned char ready,tmp;
302 1 unsigned int i=0;
303 1
304 1 I2Cspeed=EEP_I2C_SPEED;
305 1 I2C_CONdata=I2Cspeed|0xa;
306 1
307 1 ready=0;
308 1 for (i=0;i<600;i++)
309 1 {
310 2 I2C_CONdata=I2Cspeed|0X13; //Send Start
311 2 I2C_TXdata=0xa0; //eeprom ID
312 2 ready=wait_ack();
313 2 if (ready)
314 2 break;
315 2 }
316 1 if (!ready)
317 1 return 0;
318 1
319 1 I2C_CONdata=I2Cspeed|0X0a; // STOP
320 1 wait_stop_ready();
321 1
322 1 return 1;
323 1
324 1 }
*** WARNING C280 IN LINE 299 OF ..\..\LIB\HWI2C.C: 'addr': unreferenced local variable
*** WARNING C280 IN LINE 301 OF ..\..\LIB\HWI2C.C: 'tmp': unreferenced local variable
325
326 char detect_24256()
327 {
328 1 return i2c_detect(0xa0);
329 1 }
330
331
332 char wait_ack(void)
333 {
334 1 unsigned int i;
335 1 for(i=0;i<WAIT_LOOP_COUNT;i++)
336 1 {
337 2 if ((I2C_STAdata & 0x3)==1)
338 2 {
339 3 return 1;
340 3 }
341 2 }
342 1 //printf("\nwait_ack fail status=%1bx",I2C_STAdata);
343 1 return 0;
344 1 }
345
346
347 char wait_stop_ready(void)
348 {
349 1 unsigned int i;
350 1 for(i=0;i<WAIT_LOOP_COUNT;i++)
351 1 {
352 2 if (I2C_STAdata & 0x8)
353 2 {
354 3 return 1;
355 3 }
356 2 }
C51 COMPILER V7.50 HWI2C 10/12/2006 15:31:41 PAGE 7
357 1 //printf("\nwait_stop_ready fail status=%1bx",I2C_STAdata);
358 1 return 0;
359 1 }
360
361 char wait_data_ready(void)
362 {
363 1 unsigned int i;
364 1 for(i=0;i<WAIT_LOOP_COUNT;i++)
365 1 {
366 2 if (I2C_STAdata & 0x1)
367 2 {
368 3 return 1;
369 3 }
370 2 }
371 1 //printf("\nwait data ready fail status=%1bx",I2C_STAdata);
372 1 return 0;
373 1 }
374
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1029 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1 59
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 8 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -