📄 text1.c
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define addwr 0xa0 //定义写数据地址
#define addrd 0xa1
#define _nop_();
sbit sda=P2^0;
sbit scl=P2^1;
void delay(uint j)
{
uchar i;
for(;j>0;j--)
for(i=0;i<125;i++);
}
//起始条件
void start()
{
sda=1;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=0;
_nop_();_nop_();_nop_();_nop_();
}
//停止条件
void stop()
{
sda=0;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=1;
_nop_();_nop_();_nop_();_nop_();
}
//应答位
void ack()
{
sda=0;
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
scl=0;
}
//反向应答位
void noack()
{
sda=1;
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
scl=0;
}
//发送数据子程序
void send (uchar date)
{
uchar bitcouter=8;
uchar temp;
do
{
temp=date;
scl=0;
_nop_();_nop_();_nop_();_nop_();
if((temp&0x80)==0x80)//如果最高位是1
sda=1;
else
sda=0;
scl=1;
_nop_();_nop_();_nop_();_nop_();
date=date<<1;
bitcouter--;
}while(bitcouter);
scl=0;
}
//读一字节的数据
uchar read()
{
uchar temp=0;
uchar temp1=0;
uchar bitcounter=8;
sda=1;
do{
scl=0;
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
temp=temp<<1;
if(sda)
temp=temp|0x01;
else
temp=temp&0xfe;
//temp=temp<<1;
bitcounter--;
}while(bitcounter);
return(temp);
}
void wrtorom(uchar date[],uchar address,uchar num)
{
uchar i;
uchar*pdate;
pdate=date;
for(i=0;i<num;i++)
{
start();
send(0xa0);
ack();
send(address+i);
ack();
send(*(pdate+i));
ack();
stop();
delay(20);
}
}
void rdfromrom(uchar date[],uchar address,uchar num)
{
uchar i;
uchar*pdate;
pdate=date;
for(i=0;i<num;i++)
{
start();
send(0xa0);
ack();
send(address+i);
ack();
start();
send(0xa1);
ack();
*(pdate+i)=read();
scl=0;
noack();
stop();
}
}
void main()
{
uchar i;
uchar number[8]={0xaa,0xfe,0x55,0xfc,0xd4,0xf2,0x56,0x88};
// uchar number1[8];
wrtorom(number,0,8);
delay(30);
number[0]=0;
number[1]=0;
rdfromrom(number,0,8);
for(i=0;i<8;i++)
{
P1=number[i];
// P1=numbe1[i];
// uchar number1[8]=number[i];
delay(4000);
}
delay(400);
delay(400);
//delay(4000);
//P1=number[2];
delay(400);
delay(400);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -