中科因仑“3+1”工程特种兵精英论坛

标题: 设置产品的使用次数方式一 [打印本页]

作者: 张衍波    时间: 2015-4-20 16:36
标题: 设置产品的使用次数方式一
/********************************************************************
                            汇诚科技
网址: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;         //显示结果

}
}
[attach]2373[/attach]







欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4