- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
;读取N个字节数据子程序 RDNBYT:MOV R6,NUMBYT ;读入字节数存R6 LCALL START ;调用启动子程序 MOV A,RSLA ;送寻址字节 LCALL WRBYT ;调用发送子程序 LCALL CACK ;调用检查应答子程序 JNB F0,RDNBYT ;判断是否应答,非应答重读 MOV R0,MRD ;送接收存放单元字节首地址 RDN1: LCALL RDBYT ;调用接收子程序 MOV @R0,A ;存入数据 DJNZ R6, ACK ;未读完转ACK LCALL MNACK ;读完发非应答位 LCALL STOP ;调用停止子程序 RET ACK: LCALL MACK ;调用应答子程序 INC R0 SJMP RDN1 8.9.2 SPI串行外设接口 SPI(Serial Peripheral Interface 串行外设接 口)是MOTOROLA公司推出的一种同步串行外设接口,允 许微控制器(MCU)与各种外围设备以串行方式进行数据传输。 SPI使用4条线:串行时钟线SCK、主机输入/从机输出数据线MISO(简称SO)、主机输出/从机输入线MOSI(简称SI)和低电平有效的从机选择线 。 8.9.2.1 SPI总线的组成 SPI总线可在软件的控制下构成各种简单或复杂的系统。 其典型的应用是单主系统,该系统只有一台主机,它控制 数据向一个或多个从机传送,从机通常是外围接口器件。从器 件只能在主机发命令时才能接收或向主机传送数据。其数据传 输格式是高位(MSB)在前,低位((LSB)在后。SPI典型结 构如图12.9所示。 图中可知,单片机与外围器件在时钟线SCK、数据线MOSI和MISO上都是相同端相连。外围扩展多个器件时,SPI无法通过数据线译码选择,所以SPI接口的外围器件都有片选端 。 在组成SPI外围扩展时还应特别注意串行输入/输出芯片的 输入和输出特性: 1.应注意扩展器件串行数据输出端是否有三态控制端。平时未被选中芯片的输出端应处于高阻态。若没有三态控制端,应外加三态门;否则MCU的MISO端只能接1只扩展器件。 2.应注意扩展器件串行数据输入端是否有允许控制端。即应该只有在该器件被允许时,SCK脉冲才把串行数据移入该器件;器件被禁止时,SCK对该器件无影响。若没有允许端,应在外部用门电路对SCK进行控制后,再加到该器件的时钟输入端,或者SPI只连接1只该外围扩展器件。 8.9.2.2 SPI总线的软件模拟 1.SPI总线接口的数据传输 SPI串行扩展系统中作为主器件的单片机,在启动一次传送 时便产生8个时钟传送给接口芯片,作为同步时钟控制数据的输 入与输出。数据的传送格式是高位(MSB)在前,低位(LSB) 在后。如图12.10所示。 数据线上的数据变化以及输入数据时的采样,都取决于SCK。但对于不同的外围芯片,有的可能是SCK上升沿起作用,有的可能是SCK下降沿起作用。 2.SPI总线的软件模拟 对于没有SPI接口的单片机来说,可用软件来进行模拟操作,包括串行时钟、数据输入和数据输出。要注意的是,对于不同的串行接口外围器件,它们的时钟时序有可能不同。 在图12.9中,若MCU为80C51单片机,用80C51的并行I/O端口引脚P1.0模拟MOSI线,P1.1模拟SCK线,P1.2模拟 线,P1.3模拟MISO线。 对于在SCK上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应取图中的串行时钟输出P1.1的初始状态为1,在接口芯片被选通后,置P1.1为0。因此,在单片机输出1位SCK时钟脉冲的同时,使接口芯片内的数据串行移位,从而输出1位数据至80C51的P1.3;再置P1.1为1,使80C51从P1.0输出1位数据至串行接口芯片(此前,将待传送的1位数据先送至P1.0)。到此,模拟一位数据的输入/输出完成。此后再置P1.1为0,模拟下1位的输入/输出,依次循环8次,便可完成1次用模拟SPI总线接口的方法来传输1个字节的操作。 对于在SCK下降沿输入(接收)数据和在上升沿输出(发送)数据的器件,则应取串行时钟输出P1.1的初始状态为0,在接口芯片被选通后,先置P1.1为1,此时,外围接口芯片输出
文档评论(0)