当前位置: 首页 > news >正文

全屏企业网站做宣传的网站

全屏企业网站,做宣传的网站,网站seo关键词排名优化,发表文章的平台有哪些模拟IIC通信 IIC 模拟IIC通信底层接口时间控制(通信速度)功能实现对外接口EEPROM相关 底层接口 device是可以用来增加多个IIC设备管理的 void I2C_SET_SCL(unsigned char device, unsigned char bit_value) {bit_value ? MCU_SCL_H() : MCU_SCL_L(); }void I2C_SET_SDA(uns…

模拟IIC通信

IIC

  • 模拟IIC通信
  • 底层接口
  • 时间控制(通信速度)
  • 功能实现
  • 对外接口
  • EEPROM相关

底层接口

device是可以用来增加多个IIC设备管理的

void I2C_SET_SCL(unsigned char device, unsigned char bit_value)
{bit_value ? MCU_SCL_H() : MCU_SCL_L(); 
}void I2C_SET_SDA(unsigned char device, unsigned char bit_value)
{bit_value ? MCU_SDA_H() : MCU_SDA_L();
}void I2C_SDA_OUT(unsigned char device)
{MCU_SDA_OUT(); 
}void I2C_SDA_IN(unsigned char device)
{MCU_SDA_IN(); 
}bool I2C_SDA_DATA(unsigned char device)
{bool boolDat = 0;boolDat = MCU_SDA_DATA();return boolDat;
}

时间控制(通信速度)

void i2c_delay_us(unsigned int us)
{unsigned int i, j;for (i = 0; i <= us; i++){for (j = 0; j <= 20; j++);}
}

功能实现

/* I2C CODE  */
#define i2c_speed_time1 40
#define i2c_speed_time2 20
#define i2c_speed_time3 20void I2C_Start(unsigned char device)
{I2C_SDA_OUT(device);I2C_SET_SDA(device, 1);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time1);I2C_SET_SDA(device, 0);i2c_delay_us(i2c_speed_time1);I2C_SET_SCL(device, 0);I2C_SET_SCL(device, 0);
}void I2C_Stop(unsigned char device)
{I2C_SDA_OUT(device);I2C_SET_SCL(device, 0);I2C_SET_SDA(device, 0);i2c_delay_us(i2c_speed_time1);I2C_SET_SCL(device, 1);I2C_SET_SDA(device, 1);i2c_delay_us(i2c_speed_time1);
}unsigned char I2C_Wait_Ack(unsigned char device)
{unsigned char ucErrTime = 0;I2C_SDA_IN(device);i2c_delay_us(i2c_speed_time2);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time2);while(I2C_SDA_DATA(device)){ucErrTime++;if(ucErrTime>250){I2C_Stop(device);return 1;}}I2C_SET_SCL(device, 0);return 0;
}void I2C_Ack(unsigned char device)
{I2C_SET_SCL(device, 0);I2C_SDA_OUT(device);I2C_SET_SDA(device, 0);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 0);
}void I2C_NAck(unsigned char device)
{I2C_SET_SCL(device, 0);I2C_SDA_OUT(device);I2C_SET_SDA(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 0);
}void I2C_Send_Byte(unsigned char device, unsigned char txd)
{unsigned char t;I2C_SDA_OUT(device);I2C_SET_SCL(device, 0);for(t=0; t<8; t++){if(txd & 0x80){I2C_SET_SDA(device, 1);}else{I2C_SET_SDA(device, 0);}txd <<= 1;i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 0);i2c_delay_us(i2c_speed_time3);}
}unsigned char I2C_Read_Byte(unsigned char device, unsigned char ack)
{unsigned char i,receive=0;I2C_SDA_IN(device);for(i=0; i<8; i++){I2C_SET_SCL(device, 0);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);receive <<= 1;if(I2C_SDA_DATA(device)){receive++;}i2c_delay_us(i2c_speed_time3);}if(!ack){I2C_NAck(device);}else{I2C_Ack(device);}return receive;
}

对外接口

unsigned char i2c_write_byte(unsigned char addr, unsigned char offset, unsigned char len, unsigned char *pdata, unsigned char device)
{unsigned char i;I2C_Start(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Send_Byte(device, offset);I2C_Wait_Ack(device);for (i=0; i<len-1; i++){I2C_Send_Byte(device, *pdata);I2C_Wait_Ack(device);pdata++;}I2C_Send_Byte(device, *pdata);I2C_Wait_Ack(device);I2C_Stop(device);return 1;
}unsigned char i2c_read_byte(unsigned char addr, unsigned char offset, unsigned char len, unsigned char *pdata,unsigned char ack,unsigned char device)
{unsigned char i;I2C_Start(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Send_Byte(device, offset);I2C_Wait_Ack(device);I2C_Start(device);I2C_Send_Byte(device, addr|0x01);I2C_Wait_Ack(device);for (i=0; i<len-1; i++){*pdata = I2C_Read_Byte(device, ack);pdata++;}*pdata = I2C_Read_Byte(device, 0);I2C_Stop(device);return 1;
}/* 连续读,无应答 */
void I2C_ReadBurst_Ack(unsigned char addr,unsigned char offset,unsigned char len,unsigned char* pdata,unsigned char device)
{i2c_read_byte( addr, offset, len, pdata, 0, device);
}/* 连续读,有应答 */
void I2C_ReadBurst_NAck(unsigned char addr,unsigned char offset,unsigned char len,unsigned char* pdata,unsigned char device)
{i2c_read_byte( addr, offset, len, pdata, 1, device );
}/* 连续写 */
void I2C_WriteBurst(unsigned char addr,unsigned char offset,unsigned char len,unsigned char* pdata,unsigned char device)
{i2c_write_byte( addr, offset, len, pdata, device );
}/* 单个读 */
unsigned char I2C_ReadByte(unsigned char addr, unsigned char offset,unsigned char device)
{unsigned char u8RdData;i2c_read_byte( addr, offset, 1, &u8RdData, 0, device );return u8RdData;
}/* 单个写 */
void I2C_WriteByte(unsigned char addr, unsigned char offset, unsigned char u8Data,unsigned char device)
{i2c_write_byte( addr, offset, 1, &u8Data, device );
}

EEPROM相关

/* EEPROM */
unsigned char EEPROM_ReadByte(unsigned short int addr, unsigned char device)
{unsigned char temp = 0;I2C_Start(device);I2C_Send_Byte(device, 0XA0);I2C_Wait_Ack(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Start(device);I2C_Send_Byte(device, 0XA1);I2C_Wait_Ack(device);temp = I2C_Read_Byte(device, 0);I2C_Stop(device);return temp;
}void EEPROM_WriteByte(unsigned char addr, unsigned char dat, unsigned char device)
{i2c_delay_us(2);I2C_Start(device);I2C_Send_Byte(device, 0XA0);I2C_Wait_Ack(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Send_Byte(device, dat);I2C_Wait_Ack(device);I2C_Stop(device);delay_ms(5); // 延时
}void EEROM_WriteNByte(const unsigned char *pbuf, unsigned char device)
{int iCurNum, iCur8ByteNum ;for (iCurNum = 0; iCurNum < 32; iCurNum ++ ){I2C_Start(device);I2C_Send_Byte(device, 0XA0);I2C_Wait_Ack(device);I2C_Send_Byte(device, iCurNum * 8);I2C_Wait_Ack(device);for (iCur8ByteNum = 0; iCur8ByteNum < 8; iCur8ByteNum ++){I2C_Send_Byte(device, pbuf[iCurNum * 8+iCur8ByteNum]);I2C_Wait_Ack(device);}I2C_Stop(device);}
}
http://www.yayakq.cn/news/998844/

相关文章:

  • 网站用途说明宁波网站设计制作公司
  • 网站设计论坛嵌入式软件开发公司
  • 石家庄网站建设wsjz做灯箱片的设计网站
  • 做物流的网站都有什么建设好的网站怎么发布
  • 四川住房城乡和城乡建设厅网站首页免费创建个人网站申请
  • 网站建设中数据库的维护论文wordpress设置QQ邮箱
  • 网站建设公司html课程教学网站模板
  • 手机网站建设代理商东莞东城社保局电话
  • 模仿网站建设网站建设1
  • 做网站的网站犯法吗专业制作简历的软件
  • 网站模版二次开发跟手工制作区别wp商城
  • 济源市工程建设监理所网站网站管理系统排行榜
  • 定制开发电商网站建设多少钱wordpress 百度熊掌
  • 做二手电脑的网站郑州网站建设冫汉狮网络
  • 网站排名规则学院网站开发网站定位
  • wordpress建网站主页河南省的网页制作
  • 网站制作公司 北京学网站建设 去那里
  • 食品行业网站开发网站开发 占位符
  • 游戏网站开发公司wordpress教程网视频
  • 福田网站建设哪家好网站icp备案认证怎么做
  • 做的网站在不同浏览器大红门做网站
  • 挂机宝做网站怎么做应援网站
  • 做阿里巴巴网站需要哪些资料中小企业的网站建设方案
  • 怎么给网站搭建后台做企业网站要用什么软件
  • 建设一个棋牌网站都得准备什么程建网
  • 保定便宜的网站制作网站seo关键字优化
  • wordpress直接上传视频网站建设网站的基本流程
  • 域名dns解析和网站建设建设企业网站的时间
  • 谷歌有趣的网站柞水县住房和城乡建设局网站
  • 怎么在微信公众号建设微网站湖南商城网站建设