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

📄 lib.c

📁 我个人编写的车载dvd上的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
{
#if 0
   unsigned char ret;
        I2CStart();
       I2COut8Bit(addr);
      
        I2COut8Bit(subaddr);
      
      
       
        I2COut8Bit(0x23);
      
        I2CStop();
   #endif
   unsigned char i;
  #if  0 
   PD_SW_I2CClk =  1;
   PD_SW_I2CData = 1;
   Pin_SW_I2CClk =  1;
   Pin_SW_I2CData = 1;
   M_WAIT;
   Pin_SW_I2CData  = 0;
   M_WAIT;
   Pin_SW_I2CClk  = 0;
   M_WAIT;
 #else
   I2CStart();
 #endif
   Input(addr);
   Input(subaddr);
   Input(datas);
 #if  0
   for(i = 0; i< 8;i++)
   	{
   	   if(addr & (0x01 << (7-i)))
   	   	  Pin_SW_I2CData  = 1;
   	   else
   	   	  Pin_SW_I2CData  = 0;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 1;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 0;
   	    M_WAIT;
   	}
  
    Pin_SW_I2CData = 0;
    M_WAIT;
    Pin_SW_I2CClk =  1;
    M_WAIT;
    Pin_SW_I2CClk = 0;
    M_WAIT;

    for(i = 0; i< 8;i++)
   	{
   	   if(subaddr& (0x01 << (7-i)))
   	   	  Pin_SW_I2CData  = 1;
   	   else
   	   	  Pin_SW_I2CData  = 0;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 1;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 0;
   	    M_WAIT;
   	}
 
    Pin_SW_I2CData = 0;
    M_WAIT;
    Pin_SW_I2CClk =  1;
    M_WAIT;
    Pin_SW_I2CClk = 0;
    M_WAIT;

     for(i = 0; i< 8;i++)
   	{
   	   if(datas & (0x01 << (7-i)))
   	   	  Pin_SW_I2CData  = 1;
   	   else
   	   	  Pin_SW_I2CData  = 0;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 1;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 0;
   	    M_WAIT;
   	}
 
    Pin_SW_I2CData = 0;
    M_WAIT;
    Pin_SW_I2CClk =  1;
    M_WAIT;
    Pin_SW_I2CClk = 0;
    M_WAIT;
 #if 0 
  Pin_SW_I2CClk = 0;
  Pin_SW_I2CData =  0;
  M_WAIT;
  Pin_SW_I2CClk = 1;
  M_WAIT;
  Pin_SW_I2CData = 1;
  M_WAIT;
 
  
  M_WAIT;
  #endif
  #endif
  
  I2CStop();
}
unsigned char  EepromByteRead(unsigned char addr,unsigned char subaddr,unsigned char *p)
{
#if  0
     unsigned char ret;
   
    
	I2CStart();
	ret  = I2COut8Bit(addr);
	
	ret  = I2COut8Bit(subaddr);
	I2CStart();
	ret  = I2COut8Bit(addr+1);
	
		*p=I2CIn8Bit();
		
			I2CNAck();
		
	
	I2CStop();
	#else
     unsigned char i;
#if 0	
   PD_SW_I2CClk =  1;
   PD_SW_I2CData = 1;
   Pin_SW_I2CClk =  1;
   Pin_SW_I2CData = 1;
   M_WAIT;
   Pin_SW_I2CData  = 0;
   M_WAIT;
   Pin_SW_I2CClk  = 0;
   M_WAIT;
 #else
  I2CStart();
  Input(addr);
  Input(subaddr);
  I2CStart();
  Input(addr+1);
  *p = Output();
  I2CNAck();
  I2CStop();
 #endif
 #if 0
   for(i = 0; i< 8;i++)
   	{
   	   if(addr & (0x01 << (7-i)))
   	   	  Pin_SW_I2CData  = 1;
   	   else
   	   	  Pin_SW_I2CData  = 0;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 1;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 0;
   	    M_WAIT;
   	}
  
    Pin_SW_I2CData = 0;
    M_WAIT;
    Pin_SW_I2CClk =  1;
    M_WAIT;
    Pin_SW_I2CClk = 0;
    M_WAIT;

    for(i = 0; i< 8;i++)
   	{
   	   if(subaddr& (0x01 << (7-i)))
   	   	  Pin_SW_I2CData  = 1;
   	   else
   	   	  Pin_SW_I2CData  = 0;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 1;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 0;
   	    M_WAIT;
   	}
 
    Pin_SW_I2CData = 0;
    M_WAIT;
    Pin_SW_I2CClk =  1;
    M_WAIT;
    Pin_SW_I2CClk = 0;
    M_WAIT;
    Pin_SW_I2CData  = 1;
    Pin_SW_I2CClk  = 1;
     M_WAIT;
   Pin_SW_I2CData  = 0;
   M_WAIT;
   Pin_SW_I2CClk  = 0;
   M_WAIT;
    for(i = 0; i< 8;i++)
   	{
   	   if((addr+1) & (0x01 << (7-i)))
   	   	  Pin_SW_I2CData  = 1;
   	   else
   	   	  Pin_SW_I2CData  = 0;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 1;
   	    M_WAIT;
   	    Pin_SW_I2CClk = 0;
   	    M_WAIT;
   	}
  
    Pin_SW_I2CData = 0;
    M_WAIT;
    Pin_SW_I2CClk =  1;
    M_WAIT;
    Pin_SW_I2CClk = 0;
    M_WAIT;
    PD_SW_I2CData  = 0;
    Wait10us(10);
   
     for(i = 0; i< 8;i++)
   	{
   	 Pin_SW_I2CClk  = 0;
       Wait10us(10);
       Pin_SW_I2CClk = 1;
   	   if(PinIn_SW_I2CData)
   	   	 *p |= (0x01 << (7 - i));
   	   else 
   	   	  *p &= ~(0x01 << (7 -i));
   	    Wait10us(10);
   	}
 #if 0
    Pin_SW_I2CData = 0;
    M_WAIT;
    Pin_SW_I2CClk =  1;
    M_WAIT;
    Pin_SW_I2CClk = 0;
    M_WAIT;
    #endif
    I2CNAck();
 #if 0 
  Pin_SW_I2CClk = 0;
  Pin_SW_I2CData =  0;
  M_WAIT;
  Pin_SW_I2CClk = 1;
  M_WAIT;
  Pin_SW_I2CData = 1;
  M_WAIT;
 
  
  M_WAIT;
  #endif
  I2CStop();

	#endif
#endif	
}
#endif
#endif
/*********************************************
	Function:		EepromRead
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-11-11- 11:21:29
*********************************************/

void EepromRead(unsigned char address,unsigned char begin,unsigned char length,unsigned char *p)
{
 // unsigned char ret;
	I2CStart();
	 I2COut8Bit(address);
	
	I2COut8Bit(begin);
	I2CStart();
	I2COut8Bit(address+1);
	for(;length>0;length--,p++)
	{
		*p=I2CIn8Bit();
		if(length==1)
			I2CNAck();
		else
			I2CAck();
	}
	I2CStop();

}

/*********************************************
	Function:		EepromWrite
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2005-1-21- 17:47:44
*********************************************/
void  EepromWrite(unsigned char address,unsigned char begin,unsigned char length,unsigned char *p)
{
    #ifndef D_STORE_DATA_IN_EEPROM 
        unsigned char ret;
        I2CStart();
        I2COut8Bit(address);
        I2COut8Bit(begin);

        for(;length>0;length--,p++)
        {
            ret =I2COut8Bit(*p);
            Wait1ms(100);
        }

        I2CStop();
    #else

        I2CStart();
        Input(address);
        Input(begin);
        for(;length >0;length --,p++)
        {   
            Input(*p);
            Wait1ms(500);
        }
        I2CStop();

    #endif
}

//zengdm add.
void WriteToI2c(unsigned char iDeviceAddr,unsigned char iAddr,unsigned char *bData,int len)
{
    unsigned char ret;
    I2CStart();
    I2COut8Bit(iDeviceAddr);
    I2COut8Bit(iAddr);

    for(;len>0;len--,bData++)
    {
        ret =I2COut8Bit(*bData);
        Wait1ms(100);
    }

    I2CStop();

}



/*********************************************
	Function:MaxMinChangeProtect
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:58
*********************************************/
unsigned char MaxMinChangeProtect(unsigned char Num,signed char ChangeVal,unsigned char MaxVal,unsigned char MinVal,unsigned char ProtectState)
{
	signed char TestVal;  
	TestVal=Num+ChangeVal;
	if(TestVal>=(signed char)MinVal && TestVal<=(signed char)MaxVal)
		Num+=ChangeVal;
	else if (TestVal<(signed char)MinVal )
	{
		if(ProtectState==0)
			Num=MaxVal;
		else
			Num=MinVal;
	}
	else
	{
		if(ProtectState==0)
			Num=MinVal;
		else
			Num=MaxVal;
	}

	return(Num);
		
}

/*********************************************
	Function:		GetADValue
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:56
*********************************************/
unsigned char GetADValue(unsigned char input)
{
	/*unsigned char i;
	ADCCSR= (input & 0x0F)|0x20;
	//while ((ADCCSR&0x80)==0);
	for(i=0;(i<100)&&((ADCCSR&0x80)==0);i++)Wait10us(1);
	return(ADCDRH);*/
	unsigned char i;
	ADC_CSR=input & 0x0F;
	ADC_CR1_ADON=1;
	NOP;
	ADC_CR1_ADON=1;
	for(i=0;(i<100)&&((ADC_CSR&0x80)==0);i++)Wait10us(1);
	return(ADC_DRH);
	
}

void CopyString(unsigned char @far *pStr1,unsigned char @far *pStr2)
{
	while(*pStr2)
		*pStr1++=*pStr2++;
}

/*********************************************
	Function:		Wait10us
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:55
*********************************************/
void Wait10us(unsigned char time)
{
	unsigned char i;
	for(;time>0;time--)
	{
		for(i=24;i>0;i--);
	}
}

/*********************************************
	Function:		Wait1ms
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:54
*********************************************/
void Wait1ms(unsigned char time)
{
	for(;time>0;time--)
	{
		Wait10us(100);
	}
}

/*********************************************
	Function:		LibInit
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2006-1-24- 15:40:53
*********************************************/
void LibInit(void)
{

	PD_SW_I2CClk=1;
	PCR1_SW_I2CClk=0;
	PCR2_SW_I2CClk=0;
	Pin_SW_I2CClk=1;

	PD_SW_I2CData=1;
	PCR1_SW_I2CData=0;
	PCR2_SW_I2CData=0;
	Pin_SW_I2CData=1;
#if 0	
	PD_SW2_I2CClk=1;
	PCR1_SW2_I2CClk=0;
	PCR2_SW2_I2CClk=0;
	Pin_SW2_I2CClk=1;

	PD_SW2_I2CData=1;
	PCR1_SW2_I2CData=0;
	PCR2_SW2_I2CData=0;
	Pin_SW2_I2CData=1;

#endif
}

void LibMain(void)
{
//  KeyCode = NOKEY;
}

#ifdef DEBUG_SCI_ENABLE
unsigned char   SCI_Receive()
{
     unsigned char datas;
      M_SCI_IN8BIT(datas);
      	  return datas;
}
void SCI_Val(unsigned char datas)
{
    M_SCI_OUTVAL(datas);
    //M_SCI_OUT8BIT((datas/10%10)+'0');
    M_SCI_LINE_END;
}
void SCI_SendString(unsigned char *pStr1)
{
	unsigned char i,j;
	while(*pStr1)
	{
		M_SCI_OUT8BIT(*pStr1);
		pStr1++;
	}
	M_SCI_OUT8BIT(0x0D);
	M_SCI_OUT8BIT(0x0A);
}

void SCI_SendPromter(unsigned char *promter,unsigned char *datas,unsigned char length)
{
    unsigned char *tmp;
    unsigned char i;
    while(*promter)
    {
        M_SCI_OUT8BIT(*promter);
        promter++;
    }
    M_SCI_OUT8BIT(':');


    for(i  = 0; i < length; i++)
    {
        M_SCI_OUTVAL(datas[i]);
        M_SCI_OUT8BIT(';');
    }
    M_SCI_OUT8BIT(0x0d);
    M_SCI_OUT8BIT(0x0a);
    /*
    for(i  = 0; i < length; i++)
    {

    M_SCI_OUTVAL(datas[i]);
    }
    M_SCI_LINE_END;

    */     
}
#endif

⌨️ 快捷键说明

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