📄 eeprom.txt
字号:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define AddWr 0xa0 /**/
#define AddRd 0xa1 /**/
sbit Sda= P1^7;
sbit Scl= P1^6;
//sbit WP= P3^2;
unsigned char code TAB[24]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x58,0x5e,0x79,0x71,0x73,
0x76,0x79,0x38,0x38,0x3f,0x0c};
unsigned char INT0_ACC;
unsigned char INT1_ACC;
unsigned char INT1_COUNTER;
unsigned char INT1_COUNTER_PRETREAT;
unsigned char CLOCK_COUNTER;
unsigned char PAGEARRAY[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
unsigned char PAGEARRAY_CLOCK[16]={2,0,3,0,0,0,6,7,8,9,10,11,12,13,14,15};
unsigned char PAGEARRAY_DATE[16]={0,6,1,1,1,1,6,7,8,9,10,11,12,13,14,15};
unsigned char PAGEARRAY_ALARM[16]={0,7,3,0,0,0,6,7,8,9,10,11,12,13,14,15};
void mDelay(uchar j)
{
uint i;
for(;j>0;j--)
{
for(i=0;i<125;i--)
{
;
}
}
}
void Timer() interrupt 1 using 1 ///10MS TIMER
{
TL0=0xfd;
TH0=0xd8;
CLOCK_COUNTER=CLOCK_COUNTER+1;
if(CLOCK_COUNTER >= 100)
{
CLOCK_COUNTER=0;
INT1_COUNTER_PRETREAT++;
if(INT1_COUNTER_PRETREAT >= 16)
{
INT1_COUNTER_PRETREAT = 0;
}
}
}
void Display() interrupt 3 using 2 //LED DISPLAY
{
TL1 = 0xf0;
TH1 = 0xf9;
P2 = 0;
P1 = INT1_ACC;
P2 = TAB[PAGEARRAY[INT1_COUNTER%16]];
////////////////////////////////////////////////////////////////////////////////
INT1_ACC = INT1_ACC<<1;
INT1_COUNTER++;
if(INT1_ACC >= 64)
{
INT1_ACC=1;
INT1_COUNTER=INT1_COUNTER_PRETREAT;
}
}
/*·¢?í?eê?ì??t*/
void Start(void) /*?eê?ì??t*/
{
Sda=1;
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Sda=0;
_nop_ ();
_nop_ ();
_nop_ ();
}
void Stop(void) /*í£?1ì??t*/
{
Sda=0;
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Sda=1;
_nop_ ();
_nop_ ();
_nop_ ();
}
void Ack(void) /*ó|′e??*/
{
Sda=0;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=0;
}
void NoAck(void) /*·′?òó|′e??*/
{
Sda=1;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=0;
}
void Send(uchar Data) /*·¢?íêy?Y×ó3ìDò,Data?aòa?ó·¢?íμ?êy?Y*/
{
uchar BitCounter=8; /*??êy????*/
uchar temp; /*?D??±?á?????*/
do
{
temp=Data;
Scl=0;
_nop_ ();
_nop_ ();
_nop_ ();
if((temp&0x80)==0x80)/* è?1?×?????ê?1*/
{
Sda=1;
}
else
{
Sda=0;
}
Scl=1;
temp=Data<<1; /*RLC*/
Data=temp;
BitCounter--;
}while(BitCounter);
Scl=0;
}
uchar Read(void) /*?áò???×??úμ?êy?Y,2¢·μ????×??ú?μ*/
{
uchar temp=0;
uchar temp1=0;
uchar BitCounter=8;
Sda=1;
do
{
Scl=0;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
if(Sda) /*è?1?Sda=1;*/
{
temp=temp|0x01; /*tempμ?×?μí????1*/
}
else
{
temp=temp&0xfe; /*·??òtempμ?×?μí????0*/
}
if(BitCounter-1)
{
temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}while(BitCounter);
return(temp);
}
///////////////////////////BYTE WRITE////////////////////////////////////
void ByteWrite(uchar Data[],uchar Address,uchar Num)
{
uchar i;
uchar *PData;
PData=Data;
for(i=0;i<Num;i++)
{
Start(); /*·¢?í???ˉD?o?*/
Send(0xa0); /*·¢?íSLA+W*/
Ack();
Send(Address+i); /*·¢?íμ??·*/
Ack();
Send(*(PData+i));
Ack();
Stop();
mDelay(20);
}
}
///////////////////////////BYTE WRITE////////////////////////////////////
///////////////////////////PAGE WRITE////////////////////////////////////
void PageWrite(uchar Data[],uchar Address)
{
uchar i;
uchar *PData;
PData=Data;
Start(); /*·¢?í???ˉD?o?*/
Send(0xa0); /*·¢?íSLA+W*/
Ack();
Send(Address); /*·¢?íμ??·*/
Ack();
for(i=0;i<16;i++)
{
Send(*(PData+i));
Ack();
}
Stop();
mDelay(20);
}
///////////////////////////PAGE WRITE////////////////////////////////////
///////////////////////////RANDOM READ////////////////////////////////////
void RandomRead(uchar Data[],uchar Address,uchar Num)
{
uchar i;
uchar *PData;
PData=Data;
for(i=0;i<Num;i++)
{
Start();
Send(0xa0);
Ack();
Send(Address+i);
Ack();
Start();
Send(0xa1);
Ack();
*(PData+i)=Read();
mDelay(20);
Scl=0;
NoAck();
Stop();
}
}
///////////////////////////RANDOM READ////////////////////////////////////
//////////////////////CURRENT ADDRESS READ//////////////////////////////////
void CurrentAddressRead(uchar *pData)
{
uchar *pTemp;
pTemp=pData;
Start();
Send(0xa1);
Ack();
*pTemp=Read();
mDelay(20);
Scl=0;
NoAck();
Stop();
}
//////////////////////CURRENT ADDRESS READ//////////////////////////////////
////////////////////////SEQUENTIAL READ///////////////////////////////////////
void SequentialRead(uchar Data[],uchar Num)
{
uchar i;
uchar *PData;
PData=Data;
Start(); /*·¢?í???ˉD?o?*/
Send(0xa1);
Ack();
for(i=0;i<Num-1;i++)
{
*(PData+i)=Read();
mDelay(20);
Scl=0;
Ack();
}
*(PData+Num-1)=Read();
mDelay(20);
Scl=0;
NoAck();
Stop();
}
/////////////////////////SEQUENTIAL READ////////////////////////////////////
void main()
{
uchar i;
uchar current;
uchar Number[4]={10,11,12,13};
/////////////////////////////TIMER SET//////////////////////////////
TMOD=0x11;
EA=1;
IP=2;
ET1=1;
TR1=1;
ET0=1;
TR0=1;
//WP= 0;
/////////////////////////////A SET//////////////////////////////
INT1_ACC = 1;
INT1_COUNTER = 0;
INT1_COUNTER_PRETREAT = 0;
CLOCK_COUNTER = 0;
/////////////////////////////WRITE//////////////////////////////
//unsigned char PAGEARRAY_CLOCK[16]={2,0,3,0,0,0,6,7,8,9,10,11,12,13,14,15};
//unsigned char PAGEARRAY_DATE[16]={0,6,1,1,1,0,6,7,8,9,10,11,12,13,14,15};
//unsigned char PAGEARRAY_ALARM[16]={0,7,3,0,0,0,6,7,8,9,10,11,12,13,14,15};
//PageWrite(PAGEARRAY_CLOCK, 0);
//mDelay(20);
//PageWrite(PAGEARRAY_DATE, 16);
//mDelay(20);
//PageWrite(PAGEARRAY_ALARM, 32);
//ByteWrite(Number,4,4); /*??3?ê??ˉoóμ?êy?μD′è?EEPROM*/
/////////////////////////////DELAY//////////////////////////////
//mDelay(20);
//Number[0]=0;
//Number[1]=0;
//Number[2]=0;
//Number[3]=0; /*??êy×é?Dμ??μ??μ?£?ò??é?¤?á3?μ?êyê?·??yè·*/
PageWrite(PAGEARRAY, 6);
mDelay(20);
/////////////////////////////CLEAR//////////////////////////////
for(i=0;i<16;i++)
{
PAGEARRAY[i] = 0;
}
/////////////////////////////READ//////////////////////////////
RandomRead(PAGEARRAY,0,16);
//CurrentAddressRead(¤t);
//SequentialRead(PAGEARRAY,16);
/////////////////////////////DELAY//////////////////////////////
mDelay(20);
// P1=4;
//P2=TAB[current];
//P2=TAB[Number[0]];
//P2=TAB[PAGEARRAY[5]];
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -