📄 at24c32(64).c
字号:
/************************/
void STA(void) /*START IIC*/
{ SDA=1;
SCL=1;
dltime();
SDA=0;
dltime();
SCL=0;
dltime();
}
void STOP(void) /*STOP IIC*/
{ SDA=0;
SCL=1;
dltime();
SDA=1;
dltime();
SCL=0;
dltime();
}
void MACK(void) /*SEND ANSWER */
{ SDA=0;
SCL=1;
dltime();
SCL=0;
dltime();
SDA=1;
}
void MNACK() /*SEND NO ANSWER */
{ SDA=1;
SCL=1;
dltime();
SCL=0;
dltime();
SDA=0;
_nop_();
}
void CACK(void) /* CHECK ANSWER */
{ SDA=1;
SCL=1;
FLAG=0;
if (SDA==0)
goto tnext;
FLAG=1;
tnext: SCL=0;
dltime();
}
/*write a byte to SDA ,TransData */
void WRBYT()
{ unsigned char data i,W;
W=0;
for(i=0;i<8;i++ )
{
TransData=_crol_(TransData,1);
W=TransData&0x01;
if (W==1)
{ SDA=1;
SCL=1;
dltime();
SCL=0;
dltime();
SDA=0;
dltime();
}
else
{ SDA=0;
SCL=1;
dltime();
SCL=0;
dltime();
}
}
}
/* read a byte from SDA, TransData */
void RDBYT()
{ unsigned char i;
TransData=0;
for(i=0;i<8;i++)
{
SDA=1;
SCL=1;
dltime();
if (SDA==0)
{
TransData=_crol_(TransData,1);
SCL=0;
dltime();
}
else
{
TransData=_crol_(TransData,1);
TransData=TransData+1;
SCL=0;
dltime();
}
}
}
void WRNBYT() /*BYTE[0]为高字节*/
{ unsigned char data i;
if(NUMBYT>32) NUMBYT=32;
WRNB:
STA();
TransData=DEVICEaddress;
WRBYT();
CACK();
if (FLAG==1) goto WRNB;
else
{
TransData=WORDaddress.BYTE[0];
WRBYT();
CACK();
if (FLAG==1) goto WRNB;
else
{
TransData=WORDaddress.BYTE[1];
WRBYT();
CACK();
if (FLAG==1) goto WRNB;
else
{
for(i=0;i<NUMBYT;i++)
{ TransData=origdata.MTD[i];
WRBYT();
CACK();
if (FLAG==1) goto WRNB;
}
STOP();
}
}
}
}
/******************************/
void RDNBYT()
{ unsigned char data i;
if(NUMBYT>32)
NUMBYT=32;
RDNB:
TransData=DEVICEaddress;
STA();
WRBYT();
CACK();
if (FLAG==1) goto RDNB;
else
{
TransData=WORDaddress.BYTE[0];
WRBYT();
CACK();
if (FLAG==1) goto RDNB;
else
{TransData=WORDaddress.BYTE[1];
WRBYT();
CACK();
if (FLAG==1) goto RDNB;
else
{STA();
TransData=DEVICEaddress;
TransData=TransData+1;
WRBYT();
CACK();
if (FLAG==1) goto RDNB;
else
{
for(i=0;i<NUMBYT;i++)
{
RDBYT();
origdata.MRD[i]=TransData;
if (i==NUMBYT-1)
{ MNACK();
STOP();
}
else
MACK();
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -