📄 2404.asm
字号:
#include <24c04.h>
void DelayXOPs(uchar number)
{
uchar i;
for(i=0;i<number;i++)
{
_nop_();
}
}
void DelayXSecond(uchar number)
{//delaymsecond(10)=延时10.00579ms @w77e58*22.1184MHz(不考虑中断)
uint data i;
uchar data j;
for(j=0; j<number; j++)
{
for (i=0; i<270; i++)_nop_();
}
}
void iicStart(void)
{
Sda=1;
Scl=1;
DelayXOPs(18);
Sda=0;
DelayXOPs(18);
Scl=0;
DelayXOPs(18);
}
void iicStop(void)
{
Sda=0;
DelayXOPs(18);
Scl=1;
DelayXOPs(18);
Sda=1;
DelayXOPs(18);
Scl=1;
DelayXOPs(18);
}
void MasterAck(void)
{
Sda=0;
DelayXOPs(18);
Scl=1;
DelayXOPs(18);
Scl=0;
DelayXOPs(18);
}
void SlavecAck()
{
bit temp;
//Sda=1;
DelayXOPs(18);
Scl=1;
DelayXOPs(18);
temp=Sda;
Scl=0;
DelayXOPs(18);
// return(temp);
}
void iicNoAck(void)
{
Sda=1;
DelayXOPs(18);
Scl=1;
DelayXOPs(18);
Scl=0;
DelayXOPs(18);
}
void iicSend(uchar Dat)
{
uchar BitCounter=8;
uchar temp;
do
{
temp=Dat;
if((temp&0x80)==0x80)
Sda=1;
else
Sda=0;
DelayXOPs(18);
Scl=1;
DelayXOPs(18);
Scl=0;
DelayXOPs(18);
temp=Dat<<1;
Dat=temp;
BitCounter--;
}while(BitCounter);
}
uchar iicRead(void)
{
uchar temp=0;
uchar temp1=0;
uchar BitCounter=8;
Sda=1;
do{
Scl=0;
DelayXOPs(18);
Scl=1;
DelayXOPs(18);
temp1=Sda;
DelayXOPs(9);
if(temp1)
temp=temp|0x01;
else
temp=temp&0xfe;
if(BitCounter-1)
temp=temp<<1;
Scl=0;
DelayXOPs(18);
BitCounter--;
}while(BitCounter);
return(temp);
}
void WrToROM(uchar Dat[],uint Address,uint Num)
{
uint i;
uchar *PDat;
PDat=Dat;
for(i=0;i<Num;i++)
{
iicStart();
if((Address+i)>0xff)
iicSend(0xa2);//page 1
else
iicSend(0xa0);//page 0
// iicSend(0xa0);
SlavecAck();
iicSend(Address+i);
SlavecAck();
iicSend(*(PDat+i));
SlavecAck();
iicStop();
DelayXSecond(10);
}
}
void RdFromROM(uchar Dat[],uint Address,uint Num)
{
uint i;
uchar *PDat;
PDat=Dat;
for(i=0;i<Num;i++)
{
iicStart();
if((Address+i)>0xff)
iicSend(0xa2);//page 1
else
iicSend(0xa0);//page 0
// iicSend(0xa0);
SlavecAck();
iicSend(Address+i);
SlavecAck();
iicStart();
if((Address+i)>0xff)
iicSend(0xa3);//page 1
else
iicSend(0xa1);//page 0
// iicSend(0xa1);
MasterAck();
*(PDat+i)=iicRead();
iicNoAck();
iicStop();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -