HC08的MMIIC模块,状态、标识很多但用途不大
- UID
- 121350
- 性别
- 男
|
我用MMIIC就直接用beans来做,很省事,PE网站上还有驱动24XXX的bean下载,看过bean生成的代码很快就弄明白了
[此贴子已经被作者于2006-8-17 13:44:03编辑过] |
|
|
|
|
|
- UID
- 121350
- 性别
- 男
|
beans下载 硬体驱动类: http://www.processorexpert.com/mcHC08ebhw.php 软体算法类: http://www.processorexpert.com/mcHC08ebsw.php 注意:使用24XXX的bean前提条件是设置好MMIIC的bean(有软模拟和硬件MMIIC两种)
license的限制会影响beans许用的总数和功能
[此贴子已经被作者于2006-8-18 13:44:46编辑过] |
|
|
|
|
|
- UID
- 121350
- 性别
- 男
|
用菜单Processor Expert->Update->Update Processor Expert from Package...打开下载的*.PEupd文件,完成更新后,用Bean Selector->Categories标签->CPU Exterinal Devices->Memory->双击EEPROM_I2C_24xxx这个bean加入你的项目进行设置生成代码即可。
我那个生成代码多达300行,这里只贴两个函数供参考:
byte EEPROM_ReadByte(EEPROM_TAddress Addr,TPtrByte Data)
{
if (Addr > 0x01FF){ /* too long (> 1 x 0x0200) */
return(ERR_RANGE);
}
/* CW contains memory code | device address | (part of) word address */
EEPROM_CW = 0x50 | 0x00 | (Addr & 0x0100) >> 8;
CHECK_ERR(IIC_SelectSlave(EEPROM_CW));
CHECK_ERR(IIC_SendChar((byte)Addr)); /* every byte-write begins with address */
CHECK_ERR(IIC_RecvChar(Data));
return(ERR_OK);
}
byte EEPROM_WriteByte(EEPROM_TAddress Addr,byte Data)
{
byte abuff[2];
if (Addr > 0x01FF){ /* too long (> 1 x 0x0200) */
return(ERR_RANGE);
}
/* CW contains memory code | device address | (part of) word address */
EEPROM_CW = 0x50 | 0x00 | (Addr & 0x0100) >> 8;
CHECK_ERR(IIC_SelectSlave(EEPROM_CW));
abuff[0] = (byte)(Addr & 0xFF); /* every byte-write begins with address */
abuff[1] = Data;
CHECK_ERR(IIC_SendBlock(abuff, 2, &EEPROM_Copies)); /* Send address and data to EEPROM */
return(ERR_OK);
}
|
|
|
|
|
|