保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

SPI总线在51系列单片机系统中的实现


行外围接口芯片(如A/D转换芯片、网络控制器芯片、LED显示驱动芯片等)。对于下降沿输入、上升沿输出的各种串行外围接口芯片,只要改变P1.1的输出电平顺序,即先置P1.1为低电平,之后再次置P1.1为高电平,再置P1.1为低电平……,则这些子程序也同样适用。
  
  3.1MCU串行输入子程序SPIIN
  
  从X25F008的SPISO线上接收8位数据并放入寄存器R0中的应用子程序如下:
  
  
  
  
  SPIIN:SETBP1.1;使P1.1(时钟)输出为1
  
  CLRP1.2;选择从机
  
  MOVR1,#08H;置循环次数
  
  SPIIN1:CLRP1.1;使P1.1(时钟)输出为0
  
  NOP;延时
  
  NOP
  
  MOVC,P1.3;从机输出SPISO送进位C
  
  RLCA;左移至累加器ACC
  
  SETBP1.1;使P1.0(时钟)输出为1
  
  DJNZR1,SPIIN1;判断是否循环8次(8位数据)
  
  MOVR0,A;8位数据送R0
  
  RET
  
  3.2MCU串行输出子程序SPIOUT
  
  将MCS51单片机中R0寄存器的内容传送到X25F008的SPISI线上的程序如下:
  
  SPIOUT:SETBP1.1;使P1.1(时钟)输出为1
  
  CLRP1.2;选择从机
  
  MOVR1,#08H;置循环次数
  
  MOVA,R0;8位数据送累加器ACC
  
  SPIOUT1:CLRP1.1;使P1.1(时钟)输出为0
  
  NOP;延时
  
  NOP
  
  RLCA;左移至累加器ACC最高位至C
  
  MOVP1.0,C;进位C送从机输入SPISI线上
  
  SETBP1.1;使P1.1(时钟)输出为1
  
  DJNZR1,SPIOUT1;判是否循环8次(8位数据)
  
  RET
  
  3.3MCU串行输入/输出子程序SPIIO
  
  将MCS51单片机R0寄存器的内容传送到X25F008的SPISI中,同时从X25F008的SPISO接收8位数据的程序如下:
  
  SPIIO:SETBP1.1;使P1.1(时钟)输出为1
  
  CLRP1.2;选择从机
  
  MOVR1,#08H;置循环次数
  
  MOVA,R0;8位数据送累加器ACC
  
  SPIIO1:CLRP1.1;使P1.1(时钟)输出为0
  
  NOP;延时
  
  NOP
  
  MOVC,P1.3;从机输出SPISO送进位C
  
  RLCA;左移至累加器ACC最高位至C
  
  MOVP1.0,C;进位C送从机输入
  
  SETBP1.1;使P1.1(时钟)输出为1
  
  DJNZR1,SPIIO1;判断是否循环8次(8位数据)
  
  RET
  
  4结束语
  
  本文介绍了通过SPI总线接口实现数据传输的实现方法,给出了用MCS51单片机汇编语言模拟SPI串行总线的输入、输出,输入/输出以传送8位数据的子程序。实际上,也可以根据SPI串行总线的操作时序特点来在MCS96系列、ATMEL89系列等单片机上实现SPI总线的接口。
  
  
  
  
 

《SPI总线在51系列单片机系统中的实现(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/173192.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。