完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
下面是用普通C51实现的I2C基本电平模拟函数和通用函数。
/*电平模拟函数和基本读写函数 voidIIC_Start(void); voidIIC_Stop(void); voidSEND_0(void); voidSEND_1(void); bitCheck_Acknowledge(void); voidWrite_Byte(ucharb)reentrant; bitWrite_N_Bytes(uchar*buffer,ucharn)reentrant; bitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer); ucharRead_Byte(void)reentrant; */ #include #include #include #include“aiic_51.h” ***itSCL=P1^6; ***itSDA=P1^7; voidDELAY(uintt) { while(t!=0) t--; } voidIIC_Start(void) { //启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变 SDA=1; SCL=1; DE LAY(DELAY_TIME); SDA=0; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); } voidIIC_Stop(void) { //终止I2C总线,当SCL为高电平时使SDA产生一个正跳变 SDA=0; SCL=1; DELAY(DELAY_TIME); SDA=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); } voidSEND_0(void) { //发送0,在SCL为高电平时使SDA信号为低 SDA=0; SCL=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); } voidSEND_1(void) { //发送1 ,在SCL为高电平时使SDA信号为高 SDA=1; SCL=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); } bitCheck_Acknowledge(void) { //发送完一个字节后检验设备的应答信号 SDA=1; SCL=1; DELAY(DELAY_TIME/2); F0=SDA; DELAY(DELAY_TIME/2); SCL=0; DELAY(DELAY_TIME); if(F0==1) returnFALSE; returnTRUE; } voidWrite_Byte(ucharb)reentrant { //向IIC总线写一个字节 uchari; for(i=0;i《8;i++) if((b《SEND_1(); else SEND_0(); } bitWrite_N_Bytes(uchar*buffer,ucharn)reentrantp; { //向I2C总线写n个字节 uchari; IIC_Start(); for(i=0;i{ Write_Byte(buffer); if(!Check_Acknowledge()) { IIC_Stop(); return(i==n); } } IIC_Stop(); returnTRUE; } ; ucharRead_Byte(void)reentrant { //从I2C总线读一个字节 ucharb=0,i; for(i=0;i《8;i++) { SDA=1;//释放总线 SCL=1;//接受数据 DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0==1) { b=b《《1; b=b|0x01; } else b=b《《1; } returnb; } bitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer) { //从I2C总线读n个字节 uchari; IIC_Start(); Write_Byte(SlaveAdr);//向总线发送接收器地址 if(!Check_Acknowledge())//等待接收器应答信号 returnFALSE; for(i=0;i{ buffer=Read_Byte(); if(i!=n) SEND_0();//发送应答 else SEND_1();//发送非应答 } IIC_Stop(); ; returnTRUE; } 使用上述代码,你可以在51上用P1口模拟I2C |
|
|
|
只有小组成员才能发言,加入小组>>
12180 浏览 2 评论
4499 浏览 3 评论
3750 浏览 5 评论
9754 浏览 47 评论
4592 浏览 9 评论
744浏览 0评论
554浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:11 , Processed in 0.724476 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号