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

📄 common.c

📁 51开发板调试程序
💻 C
📖 第 1 页 / 共 3 页
字号:
		}

		LEDFlag = 1;
    }
	
	////////////////////////////
	/*
	ucdLCDCounter++;
	if(ucdLCDCounter >= 20)
	{
        ucdLCDCounter = 0;
		//////////////////////////////
		//if(LCDFlag == 1)
		{
		    //P1 = 0x00;
	
	        LCDFlag = 0;
			LEDFlag = 1;
			//lcd_init(); //全黑
	        //lcd_string("ST");
			lcd_wrdata('H');
	
			//hard_10ms(2);
	
			
		}
	}
	*/
	

	/*
    if(sys10mscounter!=0)
	{
	    sys10mscounter--; //定时器10ms
	}
    if(syslimitcounter!=0)
	{
	    syslimitcounter--; //定时器10ms
	}
	*/
}

void    Display()  interrupt 3  using  2      //T1中断 LED DISPLAY 
{
    TL1 = 0xf0;
    TH1 = 0xf9;

	if(LEDFlag == 1)
	{
	    

	    cs = 0;
								
	    P2 = 0;
	    P1 = P1&0xf0;
		P1 = P1|ucidT1Acc;
		P2 = uccTab[ucdLEDDisplayArray[ucidT1Counter%LengthOfLEDDisplayArray]]; 
		//P2 = uccTab[ucdLEDDisplayArray[ucidT1Counter]]; 
		//CurrentTestMode
		if(CurrentTestMode == MANUAL)
		{
			if(1 == ucidT1Acc)
			{
			    P2 = P2|0x80;   //
			}
		}

		if(CurrentTestItem == AD_DA)
		{
			if(4 == ucidT1Acc)
			{
			    P2 = P2|0x80;   //
			}
		}

		//////////////////////////////////////////////////////////
	    ucidT1Acc = ucidT1Acc<<1;
	    ucidT1Counter = ucidT1Counter + 1;
		if(ucidT1Acc >= 16)
		{
		    ucidT1Counter = ucdLEDCounterStart;
	        ucidT1Acc = 1;
	    }

        
		//LCDFlag = 1;
		//cs = 0;
	}
    else
    {
        ;
    }
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/****************Serial*******************/
//////////////////////////////////////////////////////////////////
void  TreatCharToSend(UCHARDATA  ucdCharToSend)
{
    switch(ucdCharToSend)
	{
	    case  0:
		      SBUF = '0';
		      break;
		case  1:
		      SBUF = '1';
		      break;
		case  2:
		      SBUF = '2';
		      break;
		case  3:
		      SBUF = '3';
		      break;
		case  4:
		      SBUF = '4';
		      break;
		case  5:
		      SBUF = '5';
		      break;
		case  6:
		      SBUF = '6';
		      break;
		case  7:
		      SBUF = '7';
		      break;
		case  8:
		      SBUF = '8';
		      break;
		case  9:
		      SBUF = '9';
		      break;
		case  10:
		      SBUF = 'A';
		      break;
		case  11:
		      SBUF = 'b';
		      break;
		case  12:
		      SBUF = 'c';
		      break;
		case  13:
		      SBUF = 'd';
		      break;
		case  14: 
		      SBUF = 'E';
		      break;
		case  15:
		      SBUF = 'F';
		      break;
		case  16:
		      SBUF = ' ';
		      break;
		default  :
		      break;
	}
}
//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////
UCHAR  TreatCharReceived()
{
    UCHAR  ucTreatResult;

    switch(SBUF)
	{
	    case  '0':
		      ucTreatResult = 0;
		      break;
		case  '1':
		      ucTreatResult = 1;
		      break;
		case  '2':
		      ucTreatResult = 2;
		      break;
		case  '3':
		      ucTreatResult = 3;
		      break;
		case  '4':
		      ucTreatResult = 4;
		      break;
		case  '5':
		      ucTreatResult = 5;
		      break;
		case  '6':
		      ucTreatResult = 6;
		      break;
		case  '7':
		      ucTreatResult = 7;        
		      break;
		case  '8':
		      ucTreatResult = 8;
		      break;
		case  '9':
		      ucTreatResult = 9;
		      break;
		case  'A':
		      ucTreatResult = 10;
		      break;
		case  'a':
		      ucTreatResult = 10;
		      break;
		case  'B':
		      ucTreatResult = 11;
		      break;
		case  'b':
		      ucTreatResult = 11;
		      break;
		case  'C':
		      ucTreatResult = 12;
		      break;
		case  'c':
		      ucTreatResult = 12;
		      break;
		case  'D':
		      ucTreatResult = 13;
		      break;
		case  'd':
		      ucTreatResult = 13;
		      break;
		case  'E': 
		      ucTreatResult = 14;
		      break;
		case  'e':
		      ucTreatResult = 14;
		      break;
		case  'F':
		      ucTreatResult = 15;
		      break;
		case  'f':
		      ucTreatResult = 15;
		      break;
		case  ' ':
		      ucTreatResult = 16;
		      break;
		case  '.':         /* 约定的结束标志 */
		      ucTreatResult = 30;
		      break;
		default  :        /* 无法识别时的处理 */
		      ucTreatResult = 18;
		      break;
	}

	return  ucTreatResult;
}
//////////////////////////////////////////////////////////////////

void  SerialPortCommunication(void)  reentrant  interrupt 4  using  3
{    

    if(TI)
	{
        TI=0;

		if(ucidTXCounter < LengthOfLEDDisplayArray)
		{
            TreatCharToSend(ucdLEDDisplayArray[((ucidTXCounter)%LengthOfLEDDisplayArray)]);
			ucidTXCounter++;
		}
		else
		{
		    ucidTXCounter = 0;
		}
        
		
    }
    if(RI)
	{
        RI=0;

		//ucdRXArray[ucidRXCounter] =TreatCharReceived();
		
		if((30 != TreatCharReceived()) && (ucidRXCounter < LengthOfLEDDisplayArray))
		{
			ucdRXArray[ucidRXCounter] = TreatCharReceived();
			//ucdReceiveBuffer[ucdRXCounter] = SBUF;
			ucidRXCounter++;
		}
		else
		{  
		    if(1 == WriteEEPROMComplete)
			{
			    //WriteEEPROMLength = ucidRXCounter;
			    ucidRXCounter = 0;
	
	            WriteEEPROMFlag = 1;
				WriteEEPROMComplete = 0;
			}
		}
		
		
		//RReceive();  ucidRXCounter

		//ucdReceiveArray[] = SBUF;
        //t=inRxBuf;t++;
        //if(t==RxBuf+LenRxBuf) t=RxBuf;
        //if(t==outRxBuf) return;                 //RxBuf Full
        //*inRxBuf=SBUF;
        //inRxBuf=t;
    }
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/****************EEPROM*******************/
void mDelay(UCHARIDATA j)
{ 
    UCHARIDATA i;

    for(;j>0;j--)
    { 
	    for(i=0;i<125;i--)
        {
		    ;
		}
    }
}

/*发送起始条件*/
void Start(void) /*起始条件*/
{
    Sda=1;
    Scl=1;
    _nop_ ();
    _nop_ ();
    _nop_ ();
    Sda=0;
    _nop_ ();
    _nop_ ();
    _nop_ ();
}

void Stop(void) /*停止条件*/
{
    Sda=0;
    Scl=1;
    _nop_ ();
    _nop_ ();
    _nop_ ();
    Sda=1;
    _nop_ ();
    _nop_ ();
    _nop_ ();
}

void Ack(void) /*应答位*/
{
    Sda=0;
    _nop_ ();
    _nop_ ();
    _nop_ ();
    Scl=1;
    _nop_ ();
    _nop_ ();
    _nop_ ();
    Scl=0;
}

void NoAck(void) /*反向应答位*/
{
    Sda=1;
    _nop_ ();
    _nop_ ();
    _nop_ ();
    Scl=1;
    _nop_ ();
    _nop_ ();
    _nop_ ();
    Scl=0;
}

void Send(UCHARIDATA Data) /*发送数据子程序,Data为要求发送的数据*/
{
    UCHARIDATA BitCounter=8; /*位数控制*/
    UCHARIDATA temp; /*中间变量控制*/

	do
    {
        temp=Data;
        Scl=0;
        _nop_ ();
        _nop_ ();
        _nop_ ();

        if((temp&0x80)==0x80)/* 如果最高位是1*/
		{
            Sda=1;
	    }
        else
		{
            Sda=0;
		}

        Scl=1;
        temp=Data<<1; /*RLC*/
        Data=temp;
        BitCounter--;
    }while(BitCounter);

    Scl=0;
}


UCHAR Read(void) /*读一个字节的数据,并返回该字节值*/
{
    UCHARIDATA temp=0;
    UCHARIDATA temp1=0;
    UCHARIDATA BitCounter=8;

    Sda=1;
    do
	{
        Scl=0;
        _nop_ ();
        _nop_ ();                                                                                                
        _nop_ ();
        Scl=1;
        _nop_ ();
        _nop_ ();
        _nop_ ();

        if(Sda) /*如果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);
}

void ByteWrite(UCHARIDATA Data[],UCHARIDATA Address,UCHARIDATA Num)
{
    UCHARIDATA i;
    UCHARIDATA *PData;
    PData=Data;

    for(i=0;i<Num;i++)
    {
        Start(); /*发送启动信号*/

        Send(0xa0); /*发送SLA+W*/
        Ack();
        Send(Address+i); /*发送地址*/
        Ack();
        Send(*(PData+i));
        Ack();

        Stop();
        mDelay(20);
    }
}

///////////////////////////PAGE WRITE////////////////////////////////////
void PageWrite(UCHARIDATA Data[],UCHARIDATA Address)
{
    UCHARIDATA i;
    UCHARIDATA *PData;
    PData=Data;

	Start(); /*发送启动信号*/

    Send(0xa0); /*发送SLA+W*/
    Ack();
    Send(Address); /*发送地址*/
    Ack();

    for(i=0;i<6;i++)
    {
        
        Send(*(PData+i));
        Ack();

    }

	Stop();
    mDelay(20);
}
///////////////////////////RandomRead////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -