第七章 单片机串行扩展技术课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 MCS-51串行扩展技术 南工大 信息学院 电子系 2009-04-19 主要内容 7-1 SPI 7-2 I2C总线 7-3 单总线 7-1 SPI(串行外设接口)总线 2. 80C51单片机串行扩展SPI外设接口的方法 例1. MCU串行输入子程序SPIIN 从2814的SPISO线上接收1字节数据并放入寄存器R0中。 7-2 I2C总线 7-3 单总线 热电偶技术 例:单片机主机读取存储器从机中某存储单元的内容。 主机先向从机写入该存储单元的地址,再发一个启动位,进行读操作。 结论: 无论总线处于何种方式,起始、终止信号和寻址字节均由主控器发送、被控器接收。 若器件(主控器或被控器)内部有一个数据存储器RAM,其地址是连续的,则地址能自动加/减1。起始地址通常作为数据放在数据传输格式中,即第一个数据字节data 1或DATA 1。 总线上传输的每个字节后必须跟一个应答或非应答信号A/A。 图8-16 模拟I2C总线 6. 51单片机与I2C总线的接口 (1) 单片机与I2C总线的硬件连接 51单片机不带I2C接口,若需控制I2C总线时,可选择两个I/O口线,在软件中分别定义成SCL和SDA,连接接口如图8-16所示。 (2)51单片机对I2C总线的控制程序 原则: 根据I2C总线对SDA和SCL在各个时段的时序要求,写出起始、停止、送应答位、送非应答位、检查应答位、发送一字节、接收一字节、发送N字节数据、接收N字节数据的子程序。 7. I2C总线数据传送软件包 单主系统89C51软件模拟I2C总线时序:主发送和主接收 选用图8-16所示,P1.6和P1.7作为SCL和SDA,晶振6 MHz。 软件包包括: 启动(STA)、停止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)、应答位检查(CACK)、发送一字节数据(WRBYT)、接收一字节数据(RDBYT)、发送N字节数据(WRNBYT)和接收N字节数据(RDNBYT) 9个子程序。 (1)典型信号时序及信号模拟子程序 设单片机的时钟为6 MHz,相应的单周期指令的周期为2μs。 结合指令周期考虑时序的配合,则起始(STA)、终止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)的4个模拟子程序如下: 启动I2C总线子程序STA SETB SDA SETB SCL ;起始条件建立时间大于4.7μs NOP NOP CLR SDA NOP ;起始条件锁定时间大于4μs NOP CLR SCL ;箝住总线,准备发送数据 RET 停止I2C总线子程序STOP CLR SDA SETB SCL ;发送停止条件的时钟信号 NOP ;停止总线时间大于4μs NOP SETB SDA ;停止总线 NOP NOP CLR SDA CLR SCL RET 发送应答位信号子程序MACK CLR SDA SETB SCL NOP ;保持数据时间,即SCL为高大于4μs NOP CLR SCL SETB SDA RET 发送非应答位信号子程序MNACK SETB SDA SETB SCL NOP ;保持数据时间,即SCL为高大于4.0 μs NOP CLR SCL CLR SDA RET 注:如果单片机的主时钟不是6 MHz,应调整NOP指令个数,以满足时序要求。 (2)I2C总线数据传送的模拟子程序 包括: 应答位检查(CACK)、发送一字节(WRBYT)、接收一字节(RBYT)、发送N字节(WRNBYT)和接收N字节(RDNBYT) 5个子程序。 应答位检查子程序CACK (用F0作标志位,当检查到正常应答位后,F0=0;否则F0=1) CACK:SETB SDA ;置SDA为输入方式 SETB SCL ;使SDA上数据有效 CLR F0 ;预设F0=0 MOV C,SDA ;输入SDA引脚状态 JNC CEND ;检查SDA,为0转CEND,且F0=0 SETB F0 ;无正常应答,F0=1 CEND: CLR SCL ;子程序结束,使SCL=0 RET 发送一字节数据子程序WRBYT (将累加器A中数据发送。占用资源: R0,C ) 接收一字节数据子程序RDBYT (从SDA上读取一字节存放在R2或A中。占用资源: R0、R2和C) WRBYT: MOV R0,#08H ;8 位数据长度送R0中 WLP: RLC

文档评论(0)

xiexie2012 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档