📄 14.c
字号:
#include<AT89X51.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define addwr 0xa0
#define addrd 0xa1
sbit sda=P3^7;
sbit scl=P3^6;
sbit wp=P3^5;
void mdelay(uchar j)
{
uint i;
for(;j>0;j--)
{
for(i=0;i<125;i--)
{;}
}
}
void start(void)
{
sda=1;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=0;
_nop_();_nop_();_nop_();_nop_();
}
void stop(void)
{
sda=0;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=1;
_nop_();_nop_();_nop_();_nop_();
}
void ack(void)
{
sda=0;
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
scl=0;
}
void noack(void)
{
sda=1;
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
scl=0;
}
void send(uchar Data)
{
uchar bitcounter=8;
uchar temp;
do
{
temp=Data;
scl=0;
_nop_();_nop_();_nop_();_nop_();
if((temp&0x80)==0x80)
sda=1;
else
sda=0;
scl=1;
temp=Data<<1;
Data=temp;
bitcounter--;
}while(bitcounter);
scl=0;
}
uchar read(void)
{
uchar temp=0;
uchar temp1=0;
uchar bitcounter=8;
sda=1;
do
{
scl=0;
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
if(sda)
temp=temp|0x01;
else
temp=temp&0xfe;
if(bitcounter-1)
{
temp1=temp<<1;
temp=temp1;
}
bitcounter--;
}while(bitcounter);
return(temp);
}
void wrtorom(uchar Data[],uchar address,uchar num)
{
uchar i;
uchar *pData;
pData=Data;
for(i=0;i<num;i++)
{
start();
send(0xa0);
ack();
send(address+i);
ack();
send(*(pData+i));
ack();
stop();
mdelay(20);
}
}
void rdfromrom(uchar Data[],uchar address,uchar num)
{
uchar i;
uchar *pData;
pData=Data;
for(i=0;i<num;i++)
{
start();
send(0xa0);
ack();
send(address+i);
ack();
start();
send(0xa1);
ack();
*(pData+i)=read();
scl=0;
noack();
stop();
}
}
void main()
{
uchar number[4]={1,2,3,4};
wp=1;
wrtorom(number,4,4);
mdelay(20);
number[0]=0;
number[1]=0;
number[2]=0;
number[3]=0;
rdfromrom(number,4,4) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -