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

📄 lib_backup2.c

📁 我个人编写的车载dvd上的程序
💻 C
字号:
/*********************************************************
	Project:		ST FST(TDA7540)
	File name:	Lib.c
	Description:	
	Write/Modify:	Perry
	Time:		2005-11-22- 11:07:07
*********************************************************/

#include "public.h"

/*********************************************
	Function:		I2CStart
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-11-11- 12:14:50
*********************************************/

void I2CStart(void)
{
	PD_SW_I2CClk=1;
	PD_SW_I2CData=1;
	Pin_SW_I2CData=1;
	M_WAIT;
	Pin_SW_I2CClk=1;
	M_WAIT;
	Pin_SW_I2CData=0;
	M_WAIT;
	Pin_SW_I2CClk=0;
	M_WAIT;
}

/*********************************************
	Function:		I2CStop
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-11-11- 12:14:54
*********************************************/
void I2CStop(void)
{
	unsigned char i;
	PD_SW_I2CClk=0;
	Pin_SW_I2CClk=1;
	//while(!Pin(Pin_I2CClk, PIN_READ));
	for(i=0;(i<20)&&(!PinIn_SW_I2CClk);i++)Wait10us(1);
	
	PD_SW_I2CClk=1;
	PD_SW_I2CData=1;
	Pin_SW_I2CData=0;
	M_WAIT;
	Pin_SW_I2CClk=1;
	M_WAIT;
	Pin_SW_I2CData=1;
	M_WAIT;
	Wait1ms(1); 

}


/*********************************************
	Function:		I2COut8Bit
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-11-11- 12:14:59
*********************************************/
unsigned char I2COut8Bit(unsigned char outbyte)
{
	unsigned char i;
	unsigned int j;
	UCharField temp;

	temp.byte=outbyte;
	
	PD_SW_I2CClk=1;
	PD_SW_I2CData=1;
	
#if 1
	for(i=0x80;i>0;i>>=1)
	{
		
		Pin_SW_I2CClk=0;
		M_WAIT;
		if(outbyte&i)
			Pin_SW_I2CData=1;
		else
			Pin_SW_I2CData=0;
		M_WAIT;
		M_WAIT;
		M_WAIT;

		    
		/*if(i==0x80)
		{
			PD_SW_I2CClk=0;
			for(j=0;((j<1) && (!Pin_SW_I2CClk));j++);
			PD_SW_I2CClk=1;
		}*/
		Pin_SW_I2CClk=1;
		
		M_WAIT;
	}
#else
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B7;
		Pin_SW_I2CClk=1;
		M_WAIT;
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B6;
		Pin_SW_I2CClk=1;
		M_WAIT;
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B5;
		Pin_SW_I2CClk=1;
		M_WAIT;
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B4;
		Pin_SW_I2CClk=1;
		M_WAIT;
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B3;
		Pin_SW_I2CClk=1;
		M_WAIT;
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B2;
		Pin_SW_I2CClk=1;
		M_WAIT;
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B1;
		Pin_SW_I2CClk=1;
		M_WAIT;
		Pin_SW_I2CClk=0;
		Pin_SW_I2CData=temp.field.B0;
		Pin_SW_I2CClk=1;
		M_WAIT;
#endif
		
	Pin_SW_I2CClk=0;
	PD_SW_I2CData=0;
	M_WAIT;
	Pin_SW_I2CClk=1;
	M_WAIT;
	if(Pin_SW_I2CData)
		i=0;
	else
		i=1;
	Pin_SW_I2CClk=0;
	M_WAIT;
	return(i);
}

/*********************************************
	Function:		I2CIn8Bit
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-11-11- 12:15:02
*********************************************/
unsigned char I2CIn8Bit(void)
{
	unsigned char i,inbyte=0;

	PD_SW_I2CClk=0;
	Pin_SW_I2CClk=1;
	//while(!Pin(Pin_I2CClk, PIN_READ));
	for(i=0;(i<20)&&(!PinIn_SW_I2CClk);i++)Wait10us(1);
	
	PD_SW_I2CClk=1;
	PD_SW_I2CData=0;
	for(i=0x80;i>0;i>>=1)
	{
		Pin_SW_I2CClk=1;
		M_WAIT;
		if(PinIn_SW_I2CData)
			inbyte|=i;
		Pin_SW_I2CClk=0;
		M_WAIT;
	}
	return (inbyte);
}

/*********************************************
	Function:		I2CAck
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-11-11- 12:15:04
*********************************************/
void I2CAck(void)
{
	PD_SW_I2CClk=1;
	PD_SW_I2CData=1;
	Pin_SW_I2CData=0;
	M_WAIT;
	Pin_SW_I2CClk=1;
	M_WAIT;
	Pin_SW_I2CClk=0;
	PD_SW_I2CData=0;
	M_WAIT;
}

/*********************************************
	Function:		I2CNAck
	Description:	
	Write/Modify:	Perry.Liang
	Time:		2004-11-11- 12:15:05
*********************************************/
void I2CNAck(void)
{
	PD_SW_I2CClk=1;
	PD_SW_I2CData=1;
	Pin_SW_I2CData=1;
	M_WAIT;
	Pin_SW_I2CClk=1;
	M_WAIT;
	Pin_SW_I2CClk=0;
	PD_SW_I2CData=0;
	M_WAIT;
}




/*********************************************
	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
}

/*********************************************
	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;

	


}

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

#ifdef DEBUG_SCI_ENABLE
void SCI_Val(unsigned char datas)
{
    M_SCI_OUTVAL(datas);
    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++)
        	{
        	      if(datas[i] > 9)
        	      	    tmp[i] = datas[i] - 10 + 'A';
        	      else
        	      	    tmp[i] = datas[i] + '0';
        	      M_SCI_OUT8BIT(tmp[i]);
        	}
        M_SCI_OUT8BIT(0x0d);
        M_SCI_OUT8BIT(0x0a);
        
}
#endif

⌨️ 快捷键说明

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