导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→大家帮我看看以下i2c程序,为何不可[cpchen]

 *第15250篇: 大家帮我看看以下i2c程序,为何不可

  
楼 主:cpchen 2003年8月6日18:16
 大家帮我看看以下i2c程序,为何不可
#include   <mega128.h>  

// I2C Bus functions
#asm
   .equ __i2c_port=0x12
   .equ __sda_bit=1
   .equ __scl_bit=0
#endasm
#include   <i2c.h>  
#include   <delay.h>  
#include   <stdio.h>  
#define EEPROM_BUS_ADDRESS 0x0ae 


/* 从EEPROM 读一个字节 */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}

/* 向EEPROM 写一个字节 */
void eeprom_write(unsigned char address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();
/* 10 延时等待写操作完成 */
delay_ms(10);
}

main()
{
/* 初始化I2C 总 线 */
i2c_init();
/* 从地址0到127 写入55h */
for(j=0;j  <128;j++)
  eeprom_write(j,0x55);
/* 从地址AAh 读一个字节 */
for(j=0;j  <128;j++)
  Read_EEPROM[j] = eeprom_read(j);
for(j=0;j  <128;j++)
  putchar(Read_EEPROM[j]);
while(1);
}

  
2楼:trueL 2003年8月6日18:32
 [em05]
数据发送后怎么没看到到应


数据发送后怎么没看到到应答信号呢?
  
3楼:guest 2004年9月1日14:15
 1.检查I2C的时序是否正确?起始条件建
1.检查I2C的时序是否正确?起始条件建立时间大于4.7us延时(你的指令周期是。。。)
2。你所用的EEPROM的容量是否小于255个字节,如大于则应先发高字节。
3。还有。。。。
你把你的东东详细的讲一下,我帮你查!

w_lzf@sina.com


>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:[求助]哪位大侠能说说:体温计用的是什么型号的传感器:)

[下一篇主题]:哪位大侠做过LTP1245 打印机的51驱动?