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

[求助]请问freescale网站上有没有关于iic的例程,哪位大哥能帮忙?

我用的是模拟时序的IIC,挺好用。就是Freescale单片机的。
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
程序如下:
void IIC_writebyte(unsigned char record)
{
IBCR_MS_SL = 1; // Set transmit and master mode
IBCR_TX_RX = 1; // And generate start condition
IBDR = slavewrite; // Adress the slave and set up for master transmit
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag
IBDR = slave_RD_address_LSB; // Send word adress
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag
while(IBSR_RXAK); // check for RXAK
IBDR = record;
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag
IBCR_MS_SL = 0; // generate stop signal
}
void IIC_readbyte()
{
unsigned char dummy;
IBCR_MS_SL = 1; // Set transmit and master mode
IBCR_TX_RX = 1; // And generate start condition
IBDR = slavewrite; // Adress the slave and set up for master transmit
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag
while(IBSR_RXAK); // check for RXAK
IBDR = slave_RD_address_LSB; // Send word adress
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag
while(IBSR_RXAK); // check for RXAK
IBCR_RSTA = 1; // set up repeated start
IBDR = SLAVEREAD;
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag
while (IBSR_RXAK); // check for RXAK
IBCR_TX_RX = 0; // set up to receive
RD_data = IBDR; // dummy read
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag
IBCR_TXAK = 1; // acknowledge disable
RD_data = IBDR;
while (!IBSR_IBIF); // wait until IBIF
IBSR_IBIF=1; // clear the interrupt event flag

IBCR_MS_SL = 0; // generate stop signal
dummy = IBDR; // dummy read
}
//****** Init routines *******************
void IIC_init(void){

IBFD = 0x4C; // frequency divider register: Bus = 8MHz => SCL = 91kHz
IBAD = 0x00; // slave address of this module
IBCR = 0x80; // enable IIC module and No interrupts
IBSR_IBAL = 1; // clear the IBAL flag
slave_RD_address_LSB = 0;
}
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
返回列表