查看: 1314|回复: 0
打印 上一主题 下一主题

039、设置产品的使用次数按键控制数据自动重载

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-20 16:30:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/********************************************************************
                            汇诚科技
网址: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
sbit P2_0=P2^0;//数据重载按键

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
if(P2_0==0)sec=10;//当按键按下时,数据重载
//sec=10;        //设置使用次数

sec--;
write=0; //清零
x24c08_write(2,sec); //在24c08 的地址2 中写入数据sec

while(1)
{
if(sec>=1)P2=0XAA;         //显示结果

}
}



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入中科因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表