首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > 新鲜出炉--SPI双机全双工通讯/源代码/仿真

新鲜出炉--SPI双机全双工通讯/源代码/仿真

资料介绍
新鲜出炉--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++;

}

}
标签:嵌入式单片机MCU
新鲜出炉--SPI双机全双工通讯/源代码/仿真
本地下载

评论