標(biāo)題:
IIC總線24C02.H文件下載
[打印本頁]
作者:
daniu
時間:
2014-12-25 20:37
標(biāo)題:
IIC總線24C02.H文件下載
本帖最后由 daniu 于 2014-12-25 20:51 編輯
24C02.H文件是iic總線存儲器的驅(qū)動 大家可以另存為到硬盤下載到電腦
#ifndef __24C02_H__
#define __24C02_H__
#define uchar unsigned char
#define uint unsigned int
sbit at24c04_scl=P3^2;//時鐘端口
sbit at24c04_sda=P3^3;//數(shù)據(jù)端口
unsigned char temp_1;//定義全局變量存放暫時值
unsigned char biao;
void delayic(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=0;j<255;j++);
}
}
void delayic_m(uchar t)
{
uchar i;
for(i=0;i<t;i++);
}
void sta(void)//啟動模塊
{
at24c04_sda=1;
at24c04_scl=1;
delayic_m(1);
at24c04_sda=0;
delayic_m(1);
at24c04_scl=0;
}
void stop(void)//停止模塊
{
at24c04_sda=0;
at24c04_scl=1;
delayic_m(1);
at24c04_sda=1;
delayic_m(1);
at24c04_scl=0;
}
uchar cack(void)//應(yīng)答檢測模塊,有應(yīng)答返回值是0
{
uchar i;
i=0;
at24c04_sda=1;
at24c04_scl=1;
if(at24c04_sda==1)i=1;
at24c04_scl=0;
return i;
}
void mnack(void)//發(fā)非應(yīng)答模塊
{
at24c04_sda=1;
at24c04_scl=1;
delayic_m(1);
at24c04_scl=0;
at24c04_sda=0;
}
void wrbyt(uchar date_w24)//寫入一個字節(jié)
{
uchar i,j;
j=0x80;
for(i=0;i<8;i++)
{
if((date_w24&j)==0)
{
at24c04_sda=0;
at24c04_scl=1;
delayic_m(1);
at24c04_scl=0;
}
else
{
at24c04_sda=1;
at24c04_scl=1;
delayic_m(1);
at24c04_scl=0;
at24c04_sda=0;
}
j=j>>1;
}
}
uchar rdbyt(void)//讀出一個字節(jié)
{
uchar i,j;
j=0x00;
for(i=0;i<8;i++)
{
at24c04_sda=1;
at24c04_scl=1;
if(at24c04_sda==0)
{
j=j&0xfe;
}
else
{
j=j|0x01;
}
if(i!=7)j=j<<1;
at24c04_scl=0;
}
return j;
}
void WRITE_IIC(uchar addr_ic,uchar data_ic)//寫入數(shù)據(jù)操作
{
for(biao=0;biao<1;biao++)
{
sta();//啟動
wrbyt(0xa0);//寫入,寫指令
if(cack()!=0)
break;
wrbyt(addr_ic);//寫入要寫地址
if(cack()!=0)
break;
wrbyt(data_ic);//寫設(shè)定的值
if(cack()!=0)
break;
stop();
delayic(20);
delayic(20);//間隔
}
}
uchar READ_IIC(uchar addr_ic)//讀取數(shù)據(jù)操作
{
uchar mid_ic;//中間變量
for(biao=0;biao<1;biao++)
{
sta();//啟動
wrbyt(0xa0);//寫入,寫指令,寫指令是0xa0(片選地址線全部接地)
if(cack()!=0)//檢測應(yīng)答,正常情況下返回值都是0,忙時除外
break;
wrbyt(addr_ic);//寫入要讀地址
if(cack()!=0)//檢測應(yīng)答
break;
sta();//單字節(jié)讀取需要重新啟動
wrbyt(0xa1);//寫入,讀命令,讀指令是0xa1(片選地址線全部接地)
if(cack()!=0)//檢測應(yīng)答
break;
mid_ic=rdbyt();//將讀出的數(shù)據(jù)存放在中間變量中
mnack();//發(fā)非應(yīng)答信號
stop();//停止IC讀寫
delayic(20);
delayic(20);//IC的重新啟動讀寫要間隔較長的時間
}
return mid_ic;
}
#endif
復(fù)制代碼
作者:
wrty0
時間:
2016-1-17 05:36
感覺不錯
作者:
紅塵有你
時間:
2016-1-18 15:37
本帖最后由 紅塵有你 于 2016-1-18 15:40 編輯
for(biao=0;biao<1;biao++)求這個biao的含義
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1