?? 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 + -