⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text.c

📁 我自己的项目
💻 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 + -