i2c
来源:互联网 发布:手机淘宝彩票 编辑:程序博客网 时间:2024/05/03 20:16
测试代码,有删减
就是
void I2CStart(void)
{
EA=0;
SDA=1; SCL=1; SomeNOP();//INI
SDA=0; SomeNOP(); //START
SCL=0;
}
=================================================
另外给出arm(44b0)测试代码.有删减.以前写这个是花了些时间的,在arm,51,avr都做了移植,比较方便.希望对你有所帮助.
void DoTestAT24CXX(void)
{
AT24CXX g_at24cxx = {0};
FNIIC g_fnIIC = {0};
INT8U nData = 0;
WORD i = 0;
BYTE szBuffer[AT24C256_PAGE_SIZE] = {0};
g_fnIIC.nIICBitSeq = IIC_BITSEQHL;
g_fnIIC.btIIC_LL = 0;
g_fnIIC.btIIC_HH = 1;
g_fnIIC.pfnSetIICSDA = Set_IIC_SDA;
g_fnIIC.pfnGetIICSDA = Get_IIC_SDA;
g_fnIIC.pfnSetIICSCL = Set_IIC_SCL;
g_fnIIC.pfnGetIICSCL = Get_IIC_SCL;
g_at24cxx.nDeviceAddressBitsCount = AT24C256_DEVICE_ADDRESS_BITS_COUNT;
g_at24cxx.nWordAddressBitsCount = AT24C256_WORD_ADDRESS_BITS_COUNT;
g_at24cxx.nBytesPerPage = AT24C256_PAGE_SIZE;
g_at24cxx.pfnIIC = &g_fnIIC;
for (i=0; i<AT24C256_PAGE_SIZE; i++)
szBuffer[i] = i*2+1;
for (i=0; i<AT24C256_PAGE_SIZE; i++)
{
AT24CXX_ByteWrite(&g_at24cxx, AT24_FIRM_DEVICE_ADDRESS, i+1, szBuffer[i]);
DelayMS(Delay1MS, 20); //two byte write should delay 5ms
}
for (i=0; i<AT24C256_PAGE_SIZE; i++)
szBuffer[i] = 0;
for (i=0; i<AT24C256_PAGE_SIZE; i++)
szBuffer[i] = AT24CXX_RandomtRead(&g_at24cxx, AT24_FIRM_DEVICE_ADDRESS, i+1);
SendDataToCOM(szBuffer, AT24C256_PAGE_SIZE);
}
void Set_IIC_SDA(BIT btValue)
{
rPCONF = rPCONF&(~0x0c)|0x04;
btValue &= 0x01;
rPDATF = (rPDATF&(~(1<<IIC_SDA_BIT)))|(btValue<<IIC_SDA_BIT);
DelayMS(Delay1MS, 1);
}
BIT Get_IIC_SDA(void)
{
BIT btValue = 0;
rPCONF = rPCONF&(~0x0c)|0x00;
btValue = (rPDATF>>IIC_SDA_BIT)&0x01;
DelayMS(Delay1MS, 1);
return btValue&0x01;
}
void Set_IIC_SCL(BIT btValue)
{
rPCONF = rPCONF&(~0x03)|0x01;
btValue &= 0x01;
rPDATF = (rPDATF &(~(1<<IIC_SCL_BIT)))|(btValue<<IIC_SCL_BIT);
DelayMS(Delay1MS, 1);
}
BIT Get_IIC_SCL(void)
{
BIT btValue = 0;
rPCONF = rPCONF&(~0x03)|0x00;
btValue = (rPDATF>>IIC_SCL_BIT)&0x01;
DelayMS(Delay1MS, 1);
return btValue&0x01;
}
- I2C
- I2C
- i2c
- I2C
- I2C
- i2c
- i2c
- I2C
- I2C
- I2c
- I2C
- I2C
- I2C
- I2C
- I2C
- i2c
- I2C
- i2c
- 内存屏障
- appserv中php.ini设置导致找不到php_mbstring.dll的问题
- WINXP的添加删除Windows组件里没有"Internet 信息服务(IIS)"的处理办法
- 手指保健操
- 六.Factory 工厂模式
- i2c
- 单片机的C语言中位操作用法
- 用BusyBox制作根文件系统
- 五. Null Object模式
- LINQ 之Top/Bottom、Paging、SqlMethods
- formValidator 例子【来自于网络】
- 在VS2005中添加对FredCK.FCKeditorV2.dll的引用
- 四。Singleton模式与MonoState模式 -- 强制单例
- OSPF协议交换过程