资料
  • 资料
  • 专题
新鲜出炉--SPI双机全双工通讯/源代码/仿真
推荐星级:
时间:2019-12-23
大小:18.58KB
阅读数:151
上传用户:rdg1993
查看他发布的资源
下载次数
0
所需E币
4
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
新鲜出炉--SPI 双机全双工通讯/源代码/仿真 采用查询方式,双工通讯时,主机每发送完一个字节,就要拉高SS。否则,从机的发送结束标志不会置位。 //从机 #includeiom16v.h> #includemacros.h> voidmain() { unsignedcharGH=0X45; DDRC=0XFF; PORTC=0X00; //SSPB4 //MOSIPB5 //MISOPB6 //SCKPB7 PORTB=PORTB|0b11110000;//SCKMISOMOSISS使能上拉 DDRB=DDRB0b01001111;//SCKMOSISS置为输入 DDRB=DDRB|0b01000001;//MISO置为输出 //SSPB4 //MOSIPB5 //MISOPB6 //SCKPB7 SPCR=0b01000000;//不用中断,使能SPI,MSB首先发送,SPI置为从机模式, //SCK空闲时为低,低电平采样,4分频 SPSR=0x00; while(1) { SPDR=GH;//向发送缓冲区写数据 while(!(SPSR(1SPIF)));//等待发送结束 PORTC=SPDR;//读取接收到的从机数据,并显示 GH++; } } //主机 #includeiom16v.h> #includemacros.h> //SSPB4 //MOSIPB5 //MISOPB6 //SCKPB7 voidmain() { unsignedintXX; unsignedcharFF,GHJ; CLI(); DDRA=0XFF; DDRC=0XFF; PORTB=PORTB|0b11110000;//SCKMISOMOSISS使能上拉 DDRB=DDRB0b10111111;//MISO置为输入 DDRB=DDRB|0b10110001;//SCKMOSISS置为输出 SPCR=0b01010000;//不用中断,使能SPI,MSB首先发送,SPI置为主机模式, //SCK空闲时为低,低电平采样,4分频 SPSR=0x00; while(1) { PORTB=PORTB0b11101111;//拉低从机SS准备通讯 SPDR=GHJ;//向缓冲区写数据以启动通讯 while(!(SPSR(1SPIF)));//等待发送结束 PORTC=SPDR;//读取接收到的从机数据,并显示 //为观察方便,延时。 for(XX=20000;XX!=0;XX--){} for(XX=20000;XX!=0;XX--){} for(XX=20000;XX!=0;XX--){} PORTB=PORTB|0b00010000;//拉高从机SS以同步数据,否则从机发送结束标志不会置位 GHJ++; } }……
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
PARTNER CONTENT
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书