📄 24c01._c
字号:
#include <d:\gkdoor\chensoft\main.h>
#include <d:\gkdoor\chensoft\24c01.h>
#include <iom128v.h>
#include <macros.h> /* hardware write protect*/
void mDelay(unsigned char j)
{
unsigned int i,ll;
for(ll=0;ll<j;ll++)
{
for(i=0;i<125;i--)
{;}
}
}
void Start(void)
{
unsigned char i;
SET_SDA();
// SET_SCL();
for(i=0;i<10;i++);
CLEAR_SDA();
for(i=0;i<10;i++);
}
void Stop(void)
{
unsigned char i;
CLEAR_SDA();
// SET_SCL();
for(i=0;i<10;i++);
SET_SDA();
for(i=0;i<10;i++);
}
void Ack(void) /*answer bit*/
{
unsigned char i;
CLEAR_SDA();
for(i=0;i<10;i++);
// SET_SCL();
// for(i=0;i<10;i++);
// CLEAR_SCL();
}
void NoAck(void) /*backfard answer bit*/
{
unsigned char i;
SET_SDA();
for(i=0;i<10;i++);
// SET_SCL();
// for(i=0;i<10;i++);
// CLEAR_SCL();
}
void Send(unsigned char Data) /*send data sub ,data for send of data*/
{
unsigned char j,i; /*bit counter control*/
// unsigned char temp; /*middle var control*/
for(j=0;j<8;j++)
{
// CLEAR_SCL();
for(i=0;i<10;i++);
if((Data&0x80)==0x80)
SET_SDA();
else
CLEAR_SDA();
// SET_SCL();
Data=Data<<1;
}
// CLEAR_SCL();
}
unsigned char Read(void) /* read a byte of data ,and return this data*/
{
unsigned char temp,i;
unsigned char j;
SET_SDA();
for(j=0;j<8;j++)
{
temp<<=1;
// CLEAR_SCL();
for(i=0;i<10;i++);
// SET_SCL();
for(i=0;i<10;i++);
if((PIND&0x02)==0x02) /* if Sda=1;*/
temp=temp|0x01;
}
return temp;
}
void WrToROM(unsigned char *Data,unsigned int Address,unsigned char Num)
{
unsigned char i;
Start(); /* send start signed*/
Send(0xa0); /* send SLA+W*/
Ack();
Send(*((unsigned char *)&Address+1)); /* send address*/
Ack();
Send(*((unsigned char *)&Address));
Ack();
for(i=0;i<Num;i++)
{
Send(*(Data+i));
Ack();
}
Stop();
mDelay(10);
}
void RdFromROM(unsigned char *Data,unsigned int Address,unsigned char Num)
{
unsigned char i;
// unsigned char *PData;
// PData=Data;
for(i=0;i<Num;i++)
{
Start();
Send(0xa0);
Ack();
Send(*((unsigned char *)&Address+1));
Ack();
Send(*((unsigned char *)&Address));
Ack();
Start();
Send(0xa1);
Ack();
*(Data+i)=Read();
// CLEAR_SCL();
NoAck();
Stop();
Address++;
}
}
void write_byte01(unsigned int Address,unsigned char data)
{
Start(); /* send start signed*/
Send(0xa0); /* send SLA+W*/
Ack();
Send(*((unsigned char *)&Address+1)); /* send address*/
Ack();
Send(*((unsigned char *)&Address));
Ack();
Send(data);
Ack();
Stop();
mDelay(30);
}
unsigned char read_byte01(unsigned int Address)
{
unsigned char temp;
Start();
Send(0xa0);
Ack();
Send(*((unsigned char *)&Address+1));
Ack();
Send(*((unsigned char *)&Address));
Ack();
Start();
Send(0xa1);
Ack();
temp=Read();
// CLEAR_SCL();
NoAck();
Stop();
return temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -