IIC器件的读写操作,大家看看这个所谓的“教程”!!
- 格式:docx
- 大小:18.33 KB
- 文档页数:3
IIC器件的读写操作,大家看看这个所谓
的“教程”!!
看看下面的这段,是从***的“教程”里
摘录而来,如果是笔误当然无须吹毛求疵。
这里,无论是“接收”,还是“发
送”,都是“ACK”,其
“ACK”的内容是(SCL_IC_ C ARD=1;
SCL_IC_ C ARD=0;”)就这些。
这样能行吗?
这个“老师”连基本的IIC协议都没弄懂。
这大概不会是笔误吧?
在IIC协议中,不管是主控器件还是从器件,A、向
总线发送一个字节数据后,就要发送一个应答信号
(1bit),告诉接收器件“发送完成”。
B、
接收器件正确接收到一个字节的数据后,也要发送一个
应答信号(1bit),告诉发送器件“接收完成”
如果接收器件接收不正确,则不会发送应答信号。
发
送器件就检测不到“应答信号”,这时就要
从“开始”步骤重来。
这里就有了这么几个环节:“应答信号(1bit,
低位)”、“非应答信号(1bit,高位)、
“检测应答信号”。
读的流程:发送开始信号-发送器件地址(含“写”信息)-检测应答-发送字节地址-检测应答-发送开始信号(含“读”信息)-检测应答-读一个字节-发送应答信号-......读第N字节-发送非应答信号-发送停止信号
写的流程:发送开始信号-发送器件地址(含“写”信息)-检测应答-发送字节地址-检测应答-写一个字节-检测应答信号-......写第N字节-检测应答信号-发送停止信号
上面仅就多字节读写做了简单的描述,单字节的类似。
特别说明:无论哪一个“检测应答信号”不成功,都要返回到“发送开始信号”处,
重新开始。
如果是大容量的,发送地址分高位、低位2次,都要“检测应答”
下面就是这个“教程”的摘录:
*****************(郑重提醒:这是一个不正确的程序,千万不要套用)******************
第十四讲 IC卡(24C01)
在日常生活中,IC卡的使用越来越广泛,而且还有进一
步扩大的趋势。
因此
有必要掌握这方面的知识,下面以24C01 为例,简单地介绍一般使用方法。
#include ;
#include ;
sbit SC L _ IC _ C AR D= P1 ^3 ;
sbit SDA_ IC _ C AR D= P1 ^4 ;
sbit WP_IC_CARD =P1^7;
bdata char com_data;
sbit m o s_bit=com_data^7;
sbit low_bit=com_data^0;
unsigned char data display _buf fer[8];
void d e l a y(i n t n );
unsigned char rd_24c01(char a);
void w r_24c01(char a,char b);
ma in()
{
unsigned char i;
WP_IC_CARD=1;
for (i=0;i。