欢迎来到天天文库
浏览记录
ID:49407979
大小:188.50 KB
页数:14页
时间:2020-03-01
《IIC总线协议-基于at24c64.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、nc总线协议.x/,2、TP3.5澈据端;时钟端DELAY:NOPNOPNOPNOPNOPNOPRET涎时了程序,根据单片机的晶振不同,延时长短略有不同;12MHZ晶抓^C语言:sbitSDA二P3.4;sbitSCL=P3.5;voiddelay(void)〃延时了程序unsignedchari;for(i=0;i<10;i++);}起始信号:时钟线保持高电平期间,数据线电平从高到低的跳变作为IIC总线的起始信号.汇编:IIC_ST:;IIC起始代码LCALLDELAYCLRSCLLCALLDELAYLCALLDELAYSETBSDALCALLDELAYLCALLDELAYSETBSCL3、LCALLDELAYLCALLDELAYCLRSDALCALLDELAYLCALLDELAYCLRSCLLCALLDELAYRETC语言:voidiic_start(void){SCL=0;delay();SDA=1;delay();SCL=1;delayO;SDA=0;delay();SCL=0;delay();}停止信号:时钟线保持高电平期间,数据线电平从低变高.汇编:IIC_SP:LCALLDELAYCLRSCLLCALLDELAYLCALLDELAYCLRSDALCALLDELAYLCALLDELAYSETBSCLLCALLDELAYLCALLDELAYSE4、TBSDALCALLDELAYRETC语言:voidiic_stop(void){delay();SCL=0;delayO;SDA=0;delay();SCL=1deIay();SDA=1;delay();}器件寻址:首先发送一个起始信号,启动发送过程,然后发送它所需要的寻址的从器件的地址.8从位器件地址的高4位固定为1()10,接下来的三位为器件的地址位,最低一位作为读写控制位.1:表示从器件进行读;0:表示对器件进行写.应答信号:I1C总线数据传送时,每成功的传送一个字节数据示,接收器都必须产生一个应答信号.应答的器件在第九个时钟周期时将SDA拉低,表示收到一个5、8位数据.写操作:(字节模式)主器件发送起始信号和从器件地址信息(R/W位清0)给从器件,在从器件送6、川应答信号后,主器件发送两个8位地址字写入从器件的地址指针注器件在收到从器件的应答信号后,再发送数据到到被寻址的从器件存储单元,从器件再次应答,并在主器件产生停止信号后开始内部数据的擦写.汇编:;##############写数据到at24c64-ATW2##############;说明:写一字节数据到“t24c64,失败PSW.5置1;入口参数:A;出口参数:无;井井井井井井料井昔井井井井井井井井井井井井井井井井井井井井井井井井井弁If井井料井井井井井井IIC.7、WB:MOVR2,#8CLRSCLJ4:RLCALCALLDELAYLCALLDELAYMOVSDA,CLCALLDELAYLCALLDELAYSETBSCLLCALLDELAYLCALLDELAYCLRSCLDJNZR2J4SETBSDALCALLDELAYLCALLDELAYSETBSCL;第九个时钟周期LCALLDELAYLCALLDELAYJBSDA,JI;正常情况下,第九个时钟周期收到的SDA应为低CLRSCL;释放总线LCALLDELAYLCALLDELAYCLRPSW.5;接收成功LJMPedwJ1:CLRSCL;释放总线SETBPSW.5;接收失败e8、dw:RETC语言:voidiic_write_byte(unsignedcharw_byte){unsignedchari;SCL=0;for(i=0;i<8;i++){delay();if((w_byte«i)&0x80)SDA=1;elseSDA=0;delay();SCL=1;delay();SCL=0;)SDA=1;delay();SCL=1;〃第九个时钟周期delayO;if(SDA==l)〃正常情况下,第九个时钟周期时,收到的SDA应该为低电平{〃写入出错SCL=0;PSW.5=1;〃出错标志}else{〃写入成功SCL=0;PSW.5=0;〃成功
2、TP3.5澈据端;时钟端DELAY:NOPNOPNOPNOPNOPNOPRET涎时了程序,根据单片机的晶振不同,延时长短略有不同;12MHZ晶抓^C语言:sbitSDA二P3.4;sbitSCL=P3.5;voiddelay(void)〃延时了程序unsignedchari;for(i=0;i<10;i++);}起始信号:时钟线保持高电平期间,数据线电平从高到低的跳变作为IIC总线的起始信号.汇编:IIC_ST:;IIC起始代码LCALLDELAYCLRSCLLCALLDELAYLCALLDELAYSETBSDALCALLDELAYLCALLDELAYSETBSCL
3、LCALLDELAYLCALLDELAYCLRSDALCALLDELAYLCALLDELAYCLRSCLLCALLDELAYRETC语言:voidiic_start(void){SCL=0;delay();SDA=1;delay();SCL=1;delayO;SDA=0;delay();SCL=0;delay();}停止信号:时钟线保持高电平期间,数据线电平从低变高.汇编:IIC_SP:LCALLDELAYCLRSCLLCALLDELAYLCALLDELAYCLRSDALCALLDELAYLCALLDELAYSETBSCLLCALLDELAYLCALLDELAYSE
4、TBSDALCALLDELAYRETC语言:voidiic_stop(void){delay();SCL=0;delayO;SDA=0;delay();SCL=1deIay();SDA=1;delay();}器件寻址:首先发送一个起始信号,启动发送过程,然后发送它所需要的寻址的从器件的地址.8从位器件地址的高4位固定为1()10,接下来的三位为器件的地址位,最低一位作为读写控制位.1:表示从器件进行读;0:表示对器件进行写.应答信号:I1C总线数据传送时,每成功的传送一个字节数据示,接收器都必须产生一个应答信号.应答的器件在第九个时钟周期时将SDA拉低,表示收到一个
5、8位数据.写操作:(字节模式)主器件发送起始信号和从器件地址信息(R/W位清0)给从器件,在从器件送
6、川应答信号后,主器件发送两个8位地址字写入从器件的地址指针注器件在收到从器件的应答信号后,再发送数据到到被寻址的从器件存储单元,从器件再次应答,并在主器件产生停止信号后开始内部数据的擦写.汇编:;##############写数据到at24c64-ATW2##############;说明:写一字节数据到“t24c64,失败PSW.5置1;入口参数:A;出口参数:无;井井井井井井料井昔井井井井井井井井井井井井井井井井井井井井井井井井井弁If井井料井井井井井井IIC.
7、WB:MOVR2,#8CLRSCLJ4:RLCALCALLDELAYLCALLDELAYMOVSDA,CLCALLDELAYLCALLDELAYSETBSCLLCALLDELAYLCALLDELAYCLRSCLDJNZR2J4SETBSDALCALLDELAYLCALLDELAYSETBSCL;第九个时钟周期LCALLDELAYLCALLDELAYJBSDA,JI;正常情况下,第九个时钟周期收到的SDA应为低CLRSCL;释放总线LCALLDELAYLCALLDELAYCLRPSW.5;接收成功LJMPedwJ1:CLRSCL;释放总线SETBPSW.5;接收失败e
8、dw:RETC语言:voidiic_write_byte(unsignedcharw_byte){unsignedchari;SCL=0;for(i=0;i<8;i++){delay();if((w_byte«i)&0x80)SDA=1;elseSDA=0;delay();SCL=1;delay();SCL=0;)SDA=1;delay();SCL=1;〃第九个时钟周期delayO;if(SDA==l)〃正常情况下,第九个时钟周期时,收到的SDA应该为低电平{〃写入出错SCL=0;PSW.5=1;〃出错标志}else{〃写入成功SCL=0;PSW.5=0;〃成功
此文档下载收益归作者所有