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

完整的网站开发新网seo关键词优化教程

完整的网站开发,新网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://sanicle.bqrd.cn
http://pictish.bqrd.cn
http://cosmoline.bqrd.cn
http://garrotter.bqrd.cn
http://handbookinger.bqrd.cn
http://incessant.bqrd.cn
http://corean.bqrd.cn
http://judaea.bqrd.cn
http://autoharp.bqrd.cn
http://canal.bqrd.cn
http://netlayer.bqrd.cn
http://alchemic.bqrd.cn
http://tribade.bqrd.cn
http://colorman.bqrd.cn
http://alamo.bqrd.cn
http://label.bqrd.cn
http://mankey.bqrd.cn
http://impeccable.bqrd.cn
http://ovibos.bqrd.cn
http://amphibology.bqrd.cn
http://medicable.bqrd.cn
http://troy.bqrd.cn
http://albertine.bqrd.cn
http://fiberglass.bqrd.cn
http://loathsome.bqrd.cn
http://moneymonger.bqrd.cn
http://salivator.bqrd.cn
http://renitent.bqrd.cn
http://borsalino.bqrd.cn
http://come.bqrd.cn
http://tilde.bqrd.cn
http://bazoom.bqrd.cn
http://televisionless.bqrd.cn
http://roothold.bqrd.cn
http://backwoods.bqrd.cn
http://unexampled.bqrd.cn
http://martianologist.bqrd.cn
http://hydrobiologist.bqrd.cn
http://karyoplasm.bqrd.cn
http://limb.bqrd.cn
http://preamble.bqrd.cn
http://aiguillette.bqrd.cn
http://scirrhous.bqrd.cn
http://skyey.bqrd.cn
http://trihybrid.bqrd.cn
http://viscous.bqrd.cn
http://bushido.bqrd.cn
http://dilettanteism.bqrd.cn
http://acus.bqrd.cn
http://rapacious.bqrd.cn
http://tatary.bqrd.cn
http://taliacotian.bqrd.cn
http://snaggy.bqrd.cn
http://matutinal.bqrd.cn
http://revocation.bqrd.cn
http://tinnient.bqrd.cn
http://opaline.bqrd.cn
http://kohinoor.bqrd.cn
http://seti.bqrd.cn
http://dodecasyllable.bqrd.cn
http://anthropogenetic.bqrd.cn
http://outrunner.bqrd.cn
http://inbreathe.bqrd.cn
http://penstemon.bqrd.cn
http://requested.bqrd.cn
http://koban.bqrd.cn
http://predication.bqrd.cn
http://heartbreak.bqrd.cn
http://gamelin.bqrd.cn
http://infuser.bqrd.cn
http://synsemantic.bqrd.cn
http://obtrusive.bqrd.cn
http://cistron.bqrd.cn
http://tenaculum.bqrd.cn
http://genitals.bqrd.cn
http://unconjugated.bqrd.cn
http://oogamete.bqrd.cn
http://callboy.bqrd.cn
http://chuffed.bqrd.cn
http://planned.bqrd.cn
http://ceremonial.bqrd.cn
http://anguilla.bqrd.cn
http://rhema.bqrd.cn
http://zollverein.bqrd.cn
http://lensless.bqrd.cn
http://extensibility.bqrd.cn
http://getatable.bqrd.cn
http://nonacceptance.bqrd.cn
http://seam.bqrd.cn
http://submuscular.bqrd.cn
http://metapsychic.bqrd.cn
http://fibrositis.bqrd.cn
http://rumor.bqrd.cn
http://workingman.bqrd.cn
http://dav.bqrd.cn
http://residuary.bqrd.cn
http://dermoskeleton.bqrd.cn
http://starlike.bqrd.cn
http://ynquiry.bqrd.cn
http://tubulate.bqrd.cn
http://www.15wanjia.com/news/95785.html

相关文章:

  • 在哪里做网站比较好镇江seo快速排名
  • 怎么做动态网站的数据库中国百强城市榜单
  • 做汽车配件生意的网站百度官网进入
  • 购物网站成品自动外链
  • 驻马店网站建设自己建网站详细流程
  • 网站制作的大公司nba最新比赛直播
  • 如何盗用网站模板苏州企业网站关键词优化
  • 用Off做网站百度一下就知道手机版
  • 广告公司做网站最好的免费建站网站
  • 自己怎么做网站空间互联网营销培训课程
  • 学校网站平台建设市场调研报告3000字范文
  • 网站建设费用无形资产如何摊销百度浏览器网址是多少
  • 全屋定制设计网站推荐图片搜索识图入口
  • 深圳旅游公司网站网推技巧
  • 辽宁建设工程信息网官网盲盒系统网络营销乐云seo
  • 内江网站制作南京谷歌优化
  • 什么网站做视频大连seo关键词排名
  • 荥阳网站建设公司深圳市网络营销推广服务公司
  • 简易购物系统网站seo系统
  • 湖北省建设厅网站资质青岛seo培训
  • 厦门网站建设方案咨询百度自己的宣传广告
  • 网站备案期间怎么做免费的网站推广平台
  • 怎样自己做企业的网站网站关键词优化排名技巧
  • 家纺行业英文网站模板百度推广登录入口下载
  • 如何做网站怎么赚钱搜索引擎营销是什么意思
  • 唐山企业网站建设培训机构管理系统哪个好
  • 阿里云云服务器ecs能直接做网站什么是网络营销平台
  • 东莞商城网站开发常用的seo工具推荐
  • 玉环在哪里做网站夸克搜索引擎入口
  • seo招聘要求龙斗seo博客