91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

此程序為C51編寫的24C01-24C16讀寫驅動程序,晶振22.1148,如果是其他的晶振,需要更改其中的兩個延時函數,要保證1MS和5US的延時,在調用其中的write函數后,最好是延時10MS以上,否則容易失敗,我最初就是這個地方延時時是5MS始終失敗,搞了很久,后來把這個地方更改以后就成功了.在其中包括了一個PROTEUS仿真電路,運行時首先會寫入一個字節到24C02中,然后讀出取反給P1顯示,顯示結果是01100110B,中間間隔2個LED亮,2個不亮.

資源截圖

代碼片段和文件信息

	??#include?“reg52.h“
#include?“intrins.h“
#define?uchar?unsigned?char
#define?uint?unsigned?int

sbit?sda=P0^1;//;模擬I2C?數據傳送位
sbit?scl=P0^0;//;模擬I2C?時鐘控制狀態標志

void?delay1(uint?z)//延時為?1ms
{?
unsigned?char?abc;
for(c=0;c ????for(b=80;b>0;b--)
????????for(a=10;a>0;a--);
}?

void?delay()//5us延時
{
????unsigned?char?a;
????for(a=3;a>0;a--);
}

void?star()//開始
{
sda=1;
delay();//5us延時
scl=1;
delay();//5us延時
sda=0;
delay();//5us延時

}

void?stop()//停止
{
sda=0;
delay();//5us延時
scl=1;
delay();//5us延時
sda=1;
delay();//5us延時

}

void?ack()//應答
{?uchar?z=0;
while((sda==1)&&(z<50))z++;//條件判斷,?sda=1,則沒有應答。如果沒有應答則延時:z<50,z++;后返回
scl=0;
delay();//5us延時
}

///寫一個數據函數
//器件寫地址?slave_write_address
//字節地址?byte_address
//待寫入數據?data_data
void?write(uchar?slave_write_addressuchar?byte_addressuchar?data_data)//寫一個數據
{
uchar?temptemp1iii;

star();//開始

for(ii=0;ii<3;ii++)//根據?24CXX文檔資料,和時序圖,按順序送:器件寫地址,字節地址,數據
{?
if(ii==0)
{
temp=slave_write_address;//送?器件寫地址
temp1=slave_write_address;
}
else?if(ii==1)
{
temp=byte_address;//送?字節地址
temp1=byte_address;
}
else?if(ii==2)
{
temp=data_data;//送?數據
temp1=data_data;
}


for(i=0;i<8;i++)
{
scl=0;
delay();//5us延時
temp=temp1;
temp=temp&0x80;//?相?與?后,把不相關的位清零

if(temp==0x80)//根據前面?相?與?后,判斷?temp是否等于0x80,是則該位為?1

sda=1;?
else
sda=0;

delay();//5us延時
scl=1;
delay();//5us延時
scl=0;
delay();//5us延時
temp1=temp1<<1;//向左移出1位

}
sda=1;
delay();//5us延時
scl=1;
delay();//5us延時
ack();
}
stop();//停止
}

///讀一個數據函數
//器件寫地址?slave_write_address
//器件讀地址?slave_read_address
//字節地址?byte_address
//讀出的數據?data_data

uchar?read(uchar?slave_write_addressuchar?byte_addressuchar?slave_read_address)//讀一個數據
{
uchar?temptemp1iiixdata_data;

star();//開始

for(ii=0;ii<3;ii++)//根據?24CXX文檔資料,和時序圖,按順序送:器件寫地址,字節地址,器件讀地址
{?
if(ii==0)
{
temp=slave_write_address;//送?器件寫地址
temp1=slave_write_address;
}
else?if(ii==1)
{
temp=byte_address;//送?字節地址
temp1=byte_address;
}
else?if(ii==2)
{?
star();//開始

temp=slave_read_address;//送?器件讀地址
temp1=slave_read_address;
}

?

for(i=0;i<8;i++)//開始讀數據
{
scl=0;
delay();//5us延時
temp=temp1;
temp=temp&0x80;//?相?與?后,把不相關的位清零

if(temp==0x80)//根據前面?相?與?后,判斷?temp是否等于0x80,是則該位為?1

sda=1;?
else
sda=0;

delay();//5us延時
scl=1;
delay();//5us延時
scl=0;
delay();//5us延時
temp1=temp1<<1;//向左移出1位
}
sda=1;
delay();//5us延時
scl=1;
delay();//5us延時
ack();//應答
}

for(x=0;x<8;x++)
{
data_data=data_data<<1;//向左移入1位

sda=1;
delay();//5us延時
scl=0;
delay();//5us延時
scl=1;
delay();//5us延時

if(sda==1)//判斷?數據線是否是高電平
data_data|=0x01;//把讀到的數據?或?0X01?
//else?
//data_data|=0x00;
}
ack();//應答
stop();//停止
return?data_data;//返回讀到的數據

}

void?main()
{?

write(0xa00xff0x66);//向器件寫一個數據:(0xa0?是器件寫地址;0xff?是字節地址;0x66?是待寫入的數據)

delay1(30);//寫與讀的時間間隔應大于10ms取決于器件?24C02的響應速度

//向器件讀一個數據
//把讀出的數據送?P1口顯示
P1=~read(0xa00xff0xa1);//向器件讀一個數據:(0xa0?是器件寫地址;0xff?是字節地址;0xa1?是器件讀

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????7905??2010-08-13?16:04??24c02-16

?????文件???????3521??2010-08-13?16:04??24c02-16.c

?????文件???????8224??2010-08-13?16:04??24c02-16.OBJ

????.......?????13421??2010-08-13?16:04??24c02-16.uvproj

?????文件???????1041??2010-08-13?16:04??24c02-16.hex

?????文件?????????64??2010-08-13?16:04??24c02-16.lnp

?????文件???????7538??2010-08-13?16:04??24c02-16.LST

?????文件??????12704??2010-08-13?16:04??24c02-16.M51

????.......?????56644??2010-08-13?16:04??24c02-16.uvopt

????.......?????57622??2010-08-11?08:40??24c02-16_uvopt.bak

????.......?????13421??2010-08-10?23:19??24c02-16_uvproj.bak

?????文件??????99723??2010-08-13?16:04??24c64.DSN

?????文件????????885??2010-08-13?16:04??24c64.PWI

?????文件?????????19??2010-08-11?08:40??ExtDll.iex

?????文件??????99700??2010-08-11?08:40??Last?Loaded?24c64.DBK

?????文件????????749??2010-08-13?16:04??STARTUP.OBJ

?????文件???????6376??2009-05-07?14:37??STARTUP.A51

?????文件??????14048??2010-08-13?16:04??STARTUP.LST

?????文件???????1002??2010-08-13?16:04??24c02-16.plg

-----------?---------??----------?-----??----

???????????????404607????????????????????19


評論

共有 條評論