微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SPI总线在系统中的应用

SPI总线在系统中的应用

时间:10-15 来源:互联网 点击:

;左移至累加器ACC

  SETB P1.1 ;使P1.0(时钟)输出为1

  DJNZ R1,SPIIN1 ;判断是否循环8次(8位数据)

  MOV R0,A ;8位数据送R0

  RET

  3.2 MCU串行输出子程序SPIOUT

  将MCS51单片机中R0寄存器的内容传送到X25F008的SPISI线上的程序如下:

  SPIOUT:SETB P1.1 ;使P1.1(时钟)输出为1

  CLR P1.2 ;选择从机

  MOV R1,#08H ;置循环次数

  MOV A,R0 ;8位数据送累加器ACC

  SPIOUT1:CLR P1.1 ;使P1.1(时钟)输出为0

  NOP ;延时

  NOP

  RLC A ;左移至累加器ACC最高位至C

  MOV P1.0,C ;进位C送从机输入SPISI线上

  SETB P1.1 ;使P1.1(时钟)输出为1

  DJNZ R1,SPIOUT1 ;判是否循环8次(8位数据)

  RET

  3.3 MCU串行输入/输出子程序SPIIO

  将MCS51单片机R0寄存器的内容传送到X25F008的SPISI中,同时从X25F008的SPISO接收8位数据的程序如下:

  SPIIO:SETB P1.1 ;使P1.1(时钟)输出为1

  CLR P1.2 ;选择从机

  MOV R1,#08H ;置循环次数

  MOV A,R0 ;8位数据送累加器ACC

  SPIIO1:CLR P1.1 ;使P1.1(时钟)输出为0

  NOP ;延时

  NOP

  MOV C,P1.3 ;从机输出SPISO送进位C

  RLC A ;左移至累加器ACC最高位至C

  MOV P1.0,C ;进位C送从机输入

  SETB P1.1 ;使P1.1(时钟)输出为1

  DJNZ R1,SPIIO1 ;判断是否循环8次(8位数据)

  RET

  4 结束语

  本文介绍了通过SPI总线接口实现数据传输的实现方法,给出了用MCS51单片机汇编语言模拟SPI串行总线的输入、输出,输入/输出以传送8位数据的子程序。实际上,也可以根据SPI串行总线的操作时序特点来在MCS96系列、ATMEL89系列等单片机上实现SPI总线的接口。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top