📄 at24c.c
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_();_nop_();_nop_();//定义空指令
#define addwr 0xa0
#define addrd 0xa1
sbit wp=P1^2;
sbit scl=P1^0;
sbit sda=P1^1;
uchar Number=0xaa;
mdelay(char j)
{
unsigned int i;
for(;j>0;j--)
{
for(i=0;i<20;i++);
}
}
void star(void) //起始条件
{scl=1;
nop;
sda=1;
nop;
sda=0;
nop;
}
void stop(void) //停止
{
sda=0;
nop;
scl=1;
nop;
sda=1;
nop;
}
void ask(void) //应答
{
scl=1;
nop;
sda=1;
mdelay(20);
scl=0;
nop;
}
void send(uchar date) //发送写器件地址
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
nop;
sda=CY;
nop;
scl=1;
nop;
}
scl=0;
nop
sda=1;
nop
}
uchar read(void) //读一个字节
{
uchar m,k;
scl=0;
nop;
sda=1;
nop;
for(m=0;m<8;m++)
{
scl=1;
nop;
k=(k<<1)|sda;
scl=0;
nop;
}
return k;
}
void write_rom(uchar data1,uchar add1) //写ROM
{
star();
nop;
send(addwr);
nop;
ask();
send(add1);
nop;
ask();
nop;
send(data1);
nop;
ask();
nop;
stop();
nop;
mdelay(20);
nop;
}
void read_rom(uchar add2) //读ROM
{uchar hehe;
star();
nop;
send(addwr);
nop;
ask();
nop;
send(add2);
nop;
ask();nop;
star();nop;
send(addrd);nop;
ask();nop;
hehe=read();nop;
scl=0;
stop();
Number=hehe;
}
void main()
{
wp=0;
write_rom(Number,4);
mdelay(20);
Number=0;
read_rom(4);
P2=Number;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -