|
本帖最后由 分立元件 于 2020-10-31 21:40 编辑
#include<reg52.h>
#define uchar unsigned char
sbit sda=P1^3;
sbit scl=P1^2;
void delay1(uchar z)
{
uchar j,k;
for(k=0;k<z;k++)
{
for(j=0;j<100;j++) ; //此处j不得小于27否则读不出数据
}
}
void delay()
{
;;
}
void init()
{
sda=1;
delay();
scl=1;
delay();
}
void start()
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop()
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void ack()
{
scl=1;
delay();
if(sda==1)
{
delay1(1000);
}
scl=0;
delay();
sda=1;
delay();
}
void write_24c08(uchar add)
{
uchar a,i;
i=add;
scl=0;
delay();
for(a=0;a<8;a++)
{
i=i<<1;
sda=CY;
delay();
scl=1;
delay();
scl=0;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_24c08()
{
uchar a,readdate;
scl=0;
delay();
sda=1;
delay();
for(a=0;a<8;a++)
{
scl=1;
delay();
readdate=(readdate<<1)|sda; //这里注意啊,不要换成别的
scl=0;
delay();
}
return readdate;
}
void main()
{
init();
start(); //开始写数据进存储器
write_24c08(0xa0); //24C08地址
ack();
write_24c08(0x21);//数据的地址
ack();
write_24c08(0xf0);//写入数据
ack();
stop();
delay1(100);
start();
write_24c08(0xa0);
ack();
write_24c08(0x21);
ack();
start();
write_24c08(0xa1);
ack();
P0=read_24c08();//读出数据
stop();
while(1);
} |
评分
-
1
查看全部评分
-
|