📄 eeprom.c
字号:
#include<reg52.h>
#include<intrins.h>
#include"main.h"
#include"port.h"
#include"delay.h"
#include "eeprom.h"
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
//#include"eeprom.h"
#define NUM 10
uChar idata sendbuf[NUM];
uChar idata receivebuf[NUM];
//bit bdata SystemError;
bit SystemError;
void iic_start(void)
{
EA=0;
SDA=1;
SCL=1;
delayNOP();
SDA=0;
delayNOP();
SCL=0;
}
void iic_stop(void)
{
SDA=0;
SCL=1;
delayNOP();
SDA=1;
delayNOP();
SCL=0;
}
void slave_ACK(void)
{
SDA=0;
SCL=1;
delayNOP();
SDA=1;
SCL=0;
}
void slave_NOACK(void)
{
SDA=1;
SCL=1;
delayNOP();
SDA=0;
SCL=0;
}
void check_ACK(void)
{
SDA=1;
SCL=1;
F0=0;
if(SDA==1)
F0=1;
SCL=0;
}
void IICSendByte(uChar ch)
{
uChar idata n=8;
while(n--)
{
if((ch&0x80)==0x80)
{
SDA=1;
SCL=1;
delayNOP();
SDA=0;
SCL=0;
}
else
{
SDA=0;
SCL=1;
delayNOP();
SCL=0;
}
ch=ch<<1;
}
}
uChar IICreceiveByte(void)
{
uChar idata n=8;
uChar tdata;
while(n--)
{
SDA=1;
SCL=1;
tdata=tdata<<1;
if(SDA==1)
tdata=tdata|0x01;
else
tdata=tdata&0xfe;
SCL=0;
}
return(tdata);
}
void writeNByte(uChar slave_add,uChar n)
{
uChar idata send_da,i=0;
iic_start();
IICSendByte(slave_add);
check_ACK();
if(F0==1)
{
SystemError=1;
return;
}
while(n--)
{
send_da=sendbuf[i++];
IICSendByte(send_da);
check_ACK();
if(F0==1)
{
SystemError=1;
return;
}
}
iic_stop();
}
void receiveNByte(uChar idata slave_add,uChar n)
{
uChar idata receive_da,i=0;
iic_start();
IICSendByte(slave_add);
check_ACK();
if(F0==1)
{
SystemError=1;
return;
}
while(n--)
{
receive_da=IICreceiveByte();
receivebuf[i++]=receive_da;
slave_ACK();
}
slave_NOACK();
iic_stop();
}
/*
void writeByte2dev(unsigned char address_H,unsigned char address_L,unsigned char wr_data)
{
iic_start();
IICSendByte(0x00);//设备地址
check_ACK();//检查应答位,
if(F0==1)
{
SystemError=1;//若非应答表明器件错误或已坏,置错误标志位SystemError
return;
}
IICSendByte(0x01);
check_ACK();
if(F0==1)
{
SystemError=1;
return;
}
IICSendByte(0x0a);//片内低8bit地址
check_ACK();//检查应答位,
if(F0==1)
{
SystemError=1;
return;
}
IICSendByte(0xff);
check_ACK();
if(F0==1)
{
SystemError=1;
return;
}
iic_stop();//全部发完则停止,
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -