<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 利用E2PROM寫(xiě)的一個(gè)時(shí)鐘

利用E2PROM寫(xiě)的一個(gè)時(shí)鐘

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏
E2PROM是基于I2C總線(xiàn)的數據存儲器,網(wǎng)上很容易查到I2C總線(xiàn)協(xié)議的相關(guān)資料。

本實(shí)驗主要是實(shí)驗的E2PROM的型號是AD24C02,其存儲容量為2K??芍貜筒翆?xiě)1,000,000次,數據可以保存100年。其引腳圖如下:

本文引用地址:http://dyxdggzs.com/article/201611/321147.htm

其芯片固定的地址高四位為1010,由于此處僅僅使用了一塊,因此A0,A1,A2均接地。此處在讀寫(xiě)E2PROM的程序主要是采用祥哥的思想,加以改進(jìn)后的一個(gè)時(shí)鐘。程序如下:

=================================================================================================
#include
#define uchar unsigned char
#define uint unsigned int
sbit sda=P3^7; //端口定義
sbit scl=P3^6;
int t;
uchar code table[]={
0x3F, //"0" //數碼管顯示字庫
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
void delay()
{ ; ;}
void delay1(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void start() //起始信號
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();

}
void stop()//終止信號
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}

void respons() //應答信號
{
uchar i;
scl=1;
delay();
while((sda==1) && (i<250))i++;//二者如果同時(shí)成立,則等待,如果有一個(gè)不成立則退出。
scl=0;
delay();
}
void init()
{
sda=1;
delay();
scl=1;
delay();

}
void write_byte(uchar dat)//寫(xiě)一個(gè)字節
{
uchar i,temp;
temp=dat;

for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;//將溢出位送走 ,高位送走,溢出位在CY寄存器中
delay();
scl=1;
delay(); //高電平時(shí)數據保持穩定
}
scl=0;
delay();
sda=1;//釋放總線(xiàn),方便讀取應答信號
delay();
}

uchar read_byte() //讀取一個(gè)字節數據
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++) //高位在前
{
scl=1;
delay();
k=(k<<1)|sda;
scl=0;
delay();
}
return k;
}

void write_add(uchar datadd,uchar date)//寫(xiě)存儲器地址和數據
{
start();
write_byte(0xa0);//寫(xiě)芯片地址
respons();
write_byte(datadd);//向第三個(gè)存儲器地址寫(xiě)數據
respons();
write_byte(date);
respons();
stop();

}
uchar read_date(uchar datadd)//讀取存儲器中的數據,參數為存儲器的地址
{
uchar dat;
start();
write_byte(0xa0); //寫(xiě)芯片地址
respons();
write_byte(datadd);//寫(xiě)存儲器地址
respons();
start();
write_byte(0xa1); //再次寫(xiě)芯片地址,改變數據方向
respons();
dat=read_byte();
stop();
return(dat);

}
void display(int shi,int fen,int miao) //顯示時(shí)間
{
int a,b,c,d,e,f;
a=shi/10;
b=shi;
c=fen/10;
d=fen;
e=miao/10;
f=miao;

P2=read_date(a);//讀取相應數字的地址
P1=0xf0;
delay1(1);
P2=read_date(b);
P1=0xf1;
delay1(1);
P2=0x40;
P1=0xf2;
delay1(1);
P2=read_date(c);
P1=0xf3;
delay1(1);
P2=read_date(d);
P1=0xf4;
delay1(1);
P2=0x40;
P1=0xf5;
delay1(1);
P2=read_date(e);
P1=0xf6;
delay1(1);
P2=read_date(f);
P1=0xf7;
delay1(1);

}
void main()
{
int num;
int i;
int shi,fen,miao;
TMOD=0x01;//定時(shí)器0為工作方式1
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
EA=1; //開(kāi)總中斷
ET0=1;//開(kāi)定時(shí)器0中斷
TR0=1;//啟動(dòng)定時(shí)器0
//*******此處運行一次即可*********
init();
for(i=0;i<10;i++)
{
write_add(i,table[i]);//依次寫(xiě)進(jìn)數碼管要顯示的數據 ,存到E2P的前10個(gè)地址中
delay1(50);
}
//******************************
while(1)
{
if(t==20)
{
t=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
}
display(shi,fen,miao);//顯示時(shí)間
}


}

void timer_0() interrupt 1 //定時(shí)器0中斷
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
t++;
}



關(guān)鍵詞: E2PROM時(shí)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>