打印
[51单片机]

我用51端口模拟i2c和1-wire总线的程序

[复制链接]
2241|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JasonWangSE|  楼主 | 2013-12-22 17:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
znmcu| | 2013-12-22 19:30 | 只看该作者
i2c和1-wire可以去看我的视频
《振南的单片机基础外设九日通》的i2c at24c64专辑 与 1-wire ds18b20专辑

使用特权

评论回复
板凳
lirunze| | 2013-12-22 19:43 | 只看该作者
这个程序网上应该蛮多的啊

使用特权

评论回复
地板
znmcu| | 2013-12-22 20:44 | 只看该作者
程序蛮多,真正一点点搞透的不多。

使用特权

评论回复
5
znmcu| | 2013-12-22 20:45 | 只看该作者
程序蛮多,真正一点点搞透的不多。

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
dong_abc + 6
6
ayb_ice| | 2013-12-23 14:02 | 只看该作者
LZ的书写风格太少见了

使用特权

评论回复
7
JasonWangSE|  楼主 | 2013-12-23 15:34 | 只看该作者
ayb_ice 发表于 2013-12-23 14:02
LZ的书写风格太少见了

汇编还是C?

使用特权

评论回复
8
3htech| | 2013-12-23 16:26 | 只看该作者
9
3htech| | 2013-12-23 16:43 | 只看该作者
znmcu 发表于 2013-12-22 19:30
i2c和1-wire可以去看我的视频
《振南的单片机基础外设九日通》的i2c at24c64专辑 与 1-wire ds18b20专辑 ...

振南哥,小弟看了您写的EEPROM。忍不住要说两句。

说实话,您写的IIC和AT24C64的读写函数在我看来实现的并不好。

一 先说IIC,
问题1:该IIC操作只是把相关的启动总线、关闭总线写成了函数,然后提供给了用户。您没有一个完整的IIC操作的抽象。以至于我使用不同的IIC芯片,我需要写多个操作。

二 EEPROM
1 编写EEPROM,应该只露出下面4个服务函数即可,读函数、写函数、写允许函数、写禁止函数。而您的程序显然不能满足这一条。
2 移植困难。因为EEPROM是一个系列,其操作是类似的,如果实际工程中,因为容量不够,临时换一片大容量的芯片,那么您的程序就需要大动,才能做出处理,这是不合理的。

三 程序风格
您的程序风格没有4空格缩进和有意义的空行,虽然这不是必须要遵守的条令,但是却清楚明了。

四 小弟说话比较直,希望不要生气。

使用特权

评论回复
10
JasonWangSE|  楼主 | 2013-12-23 17:13 | 只看该作者
本帖最后由 JasonWangSE 于 2013-12-23 17:46 编辑
3htech 发表于 2013-12-23 16:26
https://bbs.21ic.com/icview-370014-1-1.html

恩,不错,您的程序里把E2PROM的代码也实现了。说点我个人的建议,I2C总线的主从数据帧格式里有master-transmit,master-read和combined-format三种格式,所以我觉得BusIIC.c作为一个通用的I2C总线代码,最后一个函数IIC_MCU_Rcv_NoReg_Str应该保留。另外您把atmel的E2PROM的驱动都实现了,非常棒,就是不能同时使用有些可惜。

使用特权

评论回复
11
ayb_ice| | 2013-12-23 17:17 | 只看该作者
JasonWangSE 发表于 2013-12-23 15:34
汇编还是C?

C,
那种对齐方式看着很不舒服

使用特权

评论回复
12
JasonWangSE|  楼主 | 2013-12-23 17:44 | 只看该作者
ayb_ice 发表于 2013-12-23 17:17
C,
那种对齐方式看着很不舒服

噢,明白了,花括号的对齐纯属习惯问题;至于函数参数的对齐嘛,是我的代码写的不好,没有注释,像下面这样写是不是就好一些了:)
char i2c_read
    (
    unsigned char dev_addr,     /* slave address of the device */
    I2C_DATA idata * p_read     /* I2C_DATA structure pointer */
    )

使用特权

评论回复
13
3htech| | 2013-12-24 11:26 | 只看该作者
JasonWangSE 发表于 2013-12-23 17:13
恩,不错,您的程序里把E2PROM的代码也实现了。说点我个人的建议,I2C总线的主从数据帧格式里有master-tra ...

其实在实际应用中,很小会出现挂接不同容量EEPROM的情况,最主要的原因是价格。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

92

帖子

2

粉丝