📄 text.c
字号:
#include <stdio.h>
#include <reg51.h>
#define WriteDeviceAddress 0xa0
#define ReadDeviceAddress 0xa1
sbit SCL=P3^5;
sbit SDA=P3^7;
sbit WRITEOK=P1^0;
sbit READOK=P1^1;
sbit COMPAREOK=P1^2;
sbit COMPAREERROR=P1^3;
sbit led4=P1^4;
sbit led5=P1^5;
sbit led6=P1^6;
void W_Ok_Delay(unsigned int number){
unsigned long temp;
for(;number!=0;number--){
for(temp=3000;temp!=0;temp--){}
WRITEOK=!WRITEOK;
}
}
void R_Ok_Delay(unsigned int number){
unsigned long temp;
for(;number!=0;number--){
for(temp=3000;temp!=0;temp--){}
READOK=!READOK;
}
}
void Compare_Ok_Delay(unsigned int number){
unsigned long temp;
for(;number!=0;number--){
for(temp=3000;temp!=0;temp--){}
COMPAREOK=!COMPAREOK;
}
}
void Start(){
SDA=1;
SCL=1;
SDA=0;
SCL=0;
}
void Stop(){
SCL=0;
SDA=0;
SCL=1;
SDA=1;
}
void Ack(){
SDA=0;
SCL=1;
SCL=0;
SDA=1;
}
void NoAck(){
SDA=1;
SCL=1;
SCL=0;
//SDA=0;
}
//void TestAck(){
// bit Errorbit;
// SDA=1;
// SCL=1;
// Errorbit=SDA;
// SCL=0;
// return(Errorbit);
//}
Write8Bit(unsigned char input){
unsigned char temp;
for(temp=8;temp!=0;temp--){
SDA=(bit)(input&0x80);
SCL=1;
SCL=0;
input=input<<1;
}
}
void Write24C01(unsigned char RomAddress,unsigned char Data[],
unsigned char Number){
unsigned char *Wdata;
Wdata=Data;
Start();
Write8Bit(WriteDeviceAddress);
Ack();
Write8Bit(RomAddress);
Ack();
for(;Number!=0;Number--){
Write8Bit(*Wdata);
Ack();
Wdata++;
}
Stop();
W_Ok_Delay(10);
}
Read8Bit(){
unsigned char temp,rbyte=0;
for(temp=8;temp!=0;temp--){
SCL=1;
rbyte=rbyte<<1;
rbyte=rbyte|((unsigned char)(SDA));
SCL=0;
}
return(rbyte);
}
void Read24C01(unsigned char RomAddress,unsigned char RamAddress[],
unsigned char Number){
Start();
Write8Bit(WriteDeviceAddress);
Ack();
Write8Bit(RomAddress);
Ack();
Start();
Write8Bit(ReadDeviceAddress);
Ack();
for(;Number!=1;Number--){
*RamAddress=Read8Bit();
Ack();
RamAddress++;
}
*RamAddress=Read8Bit();
NoAck();
Stop();
R_Ok_Delay(10);
}
void Compare(unsigned char Compare1[],unsigned char Compare2[],
unsigned char Number){
unsigned char *Cdata1;
unsigned char *Cdata2;
Cdata1=Compare1;
Cdata2=Compare2;
for(;Number!=0;Number--){
if(*Cdata1!=*Cdata2) break;
Cdata1++;
Cdata2++;
Compare_Ok_Delay(2);
}
}
void main(void){
unsigned char SendBufer[8]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};
unsigned char ReceiveBufer[8]={0,0,0,0,0,0,0,0};
Write24C01(0x00,SendBufer,8);
Read24C01(0x00,ReceiveBufer,8);
Write24C01(0x10,ReceiveBufer,8);
Compare(SendBufer,ReceiveBufer,8);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -