英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
AT24C02的操作
[打印本页]
作者:
winnie
时间:
2009-4-25 15:49
标题:
AT24C02的操作
我用的是PIC18F452:
对AT24C02进行读写的操作。
程序如下:硬件仿真时,我在数字示波器上看到的ACK应答位都是1,
而且读出来的值都是0XFF。
void i2cout_write(unsigned char address,unsigned char data)
{
SEN=1;
delay(20);
do{
RSEN=1;
}while(SSPIF==0);
SSPIF=0;
delay(10);
SSPBUF= 0xa0;
do{
;
}while(SSPIF==0);
SSPIF=0;
delay(5);
SSPBUF= address;
do{
;
}while(SSPIF==0);
SSPIF=0;
delay(5);
SSPBUF= data;
do{
;
}while(SSPIF==0);
SSPIF=0;
delay(5);
PEN=1;
do{
;
}while(SSPIF==0);
SSPIF=0;
}
u8 i2cout_read(unsigned char address)
{
u8 temp;
SEN=1;
delay(20);
do{
RSEN=1;
}while(SSPIF==0);
SSPIF=0;
delay(10);
SSPBUF=0xa0 ;
do{
;
}while(SSPIF==0);
SSPIF=0;
delay(5);
SSPBUF= address;
do{
;
}while(SSPIF==0);
SSPIF=0;
delay(5);
SEN=1;
delay(20);
do{
RSEN=1;
}while(SSPIF==0);
SSPIF=0;
delay(10);
SSPBUF= 0xa1;
do{
;
}while(SSPIF==0);
SSPIF=0;
delay(10);
RCEN=1;
temp=SSPBUF;
do{
;
}while(SSPIF==0);
temp=SSPBUF;
SSPIF=0;
delay(5);
PEN=1;
do{
;
}while(SSPIF==0);
SSPIF=0;
RCEN=0;
return temp;
}
main()
{
unsigned char data1,data2;
unsigned char address;
/* I2C*/ // 初始化:
SSPCON1=0x08;
TRISC3=1;
TRISC4=1;
SSPSTAT=0x08;
SSPADD=0x06;
SSPCON2=0x00;
SSPIF=0;
RCEN=1;
SSPEN=1;
address=0xaa;
data1=0xee;
i2cout_write(address,data1);
data2=i2cout_read(address);
}
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2