⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom.txt

📁 51开发板调试程序
💻 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(&current);
	//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 + -