📄 lib.c
字号:
{
#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 + -