E2Prom中的延时问题、
时间:10-02
整理:3721RD
点击:
程序、#include<reg52.h>#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit sda=P2^0;
sbit scl=P2^1;
void delay1()
{
_nop_();
_nop_();
}
void start()
{
sda=1;
delay1();
scl=1;
delay1();
sda=0;
delay1();
}
void end()
{
sda=0;
delay1();
scl=1;
delay1();
sda=1;
delay1();
}
void respons()
{ sda=1;
delay1();
scl=1;
delay1();
delay1();
scl=0;
delay1();
}
void write(uchar c)
{
uchar i,temp,j;
scl=0;
//delay1();
j=0;j++;
temp=c;
for(i=0;i<8;i++)
{ temp=temp<<1;
scl=0;
j=0;j++;j++;
sda=CY;
for(j=0;j<3;j++);
scl=1;
j=0;j++;j++;
}
/* scl=0;
delay1();*/
// 就是被注释掉的这句话、太重要了、没有就写入不进去、、为什么啊、请高手指点、
sda=1;
delay1();
}
uchar read()
{
uchar i,k,j,x;
scl=0;
j=0;j++;
sda=1;
j=0;j++;
for(i=0;i<8;i++)
{
scl=1;
delay1();
x=sda;
j=0;j++;
scl=0;
j=0;j++;
k=(k<<1)|x;
delay1();
}
return k;
}
void delay(uchar c)
{
uchar a,b;
for(a=c;a>0;a--)
for(b=110;b>0;b--);
}
main()
{ scl=1;
delay1();
sda=1;
delay1();
start();
write(0xa0);
respons();
write(0x03);
respons();
write(0x55);
respons();
end();
delay(500);
start();
write(0xa0);
respons();
write(0x03);
respons();
start();
write(0xa1);
respons();
P1=read();
end();
while(1);
}
#define uint unsigned int
#define uchar unsigned char
sbit sda=P2^0;
sbit scl=P2^1;
void delay1()
{
_nop_();
_nop_();
}
void start()
{
sda=1;
delay1();
scl=1;
delay1();
sda=0;
delay1();
}
void end()
{
sda=0;
delay1();
scl=1;
delay1();
sda=1;
delay1();
}
void respons()
{ sda=1;
delay1();
scl=1;
delay1();
delay1();
scl=0;
delay1();
}
void write(uchar c)
{
uchar i,temp,j;
scl=0;
//delay1();
j=0;j++;
temp=c;
for(i=0;i<8;i++)
{ temp=temp<<1;
scl=0;
j=0;j++;j++;
sda=CY;
for(j=0;j<3;j++);
scl=1;
j=0;j++;j++;
}
/* scl=0;
delay1();*/
// 就是被注释掉的这句话、太重要了、没有就写入不进去、、为什么啊、请高手指点、
sda=1;
delay1();
}
uchar read()
{
uchar i,k,j,x;
scl=0;
j=0;j++;
sda=1;
j=0;j++;
for(i=0;i<8;i++)
{
scl=1;
delay1();
x=sda;
j=0;j++;
scl=0;
j=0;j++;
k=(k<<1)|x;
delay1();
}
return k;
}
void delay(uchar c)
{
uchar a,b;
for(a=c;a>0;a--)
for(b=110;b>0;b--);
}
main()
{ scl=1;
delay1();
sda=1;
delay1();
start();
write(0xa0);
respons();
write(0x03);
respons();
write(0x55);
respons();
end();
delay(500);
start();
write(0xa0);
respons();
write(0x03);
respons();
start();
write(0xa1);
respons();
P1=read();
end();
while(1);
}