/******************************************************************** 
                            汇诚科技 
网址:http://www.ourhc.cn 
产品有售淘宝店:http://shop36330473.taobao.com    
*********************************************************************/ 
#include <reg52.H> 
 
/**************************************************************************** 
                                        24C08 读写驱动程序        开始 
*****************************************************************************/ 
 
signed char sec; //定义数值 
bit write=0; //写24C08 的标志; 
 
/////////24C08 读写驱动程序//////////////////// 
sbit scl=P3^3; // 24c08 SCL 
sbit sda=P3^4; // 24c08 SDA 
 
void Delay(unsigned char x) //延时函数 
{ unsigned int i; 
for(i=0;i<x;i++); 
;} 
 
void flash()//延时 
{ ; ; } 
 
void x24c08_init() //24c08 初始化子程序 
{scl=1; flash(); sda=1;flash();} 
void start() //启动(I方C)总线 
{sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();} 
 
void stop() //停止(I方C)总线 
{sda=0; flash(); scl=1; flash(); sda=1; flash();} 
 
void writex(unsigned char j) //写一个字节 
{  
unsigned char 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(); 
} 
 
unsigned char readx() //读一个字节 
{ 
unsigned char 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() //(I方C)线时钟 
{ 
unsigned char i=0; 
scl=1; flash(); 
while ((sda==1)&&(i<255))i++; 
scl=0; flash(); 
} 
////////从24c02 的地址address 中读取一个字节数据///// 
unsigned char x24c08_read(unsigned char address) 
{ 
unsigned char i; 
start(); writex(0xa0); 
clock(); writex(address); 
clock(); start(); 
writex(0xa1); clock(); 
i=readx(); stop(); 
Delay(10); 
return(i); 
} 
//////向24c02 的address    地址中写入一字节数据info///// 
void x24c08_write(unsigned char address,unsigned char info) 
{ 
//EA=0; 
start(); writex(0xa0); 
clock(); writex(address); 
clock(); writex(info); 
clock(); stop(); 
//EA=1; 
Delay(50); 
} 
/**************************************************************************** 
                                        24C08 读写驱动程序        结束 
*****************************************************************************/ 
 
void main(void) 
{ 
 
x24c08_init(); //初始化24C08 
sec=x24c08_read(2);//读出保存的数据赋于sec 
 
//sec=10;        //设置使用次数 
 
sec--; 
write=0; //清零 
x24c08_write(2,sec); //在24c08 的地址2 中写入数据sec 
 
while(1) 
{ 
if(sec>=1)P2=0XAA;         //显示结果 
 
} 
} 
 
 
 
 |