原创 24C02的C控制程序

2008-3-25 19:40 1596 4 4 分类: MCU/ 嵌入式

24C02的C控制程序<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


#define uchar unsigned char


 


#define uint unsigned int


 


#include <reg52.h>


 


#include <stdio.h>


 


#include <absacc.h>


 


sbit scl="P3"^5;  //24c02 SCL


 


sbit sda="P3"^4;  //24c02 SDA


 


sbit DOG="P1"^7;  //狗


 


uchar x24c02_read(uchar address);  //从24c02的地址address中读取一个字节数据


 


void x24c02_write(uchar address,uchar info);  //向24c02的address地址中写入一字节数据info


 


void x24c02_init();   //24c02初始化子程序


 


void delay1(uchar x);


 


void flash();


 


void x24c01_init();


 


void start();


 


void stop();


 


void writex(uchar j);


 


uchar readx();


 


void clock();


 


void delay1(uchar x)


 


{


 


   uint i;


 


   for(i=0;i<x;i++);


 


   DOG=~DOG;


 


}


 


void flash()


 


{


 


   uchar u;


 


   DOG=~DOG;


 


}


 


void x24c02_init()


 


{


 


   scl=1; flash(); sda="1"; flash();


 


}


 


void start()


 


{


 


   sda=1; flash(); scl="1"; flash(); sda="0"; flash(); scl="0"; flash();


 


}


 


void stop()


 


{


 


   sda=0; flash(); scl="1"; flash(); sda="1"; flash();


 


}


 


void writex(uchar j)


 


{


 


   uchar i,temp;


 


   temp=j;


 


   for (i=0;i<8;i++){


 


      temp=temp<<1; scl="0"; flash(); sda="CY"; flash(); scl="1"; flash();


 


   }


 


   scl=0; flash(); sda="1"; flash();


 


}


 


uchar readx()


 


{


 


   uchar i,j,k=0;


 


   scl=0; flash(); sda="1";


 


   for (i=0;i<8;i++){


 


      flash(); scl="1"; flash();


 


      if (sda==1) j="1";


 


      else j="0";


 


      k=(k<<1)|j; scl="0";


 


   }


 


   flash(); return(k);


 


}


 


void clock()


 


{


 


   uchar i="0";


 


   scl=1; flash();


 


   while ((sda==1)&&(i<255))i++;


 


   scl=0; flash();


 


}


 


uchar x24c02_read(uchar address)


 


{


 


   uchar i;


 


   start(); writex(0xa0);


 


   clock(); writex(address);


 


   clock(); start();


 


   writex(0xa1); clock();


 


   i=readx(); stop();


 


   delay1(10);


 


   return(i);


 


}


 


void x24c02_write(uchar address,uchar info)


 


{


 


   EA=0;


 


   start(); writex(0xa0);


 


   clock(); writex(address);


 


   clock(); writex(info);


 


   clock(); stop();


 


   EA=1;


 


   delay1(50);


 


}


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条