范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

c51单片机嵌入式开发总结2

  自己学习记录用,有些乱,
  1、IIC,eeprom24c02驱动配置
  本实验是基于EEPROM的24C02驱动配置的编程,主要记录一些编程的重点节点的理解:
  1、IIC驱动配置:精准的时钟配置,计算每一步所需要的指令周期,相加是10us。
  2、IIC的起始信号配置,根据IIC的时序特性配置。
  3、IIC终止信号配置,根据IIC的时序特性配置。
  4、I2cSendByte(unsigned char dat): 通过I2C发送一个字节。在SCL时钟信号高电平期间,保持发送信号SDA保持稳定。
  5、I2cReadByte(),函数功能 : 使用I2c读取一个字节
  6、void At24c02Write(unsigned char addr,unsigned char dat) 函数功能 :向 24c02的一个地址写入一个数据。
  发送写器件地址是根据24C02的电路特性和地址特性获得。24C02是有E0,E1,E2寻址,根据下面两图片可知是8位寻址,因E0、E1、E2引脚接地,而是写所以,R/W位为零。,即发送器件地址位0xa0,同理接收时,接收器件地址为0xa1.
  7、unsigned char At24c02Read(unsigned char addr)函数功能 : 读取24c02的一个地址的一个数据
  2、24C02或者24C16进行字节、页读取、页存取  void  i2cStart(void) //开始时序 { SDA =1; SCL =1; _delay(2);  //延时2μs SDA =0; _delay(2); SCL =0; }
  void  i2cStop(void) //结束时序 { SDA =0; _delay(2); SCL =1; _delay(2); SDA =1; }
  void  i2cAck_MCU(void) //应答时序 { SDA =0; _delay(2); SCL =1; _delay(2); SCL =0; _delay(2); SDA =1; _delay(4); }
  void  i2cNoAck_MCU(void) //非应答时序 { SDA =1; _delay(2); SCL =1; _delay(2); SCL =0; _delay(2); }
  24C02/16存储空间大小
  24C02就是有2Kbit = 2000/8 = 250个字节,24C16就是有16kbit = 2000个字节,24C02一页最多可以写入8个字节,因此可以分成32页,24C16一页最多可以写入16个字节,因此可以分成128页。
  1、字节写操作
  void WriteByte_24LC16B(unsigned char input)
  {
  unsigned char bit_count;
  for(bit_count=8;bit_count!=0;bit_count--)
  {
  _delay(2);
  SDA=(_Bool)(input&0x80);
  _delay(2);
  SCL=1;
  _delay(2);
  SCL=0;
  input=input<<1;
  _delay(2);
  }
  SDA=1;
  SDA_CTRL=1;//这里需要看自己使用的芯片设置SDA的IO口为输入状态,我用的是HT45F67芯片,SDA端口设置为输入状态,用于判断SDA是否接到主机的应答信号
  _delay(2);
  SCL=1;
  _delay(2);
  if(SDA == 1)
  ack = 0;
  else
  ack = 1;
  SCL=0;
  SDA_CTRL=0; //此处根据自己所使用的芯片将SDA所在的Io口设置为输出状态
  }
  void Write_24LC16B(unsigned char Wdata,unsigned int RomAddress)
  {
  unsigned char block;
  WriteDeviceAddress=0B10100000;
  block=RomAddress/256;
  RomAddress=RomAddress%256;
  WriteDeviceAddress=WriteDeviceAddress|(block<<1);
  i2cStart();
  WriteByte_24LC16B(WriteDeviceAddress);
  WriteByte_24LC16B((unsigned char)RomAddress);
  WriteByte_24LC16B(Wdata);
  i2cStop();
  _delay(5500);
  }
  2、字节读操作
  unsigned char ReadByte_24LC16B()
  {
  unsigned char bit_count,rbyte=0;
  SDA=1;
  SDA_CTRL=1;
  _delay(10);
  for(bit_count=8;bit_count!=0;bit_count--)
  {
  rbyte=rbyte<<1;
  _delay(2);
  SCL=1;
  rbyte=rbyte|((unsigned char)(SDA));
  _delay(2);
  SCL=0;
  _delay(2);
  }
  SDA_CTRL=0;
  return(rbyte);
  }
  unsigned char Read_24LC16B(unsigned int RomAddress)
  {
  unsigned char output,block;
  ReadDeviceAddress=0B10100001;
  WriteDeviceAddress=0B10100000;
  block=RomAddress/256;
  RomAddress=RomAddress%256;
  WriteDeviceAddress=WriteDeviceAddress|(block<<1);
  ReadDeviceAddress=ReadDeviceAddress|(block<<1);
  i2cStart();
  WriteByte_24LC16B(WriteDeviceAddress);
  WriteByte_24LC16B((unsigned char)RomAddress);
  i2cStart();
  WriteByte_24LC16B(ReadDeviceAddress);
  output=ReadByte_24LC16B();
  i2cNoAck_MCU();
  i2cStop();
  _delay(2000);
  return(output);
  }
  3、页写操作
  Wdata为输入数组的首地址,RomAddress为需要进行存储的地址,范围在0~2047之间,cnt为一次需要写入的字节个数,建议采用8的倍数的cnt,因为本函数不采用自动分页,不是8的倍数会在超出页写入最多的字节数之后覆盖掉原来的数。
  void WritePage_24LC16B(unsigned char *Wdata,unsigned int RomAddress,unsigned char cnt)
  {
  unsigned char block;
  WriteDeviceAddress=0B10100000;
  block=RomAddress/256;
  RomAddress=RomAddress%256;
  WriteDeviceAddress=WriteDeviceAddress|(block<<1);
  i2cStart();
  WriteByte_24LC16B(WriteDeviceAddress);
  WriteByte_24LC16B((unsigned char)RomAddress);
  while(cnt--)
  {
  WriteByte_24LC16B(*Wdata++);
  }
  i2cStop();
  }
  注意:连续进行多页写操作,需要在WritePage_24LC16B函数后添加150μs以上的延迟,这段时间,24C02内部需要将数据存储到芯片内部。
  例子:
  D_buffer[8] = {1,2,3,4,5,6,7,8};
  WritePage_24LC16B(D_buffer,0,8);
  _delay(150); //延迟150μs以及以上
  WritePage_24LC16B(D_buffer,8,8);
  4、页读操作
  void ReadPage_24LC16B(unsigned char *Rdata,unsigned int RomAddress,unsigned char cnt)
  {
  unsigned char block;
  ReadDeviceAddress=0B10100001;
  WriteDeviceAddress=0B10100000;
  block=RomAddress/256;
  RomAddress=RomAddress%256;
  WriteDeviceAddress=WriteDeviceAddress|(block<<1);
  ReadDeviceAddress=ReadDeviceAddress|(block<<1);
  i2cStart();
  WriteByte_24LC16B(WriteDeviceAddress);
  WriteByte_24LC16B((unsigned char)RomAddress);
  i2cStart();
  WriteByte_24LC16B(ReadDeviceAddress);
  while(cnt>1)
  {
  *Rdata++ = ReadByte_24LC16B();
  cnt--;
  i2cAck_MCU();//发送完读地址后,需要应答一下
  }
  *Rdata = ReadByte_24LC16B();
  i2cNoAck_MCU();//读取最后一个字节需要非应答
  i2cStop();
  _delay(2000);
  }

还在用钥匙开门?小米首款高端全自动智能锁正式发布9月22日,小米全自动智能锁在小米商城小米之家小米有品京东天猫苏宁等平台开启预售,预售期间100元定金抵200元,到手价为1699元。据了解,这是小米推出的首款全自动智能门锁,采用未来手机的形态,三星GalaxyZFold2品鉴会体验作为目前折叠屏手机中的机皇,三星GalaxyZFold25G将要在明天正式开售,而今天我终于在三星旗舰体验店(外滩店)参加三星GalaxyZFold25G上海媒体品鉴会上摸到了真机小米十周年纪念盲盒,每个米兔公仔都代表了一种含义小米十周年纪念盲盒之际还发布了自未来的朋友系列盲盒公仔,同样,公仔们与小米员工米粉一同一往无前。一往无前号是一艘来自未来的星际战舰,战舰上的九位船员身怀绝技各司其责,他们穿梭于星系开学季米家上架多款新品小米米家液晶小黑板众筹价129元又是一年九月,小米也将米家液晶小黑板尺寸升级到20英寸版,大屏开启大智慧,更增加了手写笔双重收纳与纳米胶上墙等设计,完全满足孩子的涂鸦需求,放飞他们的想象力,从小培养艺术天赋,让孩年轻人剃须新体验,小米携手博朗正式发布米家博朗电动剃须刀日前,以卓越品质与出众体验深入人心的博朗携手智能生活品牌米家,推出米家博朗电动剃须刀,用精智美学打造年轻人剃须新体验。米家博朗电动剃须刀将于9月30日在小米商城众筹,众筹价199元小米米家智能浴霸Pro正式发布浴霸现在也可以恒温了9月16日上午10点,小米众筹再上新品米家智能浴霸Pro,延续小米产品一贯的风格和理念,和用户交朋友,让利给用户。这次瞄准了浴霸行业千元以上高端机,把价格打下来的同时,对性能参数做iQOO5Pro评测一个超满分的旗舰手机,到底怎么样性能如赛车,充电同火箭,我觉得这两句话来形容它是最直接的。这就是iQOO5的大哥,iQOO5Pro。到手iQOO5Pro的时间其实不算太久,所以我将这段时间的体验感受和大家简单汇报从苹果发布的新品上,看到了iPhone12的两个特点果不其然,这次苹果秋季新品发布会并没有带来大家非常期待的iPhone12系列,原因目前还不得而知,或许和产能等方面有关,不过从这次发布会上,我们还是看到了苹果的其他新品。发布会这次不爽约,这次,iPhone12系列终于来了第二场苹果秋季新品发布会终于来了,这次可以确定iPhone12系列会是本次发布会的重头戏。就目前的消息得知,iPhone12系列将有四款iPhone12miniiPhone12iP多款王炸新品亮相,realme真我Q2系列正式发布作为主打超高性价比的realmeQ系列,今天终于带来了realme真我Q2系列,该系列共有三款机型真我Q2真我Q2Pro以及真我Q2i,而realme则要用这三款机型在今年双11上iPhone12不耐摔?只有两个解决办法这次iPhone12相比iPhone11在整体的设计上回归了过去直角边的风格,直边的中框相比圆形弧度的中框更为轻薄。不过中框与屏幕玻璃之间的支架也更细了,这样一来虽然保证了整机的一
富德生命人寿郑州中支内控合规管理建设年活动启动为深入贯彻落实国家关于金融工作的决策部署,积极响应中国银保监会关于开展银行业保险业内控合规管理建设年活动的通知精神,富德生命人寿郑州中支于2021年7月2日组织召开内控合规管理建设河南分公司召开2021年上半年消工委会议暨重要时期风险防控会议为进一步加强建党百年风险防控工作,有效防范化解消保及舆情风险,助力公司健康发展,河南分公司于6月16日组织召开2021年上半年消工委会议暨重要时期风险防控会议。分公司总经理室成员各一个都不能少!小海豚计划慰问河南灾区近日,河南地区突遭特大暴雨,引起了洪灾山体滑坡等灾害。灾情发生后,富德生命人寿同全国人民一道,时刻牵挂着受灾地区人民的安危。尤其是小海豚计划公益工程历年来帮扶过的儿童及学校,更是成爱心联动,群防群控郑州市开展绿城使者全城消毒志愿服务行动为保障群众的健康安全,助力全市灾后重建和疫情防控工作,郑州市开展绿城使者小红象健康行全城消毒志愿服务行动,郑州市志愿服务联合会在用好本地资源的风雨逆行者7月20日以来,强降雨侵袭郑州,导致城市生活停摆,生活物资紧缺。洪水无情人有情,团市委积极联系对接美团优选等爱心企业,在郑州市青少年宫打造团市委防汛青年志愿者工作站,爱心捐赠物资搬铭党恩,忆党史,行至半山不停步富德生命人寿第十五届客户节精彩继续随着节气的过渡光影的游走,富德生命人寿欣德修夏第十五届客户节已陪伴客户度过两个月时光。在此期间,低碳环保联盟健康计步走活动于六月底圆满结束,累计吸富德生命人寿学法用法护小家防非处非靠大家郑州中支积极开展防范非法集资宣传活动为进一步引导消费者远离和防范非法集资行为,提高消费者的学法用法意识,切实有效地保护消费者的合法权益。2021年6月份,富德生命人寿郑州中支组织开长城汽车3。0T9AT9HAT超级动力总成将由坦克600首搭落地这是填补中国汽车品牌高阶AT变速器技术空白的一笔,这一笔来自长城。2021年7月2122日,超级动力巅峰品鉴长城汽车3。0T9AT9HAT超级动力总成品鉴会在长城汽车品牌体验中心举悄悄涨价偷偷减配,极氪未红先衰?从万人追捧,到疯狂退定要多久?极氪用实际行动给出了答案3个月。这是国内新能源市场上的一位新晋网红今年3月份注册,4月份品牌发布并开启首款产品ZEEKR001预售,6月中旬就宣布ZE2年5车持续亏损,理想汽车着急回港股?继小鹏汽车之后,理想汽车也回来了。7月26日,港交所披露了理想汽车通过聆讯后的招股书,这意味着理想汽车即将以双重上市方式回归港股。按港交所IPO流程,其或将于8月底正式上市。不满一亏损超数亿产量现个位,广汽菲克改命无望?日子越来越难过。暴跌,依旧是2021年广汽菲克的关键词。根据广汽集团最新统计数据显示,6月份,广汽菲克终端销量仅555辆,下滑了82。4。与此同时,其6月产量竟然只有5辆,去年同期