首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

HC08的MMIIC模块,状态、标识很多但用途不大

我用MMIIC就直接用beans来做,很省事,PE网站上还有驱动24XXX的bean下载,看过bean生成的代码很快就弄明白了

[此贴子已经被作者于2006-8-17 13:44:03编辑过]

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编辑过]

用菜单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);
}
返回列表